Ihr ioctl unter /devices/pseudo/[email protected]:poll
Gerät (oder /dev/pool
) scheint von der Kernel-Funktion aus der Datei common/io/devpoll.c (Online-Kopie - http://fxr.watson.org/fxr/source/common/io/devpoll.c?v=OPENSOLARIS
)
Genauer gesagt durch das dpioctl
Funktion:
692 dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp)
zhihuifan, nachdem ich Ihren Stacktrace überprüft habe, sehe ich, dass Ihr Programm Folgendes ausgeführt hat:
main() -> ... nteveque() -> ioctl()
Dann wurde der Signalhandler aufgerufen. Ich sehe kein Senden von Signalen von dpioctl, also denke ich, dass das Signal von einer externen Funktion (oder einem Programm oder vom Benutzer) gesendet wurde:
--- called from signal handler with signal 0 (SIGEXIT) ---
Dann wurde der User-Space-Signal-Handler aufgerufen:
sigacthandler -> call_user_handler -> __sighndlr
-> sslsstehdlr
Der sslsstehdlr
viele Aktionen durchgeführt, und nach meinem Wissen und den POSIX-Standards ("2.4 Signalkonzepte"
aus The Open Group Base Specifications Issue 6; IEEE Std 1003.1, Ausgabe 2004), darf der Signalhandler nur (direkt oder indirekt) Funktionen aufrufen, die in Tabelle
... riesige Liste, aber es gibt keine ptherad_sigmask
hier...