/devices/pseudo/[email protected]
の ioctl :投票コード> デバイス (または
/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 からのシグナルの送信が見られないので、シグナルは何らかの外部関数 (またはプログラムまたはユーザー) によって送信されたと思います:
--- シグナル ハンドラーからシグナル 0 (SIGEXIT) で呼び出される ---
プレ>次に、ユーザー空間のシグナル ハンドラーが呼び出されました:
sigacthandler -> call_user_handler -> __sighndlr -> sslsstehdlr
プレ>
sslsstehdlr
私の知識と POSIX 標準 ("2.4信号の概念" The Open Group Base Specifications Issue 6 から。 IEEE Std 1003.1, 2004 Edition)、シグナル ハンドラは、表にリストされている関数のみを (直接的または間接的に) 呼び出すことができます... 巨大なリストですが
ptherad_sigmask
はありません ここ...