siginfo.h(3head) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

siginfo.h(3head)

siginfo.h(3HEAD)                    Headers                   siginfo.h(3HEAD)

NAME
       siginfo.h, siginfo - signal generation information

SYNOPSIS
       #include <siginfo.h>

DESCRIPTION
       If  a  process  is catching a signal, it might request information that
       tells why the system generated that  signal.  See  sigaction(2).  If  a
       process  is  monitoring its children, it might receive information that
       tells why a child changed state. See waitid(2).  In  either  case,  the
       system  returns the information in a structure of type siginfo_t, which
       includes the following information:

         int            si_signo        /* signal number */
         int            si_errno        /* error number */
         int            si_code         /* signal code */
         union sigval   si_value        /* signal value */



       si_signo contains the system-generated signal number. For the waitid(2)
       function, si_signo is always SIGCHLD.


       If si_errno is non-zero, it contains an error  number  associated  with
       this signal, as defined in errno.h(3HEAD).


       si_code contains a code identifying the cause of the signal.


       If the value of the si_code member is SI_NOINFO, only the si_signo mem‐
       ber  of  siginfo_t is meaningful, and the value of all other members is
       unspecified.


       The psiginfo(3C) function produces messages on the standard error  out‐
       put describing the values contained in a siginfo_t structure.

   User Signals
       If the value of si_code is less than or equal to 0, then the signal was
       generated  by  a user process (see kill(2), _lwp_kill(2), sigqueue(3C),
       sigsend(2), abort(3C), and raise(3C)) and the  siginfo  structure  con‐
       tains the following additional information:

         pid_t        si_pid      /* sending process ID */
         uid_t        si_uid      /* sending user ID */
         ctid_t       si_ctid     /* sending contract ID */
         zoneid_t     si_zoneid   /* sending zone ID */



       If the signal was generated by a user process, the following values are
       defined for si_code:

       SI_USER       The  implementation sets si_code to SI_USER if the signal
                     was sent by kill(2), sigsend(2), raise(3C), or abort(3C).


       SI_LWP        The signal was sent by _lwp_kill(2).


       SI_QUEUE      The signal was sent by sigqueue(3C).


       SI_TIMER      The signal was generated by the  expiration  of  a  timer
                     created by timer_settime(3C).


       SI_ASYNCIO    The  signal  was  generated by the completion of an asyn‐
                     chronous I/O request.


       SI_MESGQ      The signal was generated by the arrival of a  message  on
                     an  empty  message  queue.  For more information, see the
                     mq_notify(3C) man page.



       si_value contains the application specified value, which is  passed  to
       the  application's  signal-catching  function at the time of the signal
       delivery if si_code is  any  of  SI_QUEUE,  SI_TIMER,  SI_ASYNCHIO,  or
       SI_MESGQ.

   System Signals
       Non-user  generated  signals can arise for a number of reasons. For all
       of these cases, si_code contains a positive value reflecting the reason
       why the system generated the signal:

       tab(); lw(0.97i) lw(1.29i) lw(3.24i) lw(0.97i) lw(1.29i) lw(3.24i) Sig‐
       nalCodeReason  _   SIGILLILL_ILLOPCillegal   opcode   ILL_ILLOPNillegal
       operand   ILL_ILLADRillegal   addressing  mode  ILL_ILLTRPillegal  trap
       ILL_PRVOPCprivileged opcode ILL_PRVREGprivileged register ILL_COPROCco-
       processor error ILL_BADSTKinternal stack error _  SIGFPEFPE_INTDIVinte‐
       ger  divide by zero FPE_INTOVFinteger overflow FPE_FLTDIVfloating point
       divide by zero  FPE_FLTOVFfloating  point  overflow  FPE_FLTUNDfloating
       point  underflow  FPE_FLTRESfloating point inexact result FPE_FLTINVin‐
       valid floating point  operation  FPE_FLTSUBsubscript  out  of  range  _
       SIGSEGVSEGV_MAPERRaddress  not mapped to object SEGV_ACCERRinvalid per‐
       missions for mapped object SEGV_ACCADIADI not enabled for mapped object
       SEGV_ADIDERRADI mismatch exception disrupting SEGV_ADIPERRADI  mismatch
       exception  precise  SEGV_CMIexception  in  mapped  CMI object _ SIGBUS‐
       BUS_ADRALNinvalid address alignment BUS_ADRERRnon-existent physical ad‐
       dress BUS_OBJERRobject specific hardware error  BUS_MEM_UEuser  process
       uncorrectable   memory   error  _  SIGTRAPTRAP_BRKPTprocess  breakpoint
       TRAP_TRACEprocess  trace  trap  _  SIGCHLDCLD_EXITEDchild  has   exited
       CLD_KILLEDchild   was   killed  CLD_DUMPEDchild  terminated  abnormally
       CLD_TRAPPEDtraced  child  has  trapped  CLD_STOPPEDchild  has   stopped
       CLD_CONTINUEDstopped  child  had  continued  _ SIGPOLLPOLL_INdata input
       available POLL_OUToutput buffers available POLL_MSGinput message avail‐
       able  POLL_ERRI/O   error   POLL_PRIhigh   priority   input   available
       POLL_HUPdevice disconnected



       Signals  can  also  be  generated  from the resource control subsystem.
       Where these signals do not already possess kernel-level siginfo  codes,
       the  siginfo  si_code will be filled with SI_RCTL to indicate a kernel-
       generated signal from an established resource control value.

       tab(); cw(0.97i) cw(1.29i) cw(3.24i) lw(0.97i) lw(1.29i) lw(3.24i) Sig‐
       nalCodeReason  _  SIGXRESSI_RCTLresource-control  generated  signal   _
       SIGHUP SIGTERM



       The  uncatchable  signals  SIGSTOP  and  SIGKILL have undefined siginfo
       codes.


       Signals sent with a siginfo code of SI_RCTL contain code-dependent  in‐
       formation for kernel-generated signals:

       tab();  cw(0.97i)  cw(1.29i)  cw(3.24i)  lw(0.97i)  lw(1.29i) lw(3.24i)
       CodeFieldValue _ SI_RCTLhr_time si_entityprocess-model entity  of  con‐
       trol



       In  addition,  the  following signal-dependent information is available
       for kernel-generated signals:

       tab(); cw(0.97i) cw(1.29i) cw(3.24i) lw(0.97i) lw(1.29i) lw(3.24i) Sig‐
       nalFieldValue _ SIGILLcaddr_t si_addraddress of faulting instruction  _
       SIGFPE  _  SIGSEGVcaddr_t  si_addraddress  of faulting memory reference
       SIGBUS _ SIGCHLDpid_t si_pidchild process ID int si_statusexit value or
       signal _ SIGPOLLlong si_bandT{ band event  for  POLL_IN,  POLL_OUT,  or
       POLL_MSG T}



       Signals  sent  with a siginfo code of SEGV_ADIPERR or SEGV_ADIDERR con‐
       tain signal-dependent information for kernel-generated SIGSEGV signals:

       tab(); cw(0.97i)  cw(1.29i)  cw(3.24i)  lw(0.97i)  lw(1.29i)  lw(3.24i)
       CodeFieldValue  _ SEGV_ADIPERRcaddr_t si_addraddress of mismatched mem‐
       ory reference caddr_t si_pcT{ address of instruction that executed mis‐
       matched memory  reference  T}  int  si_adiverscurrent  ADI  version  of
       si_addr  _  SEGV_ADIDERRcaddr_t  si_addrT{ instruction address of first
       store where mismatch was detected T} caddr_t si_pc-1 int si_adivers-1



       See the adi(7) man page.


       Signals sent with a siginfo code of SEGV_CMI  contain  signal-dependent
       information for kernel-generated SIGSEGV signals:

       tab();  cw(0.97i)  cw(1.29i)  cw(3.24i)  lw(0.97i)  lw(1.29i) lw(3.24i)
       CodeFieldValue _ SEGV_CMIint si_trapnoT{ CMI segment id of  the  mapped
       CMI + object that contains si_addr T}



       See the Delivering CMI Exceptions section of the cmi(7) man page.


       Signals  sent  with a siginfo code of ILL_BADSTK contain code-dependent
       information for kernel-generated signals:

       tab(); cw(0.97i)  cw(1.29i)  cw(3.24i)  lw(0.97i)  lw(1.29i)  lw(3.24i)
       CodeFieldValue  _  ILL_BADSTKcaddr_t  si_addrbad  stack pointer caddr_t
       si_pcT{ the address that caused the illegal instruction fault T}


