Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ioctl-Prototyp in Solaris Libc

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

aufgelistet sind

... riesige Liste, aber es gibt keine ptherad_sigmask hier...