Seu ioctl em
/devices/pseudo/[email protected]:poll
dispositivo (ou /dev/pool
) parece ser tratado pela função do kernel do arquivo common/io/devpoll.c (cópia online - http://fxr.watson.org/fxr/source/common/io/devpoll.c?v=OPENSOLARIS
) Mais exato, pelo
dpioctl
função: 692 dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp)
zhihuifan, depois de verificar seu stacktrace, vejo que seu programa foi executado:
main() -> ... nteveque() -> ioctl()
Então o manipulador de sinais foi chamado.. Não vejo envio de sinais do dpioctl, então acho que o sinal foi enviado por alguma função externa (ou programa ou pelo usuário):
--- called from signal handler with signal 0 (SIGEXIT) ---
Em seguida, o manipulador de sinal do espaço do usuário foi chamado:
sigacthandler -> call_user_handler -> __sighndlr
-> sslsstehdlr
O
sslsstehdlr
fiz muitas ações e de acordo com meu conhecimento e padrões POSIX ("2.4 Conceitos de sinal"
do The Open Group Base Specifications Issue 6; IEEE Std 1003.1, 2004 Edition), o manipulador de sinal só pode chamar (direta ou indiretamente) funções listadas na tabela ... lista enorme, mas não há
ptherad_sigmask
aqui...