Вашият ioctl на /devices/pseudo/[email protected]:poll
устройство (или /dev/pool
) изглежда се обработва от функция на ядрото от файла common/io/devpoll.c (онлайн копие - http://fxr.watson.org/fxr/source/common/io/devpoll.c?v=OPENSOLARIS
)
По-точно, чрез dpioctl
функция:
692 dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp)
zhihuifan, след като проверих проследяването на стека ви, виждам, че програмата ви е изпълнила:
main() -> ... nteveque() -> ioctl()
След това беше извикан инструментът за обработка на сигнали.. Не виждам изпращане на сигнали от dpioctl, така че мисля, че сигналът е изпратен от някаква външна функция (или програма, или от потребител):
--- called from signal handler with signal 0 (SIGEXIT) ---
След това манипулаторът на сигнала в потребителското пространство беше извикан:
sigacthandler -> call_user_handler -> __sighndlr
-> sslsstehdlr
sslsstehdlr
направи много действия и според моите знания и стандартите на POSIX ("2.4 Концепции за сигнали“
от The Open Group Base Specifications, брой 6; IEEE Std 1003.1, издание 2004), манипулаторът на сигнали може да извиква (директно или косвено) само функции, изброени в таблицата
... огромен списък, но няма ptherad_sigmask
тук...