Oracle
 sql >> Database >  >> RDS >> Oracle

prototipo ioctl in solaris libc

Il tuo ioctl su /devices/pseudo/[email protected]:poll dispositivo (o /dev/pool ) sembra essere gestito dalla funzione del kernel dal file common/io/devpoll.c (copia online - http://fxr.watson.org/fxr/source/common/io/devpoll.c?v=OPENSOLARIS )

Più esatto, dal dpioctl funzione:

 692 dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp)

zhihuifan, dopo aver controllato il tuo stacktrace vedo che il tuo programma è stato eseguito:

main() -> ... nteveque() -> ioctl()

Quindi è stato chiamato il gestore del segnale.. Non vedo l'invio di segnali da dpioctl, quindi penso che il segnale sia stato inviato da qualche funzione esterna (o programma o utente):

--- called from signal handler with signal 0 (SIGEXIT) ---

Quindi è stato chiamato il gestore del segnale dello spazio utente:

sigacthandler ->     call_user_handler ->     __sighndlr 
-> sslsstehdlr 

Il sslsstehdlr ha fatto molte azioni e in base alle mie conoscenze e agli standard POSIX ("2.4 Concetti di segnale" da The Open Group Base Specifiche Edizione 6; IEEE Std 1003.1, 2004 Edition), il gestore del segnale può chiamare solo (direttamente o indirettamente) le funzioni elencate nella tabella

... elenco enorme ma non c'è ptherad_sigmask qui...