(linenum→info "unix/slp.c:2238")

glibc/2.7/bits/siginfo.h

    1: /* siginfo_t, sigevent and constants.  Stub version.
    2:    Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
    3:    This file is part of the GNU C Library.
    4: 
    5:    The GNU C Library is free software; you can redistribute it and/or
    6:    modify it under the terms of the GNU Lesser General Public
    7:    License as published by the Free Software Foundation; either
    8:    version 2.1 of the License, or (at your option) any later version.
    9: 
   10:    The GNU C Library is distributed in the hope that it will be useful,
   11:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   12:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13:    Lesser General Public License for more details.
   14: 
   15:    You should have received a copy of the GNU Lesser General Public
   16:    License along with the GNU C Library; if not, write to the Free
   17:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   18:    02111-1307 USA.  */
   19: 
   20: #if !defined _SIGNAL_H && !defined __need_siginfo_t \
   21:     && !defined __need_sigevent_t
   22: # error "Never include this file directly.  Use <signal.h> instead"
   23: #endif
   24: 
   25: #if (!defined __have_sigval_t \
   26:      && (defined _SIGNAL_H || defined __need_siginfo_t \
   27:          || defined __need_sigevent_t))
   28: # define __have_sigval_t 1
   29: 
   30: /* Type for data associated with a signal.  */
   31: typedef union sigval
   32:   {
   33:     int sival_int;
   34:     void *sival_ptr;
   35:   } sigval_t;
   36: #endif
   37: 
   38: #if (!defined __have_siginfo_t \
   39:      && (defined _SIGNAL_H || defined __need_siginfo_t))
   40: # define __have_siginfo_t       1
   41: 
   42: typedef struct siginfo
   43:   {
   44:     int si_signo;               /* Signal number.  */
   45:     int si_errno;               /* If non-zero, an errno value associated with
   46:                                    this signal, as defined in <errno.h>.  */
   47:     int si_code;                /* Signal code.  */
   48:     __pid_t si_pid;             /* Sending process ID.  */
   49:     __uid_t si_uid;             /* Real user ID of sending process.  */
   50:     void *si_addr;              /* Address of faulting instruction.  */
   51:     int si_status;              /* Exit value or signal.  */
   52:     long int si_band;           /* Band event for SIGPOLL.  */
   53:     union sigval si_value;      /* Signal value.  */
   54:   } siginfo_t;
   55: 
   56: 
   57: /* Values for `si_code'.  Positive values are reserved for kernel-generated
   58:    signals.  */
   59: enum
   60: {
   61:   SI_ASYNCIO = -4,              /* Sent by AIO completion.  */
   62: # define SI_ASYNCIO     SI_ASYNCIO
   63:   SI_MESGQ,                     /* Sent by real time mesq state change.  */
   64: # define SI_MESGQ       SI_MESGQ
   65:   SI_TIMER,                     /* Sent by timer expiration.  */
   66: # define SI_TIMER       SI_TIMER
   67:   SI_QUEUE,                     /* Sent by sigqueue.  */
   68: # define SI_QUEUE       SI_QUEUE
   69:   SI_USER                       /* Sent by kill, sigsend, raise.  */
   70: # define SI_USER        SI_USER
   71: };
   72: 
   73: 
   74: /* `si_code' values for SIGILL signal.  */
   75: enum
   76: {
   77:   ILL_ILLOPC = 1,               /* Illegal opcode.  */
   78: # define ILL_ILLOPC     ILL_ILLOPC
   79:   ILL_ILLOPN,                   /* Illegal operand.  */
   80: # define ILL_ILLOPN     ILL_ILLOPN
   81:   ILL_ILLADR,                   /* Illegal addressing mode.  */
   82: # define ILL_ILLADR     ILL_ILLADR
   83:   ILL_ILLTRP,                   /* Illegal trap. */
   84: # define ILL_ILLTRP     ILL_ILLTRP
   85:   ILL_PRVOPC,                   /* Privileged opcode.  */
   86: # define ILL_PRVOPC     ILL_PRVOPC
   87:   ILL_PRVREG,                   /* Privileged register.  */
   88: # define ILL_PRVREG     ILL_PRVREG
   89:   ILL_COPROC,                   /* Coprocessor error.  */
   90: # define ILL_COPROC     ILL_COPROC
   91:   ILL_BADSTK                    /* Internal stack error.  */
   92: # define ILL_BADSTK     ILL_BADSTK
   93: };
   94: 
   95: /* `si_code' values for SIGFPE signal.  */
   96: enum
   97: {
   98:   FPE_INTDIV = 1,               /* Integer divide by zero.  */
   99: # define FPE_INTDIV     FPE_INTDIV
  100:   FPE_INTOVF,                   /* Integer overflow.  */
  101: # define FPE_INTOVF     FPE_INTOVF
  102:   FPE_FLTDIV,                   /* Floating point divide by zero.  */
  103: # define FPE_FLTDIV     FPE_FLTDIV
  104:   FPE_FLTOVF,                   /* Floating point overflow.  */
  105: # define FPE_FLTOVF     FPE_FLTOVF
  106:   FPE_FLTUND,                   /* Floating point underflow.  */
  107: # define FPE_FLTUND     FPE_FLTUND
  108:   FPE_FLTRES,                   /* Floating point inexact result.  */
  109: # define FPE_FLTRES     FPE_FLTRES
  110:   FPE_FLTINV,                   /* Floating point invalid operation.  */
  111: # define FPE_FLTINV     FPE_FLTINV
  112:   FPE_FLTSUB                    /* Subscript out of range.  */
  113: # define FPE_FLTSUB     FPE_FLTSUB
  114: };
  115: 
  116: /* `si_code' values for SIGSEGV signal.  */
  117: enum
  118: {
  119:   SEGV_MAPERR = 1,              /* Address not mapped to object.  */
  120: # define SEGV_MAPERR    SEGV_MAPERR
  121:   SEGV_ACCERR                   /* Invalid permissions for mapped object.  */
  122: # define SEGV_ACCERR    SEGV_ACCERR
  123: };
  124: 
  125: /* `si_code' values for SIGBUS signal.  */
  126: enum
  127: {
  128:   BUS_ADRALN = 1,               /* Invalid address alignment.  */
  129: # define BUS_ADRALN     BUS_ADRALN
  130:   BUS_ADRERR,                   /* Non-existant physical address.  */
  131: # define BUS_ADRERR     BUS_ADRERR
  132:   BUS_OBJERR                    /* Object specific hardware error.  */
  133: # define BUS_OBJERR     BUS_OBJERR
  134: };
  135: 
  136: /* `si_code' values for SIGTRAP signal.  */
  137: enum
  138: {
  139:   TRAP_BRKPT = 1,               /* Process breakpoint.  */
  140: # define TRAP_BRKPT     TRAP_BRKPT
  141:   TRAP_TRACE                    /* Process trace trap.  */
  142: # define TRAP_TRACE     TRAP_TRACE
  143: };
  144: 
  145: /* `si_code' values for SIGCHLD signal.  */
  146: enum
  147: {
  148:   CLD_EXITED = 1,               /* Child has exited.  */
  149: # define CLD_EXITED     CLD_EXITED
  150:   CLD_KILLED,                   /* Child was killed.  */
  151: # define CLD_KILLED     CLD_KILLED
  152:   CLD_DUMPED,                   /* Child terminated abnormally.  */
  153: # define CLD_DUMPED     CLD_DUMPED
  154:   CLD_TRAPPED,                  /* Traced child has trapped.  */
  155: # define CLD_TRAPPED    CLD_TRAPPED
  156:   CLD_STOPPED,                  /* Child has stopped.  */
  157: # define CLD_STOPPED    CLD_STOPPED
  158:   CLD_CONTINUED                 /* Stopped child has continued.  */
  159: # define CLD_CONTINUED  CLD_CONTINUED
  160: };
  161: 
  162: /* `si_code' values for SIGPOLL signal.  */
  163: enum
  164: {
  165:   POLL_IN = 1,                  /* Data input available.  */
  166: # define POLL_IN        POLL_IN
  167:   POLL_OUT,                     /* Output buffers available.  */
  168: # define POLL_OUT       POLL_OUT
  169:   POLL_MSG,                     /* Input message available.   */
  170: # define POLL_MSG       POLL_MSG
  171:   POLL_ERR,                     /* I/O error.  */
  172: # define POLL_ERR       POLL_ERR
  173:   POLL_PRI,                     /* High priority input available.  */
  174: # define POLL_PRI       POLL_PRI
  175:   POLL_HUP                      /* Device disconnected.  */
  176: # define POLL_HUP       POLL_HUP
  177: };
  178: 
  179: # undef __need_siginfo_t
  180: #endif  /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t).  */
  181: 
  182: 
  183: #if (defined _SIGNAL_H || defined __need_sigevent_t) \
  184:     && !defined __have_sigevent_t
  185: # define __have_sigevent_t      1
  186: 
  187: /* Structure to transport application-defined values with signals.  */
  188: # define SIGEV_MAX_SIZE 64
  189: # define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE / sizeof (int)) - 3)
  190: 
  191: typedef struct sigevent
  192:   {
  193:     sigval_t sigev_value;
  194:     int sigev_signo;
  195:     int sigev_notify;
  196:     void (*sigev_notify_function) (sigval_t);       /* Function to start.  */
  197:     void *sigev_notify_attributes;                  /* Really pthread_attr_t.*/
  198:   } sigevent_t;
  199: 
  200: /* `sigev_notify' values.  */
  201: enum
  202: {
  203:   SIGEV_SIGNAL = 0,             /* Notify via signal.  */
  204: # define SIGEV_SIGNAL   SIGEV_SIGNAL
  205:   SIGEV_NONE,                   /* Other notification: meaningless.  */
  206: # define SIGEV_NONE     SIGEV_NONE
  207:   SIGEV_THREAD                  /* Deliver via thread creation.  */
  208: # define SIGEV_THREAD   SIGEV_THREAD
  209: };
  210: 
  211: #endif  /* have _SIGNAL_H.  */
Syntax (Markdown)