SEE ALSO
       _lwp_kill(2), adi_version_max(2),  kill(2),  setrctl(2),  sigaction(2),
       sigsend(2),    waitid(2),   abort(3C),   aio_read(3C),   mq_notify(3C),
       psiginfo(3C),      raise(3C),      sigqueue(3C),      timer_create(3C),
       timer_settime(3C), signal.h(3HEAD), adi(7), cmi(7)

NOTES
       For  SIGCHLD signals, if si_code is equal to CLD_EXITED, then si_status
       is equal to the exit value of the process; otherwise, it  is  equal  to
       the  signal that caused the process to change state. For some implemen‐
       tations, the exact value of si_addr might not  be  available;  in  that
       case,  si_addr is guaranteed to be on the same page as the faulting in‐
       struction or memory reference.


       For SIGSEGV signals with si_code equal to SEGV_ADIPERR,  the  value  of
       si_adivers  will  be the in-memory version of the mismatched address at
       the time that the kernel fetches it during the processing of the  trap,
       not the version at the time of the trap. If a thread other than the one
       that executed the data access and took the trap changes the version be‐
       tween  the time of the trap and the kernel access, si_adivers will con‐
       tain that new value.


       For SIGSEGV signals with si_code equal to SEGV_ADIPERR, if the  in-mem‐
       ory  version is lost due to a hardware error which cannot be corrected,
       or if the in-memory version is greater than the value returned  by  the
       adi_version_max(2) function, si_adivers will be set to -1.


       A SIGSEGV signal with si_code equal to SEGV_ADIPERR results from an ADI
       exception  that  generates  a precise trap, while a SIGSEGV signal with
       si_code equal to SEGV_ADIDERR results from an ADI exception that gener‐
       ates a disrupting trap. When si_code is equal to SEGV_ADIDERR, si_pc is
       -1 because the PC (program counter) where the disrupting trap  occurred
       is  not related to the store that caused the trap. si_adivers is -1 be‐
       cause the store address that caused the trap is  not  provided  by  the
       hardware.  There  is  no reliable way for software to determine the ad‐
       dress since an unpredictable number of instructions are executed  after
       the  store and before the trap is taken due to the nature of a disrupt‐
       ing trap.

Oracle Solaris 11.4               25 Sep 2025                 siginfo.h(3HEAD)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3