Il tuo ioctl su /devices/pseudo/[email protected]:poll
dispositivo (o /dev/pool
) sembra essere gestito dalla funzione del kernel dal file common/io/devpoll.c (copia online - http://fxr.watson.org/fxr/source/common/io/devpoll.c?v=OPENSOLARIS
)
Più esatto, dal dpioctl
funzione:
692 dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp)
zhihuifan, dopo aver controllato il tuo stacktrace vedo che il tuo programma è stato eseguito:
main() -> ... nteveque() -> ioctl()
Quindi è stato chiamato il gestore del segnale.. Non vedo l'invio di segnali da dpioctl, quindi penso che il segnale sia stato inviato da qualche funzione esterna (o programma o utente):
--- called from signal handler with signal 0 (SIGEXIT) ---
Quindi è stato chiamato il gestore del segnale dello spazio utente:
sigacthandler -> call_user_handler -> __sighndlr
-> sslsstehdlr
Il sslsstehdlr
ha fatto molte azioni e in base alle mie conoscenze e agli standard POSIX ("2.4 Concetti di segnale"
da The Open Group Base Specifiche Edizione 6; IEEE Std 1003.1, 2004 Edition), il gestore del segnale può chiamare solo (direttamente o indirettamente) le funzioni elencate nella tabella
... elenco enorme ma non c'è ptherad_sigmask
qui...