Din ioctl på /devices/pseudo/[email protected]:poll
enhed (eller /dev/pool
) ser ud til at blive håndteret af kernefunktion fra common/io/devpoll.c-fil (onlinekopi - http://fxr.watson.org/fxr/source/common/io/devpoll.c?v=OPENSOLARIS
)
Mere præcist ved hjælp af dpioctl
funktion:
692 dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp)
zhihuifan, efter at have tjekket din stacktrace ser jeg, at dit program havde udført:
main() -> ... nteveque() -> ioctl()
Så blev signalhanlderen kaldt.. Jeg ser ingen afsendelse af signaler fra dpioctl, så jeg tror signalet blev sendt af en ekstern funktion (eller program eller af bruger):
--- called from signal handler with signal 0 (SIGEXIT) ---
Derefter blev bruger-space-signalbehandleren kaldt:
sigacthandler -> call_user_handler -> __sighndlr
-> sslsstehdlr
sslsstehdlr
udførte mange handlinger, og ifølge min viden og POSIX-standarder ("2.4 Signalkoncepter"
fra The Open Group Base Specifications Issue 6; IEEE Std 1003.1, 2004 Edition), må signalbehandleren kun kalde (direkte eller indirekte) funktioner anført i tabel
... kæmpe liste, men der er ingen ptherad_sigmask
her...