1*53ee8cc1Swenshuai.xi /* siginfo_t, sigevent and constants. Linux/MIPS version. 2*53ee8cc1Swenshuai.xi Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 3*53ee8cc1Swenshuai.xi Free Software Foundation, Inc. 4*53ee8cc1Swenshuai.xi This file is part of the GNU C Library. 5*53ee8cc1Swenshuai.xi 6*53ee8cc1Swenshuai.xi The GNU C Library is free software; you can redistribute it and/or 7*53ee8cc1Swenshuai.xi modify it under the terms of the GNU Lesser General Public 8*53ee8cc1Swenshuai.xi License as published by the Free Software Foundation; either 9*53ee8cc1Swenshuai.xi version 2.1 of the License, or (at your option) any later version. 10*53ee8cc1Swenshuai.xi 11*53ee8cc1Swenshuai.xi The GNU C Library is distributed in the hope that it will be useful, 12*53ee8cc1Swenshuai.xi but WITHOUT ANY WARRANTY; without even the implied warranty of 13*53ee8cc1Swenshuai.xi MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14*53ee8cc1Swenshuai.xi Lesser General Public License for more details. 15*53ee8cc1Swenshuai.xi 16*53ee8cc1Swenshuai.xi You should have received a copy of the GNU Lesser General Public 17*53ee8cc1Swenshuai.xi License along with the GNU C Library; if not, write to the Free 18*53ee8cc1Swenshuai.xi Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 19*53ee8cc1Swenshuai.xi 02111-1307 USA. */ 20*53ee8cc1Swenshuai.xi 21*53ee8cc1Swenshuai.xi #if !defined _SIGNAL_H && !defined __need_siginfo_t \ 22*53ee8cc1Swenshuai.xi && !defined __need_sigevent_t 23*53ee8cc1Swenshuai.xi # error "Never include this file directly. Use <signal.h> instead" 24*53ee8cc1Swenshuai.xi #endif 25*53ee8cc1Swenshuai.xi 26*53ee8cc1Swenshuai.xi #include <bits/wordsize.h> 27*53ee8cc1Swenshuai.xi 28*53ee8cc1Swenshuai.xi #if (!defined __have_sigval_t \ 29*53ee8cc1Swenshuai.xi && (defined _SIGNAL_H || defined __need_siginfo_t \ 30*53ee8cc1Swenshuai.xi || defined __need_sigevent_t)) 31*53ee8cc1Swenshuai.xi # define __have_sigval_t 1 32*53ee8cc1Swenshuai.xi 33*53ee8cc1Swenshuai.xi /* Type for data associated with a signal. */ 34*53ee8cc1Swenshuai.xi typedef union sigval 35*53ee8cc1Swenshuai.xi { 36*53ee8cc1Swenshuai.xi int sival_int; 37*53ee8cc1Swenshuai.xi void *sival_ptr; 38*53ee8cc1Swenshuai.xi } sigval_t; 39*53ee8cc1Swenshuai.xi #endif 40*53ee8cc1Swenshuai.xi 41*53ee8cc1Swenshuai.xi #if (!defined __have_siginfo_t \ 42*53ee8cc1Swenshuai.xi && (defined _SIGNAL_H || defined __need_siginfo_t)) 43*53ee8cc1Swenshuai.xi # define __have_siginfo_t 1 44*53ee8cc1Swenshuai.xi 45*53ee8cc1Swenshuai.xi # define __SI_MAX_SIZE 128 46*53ee8cc1Swenshuai.xi # if __WORDSIZE == 64 47*53ee8cc1Swenshuai.xi # define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4) 48*53ee8cc1Swenshuai.xi # else 49*53ee8cc1Swenshuai.xi # define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3) 50*53ee8cc1Swenshuai.xi # endif 51*53ee8cc1Swenshuai.xi 52*53ee8cc1Swenshuai.xi 53*53ee8cc1Swenshuai.xi typedef struct siginfo 54*53ee8cc1Swenshuai.xi { 55*53ee8cc1Swenshuai.xi int si_signo; /* Signal number. */ 56*53ee8cc1Swenshuai.xi int si_code; /* Signal code. */ 57*53ee8cc1Swenshuai.xi int si_errno; /* If non-zero, an errno value associated with 58*53ee8cc1Swenshuai.xi this signal, as defined in <errno.h>. */ 59*53ee8cc1Swenshuai.xi int __pad0[__SI_MAX_SIZE / sizeof (int) - __SI_PAD_SIZE - 3]; 60*53ee8cc1Swenshuai.xi /* Explicit padding. */ 61*53ee8cc1Swenshuai.xi 62*53ee8cc1Swenshuai.xi union 63*53ee8cc1Swenshuai.xi { 64*53ee8cc1Swenshuai.xi int _pad[__SI_PAD_SIZE]; 65*53ee8cc1Swenshuai.xi 66*53ee8cc1Swenshuai.xi /* kill(). */ 67*53ee8cc1Swenshuai.xi struct 68*53ee8cc1Swenshuai.xi { 69*53ee8cc1Swenshuai.xi __pid_t si_pid; /* Sending process ID. */ 70*53ee8cc1Swenshuai.xi __uid_t si_uid; /* Real user ID of sending process. */ 71*53ee8cc1Swenshuai.xi } _kill; 72*53ee8cc1Swenshuai.xi 73*53ee8cc1Swenshuai.xi /* POSIX.1b timers. */ 74*53ee8cc1Swenshuai.xi struct 75*53ee8cc1Swenshuai.xi { 76*53ee8cc1Swenshuai.xi int si_tid; /* Timer ID. */ 77*53ee8cc1Swenshuai.xi int si_overrun; /* Overrun count. */ 78*53ee8cc1Swenshuai.xi sigval_t si_sigval; /* Signal value. */ 79*53ee8cc1Swenshuai.xi } _timer; 80*53ee8cc1Swenshuai.xi 81*53ee8cc1Swenshuai.xi /* POSIX.1b signals. */ 82*53ee8cc1Swenshuai.xi struct 83*53ee8cc1Swenshuai.xi { 84*53ee8cc1Swenshuai.xi __pid_t si_pid; /* Sending process ID. */ 85*53ee8cc1Swenshuai.xi __uid_t si_uid; /* Real user ID of sending process. */ 86*53ee8cc1Swenshuai.xi sigval_t si_sigval; /* Signal value. */ 87*53ee8cc1Swenshuai.xi } _rt; 88*53ee8cc1Swenshuai.xi 89*53ee8cc1Swenshuai.xi /* SIGCHLD. */ 90*53ee8cc1Swenshuai.xi struct 91*53ee8cc1Swenshuai.xi { 92*53ee8cc1Swenshuai.xi __pid_t si_pid; /* Which child. */ 93*53ee8cc1Swenshuai.xi __uid_t si_uid; /* Real user ID of sending process. */ 94*53ee8cc1Swenshuai.xi int si_status; /* Exit value or signal. */ 95*53ee8cc1Swenshuai.xi __clock_t si_utime; 96*53ee8cc1Swenshuai.xi __clock_t si_stime; 97*53ee8cc1Swenshuai.xi } _sigchld; 98*53ee8cc1Swenshuai.xi 99*53ee8cc1Swenshuai.xi /* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */ 100*53ee8cc1Swenshuai.xi struct 101*53ee8cc1Swenshuai.xi { 102*53ee8cc1Swenshuai.xi void *si_addr; /* Faulting insn/memory ref. */ 103*53ee8cc1Swenshuai.xi } _sigfault; 104*53ee8cc1Swenshuai.xi 105*53ee8cc1Swenshuai.xi /* SIGPOLL. */ 106*53ee8cc1Swenshuai.xi struct 107*53ee8cc1Swenshuai.xi { 108*53ee8cc1Swenshuai.xi long int si_band; /* Band event for SIGPOLL. */ 109*53ee8cc1Swenshuai.xi int si_fd; 110*53ee8cc1Swenshuai.xi } _sigpoll; 111*53ee8cc1Swenshuai.xi } _sifields; 112*53ee8cc1Swenshuai.xi } siginfo_t; 113*53ee8cc1Swenshuai.xi 114*53ee8cc1Swenshuai.xi 115*53ee8cc1Swenshuai.xi /* X/Open requires some more fields with fixed names. */ 116*53ee8cc1Swenshuai.xi # define si_pid _sifields._kill.si_pid 117*53ee8cc1Swenshuai.xi # define si_uid _sifields._kill.si_uid 118*53ee8cc1Swenshuai.xi # define si_timerid _sifields._timer.si_tid 119*53ee8cc1Swenshuai.xi # define si_overrun _sifields._timer.si_overrun 120*53ee8cc1Swenshuai.xi # define si_status _sifields._sigchld.si_status 121*53ee8cc1Swenshuai.xi # define si_utime _sifields._sigchld.si_utime 122*53ee8cc1Swenshuai.xi # define si_stime _sifields._sigchld.si_stime 123*53ee8cc1Swenshuai.xi # define si_value _sifields._rt.si_sigval 124*53ee8cc1Swenshuai.xi # define si_int _sifields._rt.si_sigval.sival_int 125*53ee8cc1Swenshuai.xi # define si_ptr _sifields._rt.si_sigval.sival_ptr 126*53ee8cc1Swenshuai.xi # define si_addr _sifields._sigfault.si_addr 127*53ee8cc1Swenshuai.xi # define si_band _sifields._sigpoll.si_band 128*53ee8cc1Swenshuai.xi # define si_fd _sifields._sigpoll.si_fd 129*53ee8cc1Swenshuai.xi 130*53ee8cc1Swenshuai.xi 131*53ee8cc1Swenshuai.xi /* Values for `si_code'. Positive values are reserved for kernel-generated 132*53ee8cc1Swenshuai.xi signals. */ 133*53ee8cc1Swenshuai.xi enum 134*53ee8cc1Swenshuai.xi { 135*53ee8cc1Swenshuai.xi SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */ 136*53ee8cc1Swenshuai.xi # define SI_ASYNCNL SI_ASYNCNL 137*53ee8cc1Swenshuai.xi SI_TKILL = -6, /* Sent by tkill. */ 138*53ee8cc1Swenshuai.xi # define SI_TKILL SI_TKILL 139*53ee8cc1Swenshuai.xi SI_SIGIO, /* Sent by queued SIGIO. */ 140*53ee8cc1Swenshuai.xi # define SI_SIGIO SI_SIGIO 141*53ee8cc1Swenshuai.xi SI_MESGQ, /* Sent by real time mesq state change. */ 142*53ee8cc1Swenshuai.xi # define SI_MESGQ SI_MESGQ 143*53ee8cc1Swenshuai.xi SI_TIMER, /* Sent by real time mesq state change. */ 144*53ee8cc1Swenshuai.xi # define SI_TIMER SI_TIMER 145*53ee8cc1Swenshuai.xi SI_ASYNCIO, /* Sent by AIO completion. */ 146*53ee8cc1Swenshuai.xi # define SI_ASYNCIO SI_ASYNCIO 147*53ee8cc1Swenshuai.xi SI_QUEUE, /* Sent by sigqueue. */ 148*53ee8cc1Swenshuai.xi # define SI_QUEUE SI_QUEUE 149*53ee8cc1Swenshuai.xi SI_USER, /* Sent by kill, sigsend, raise. */ 150*53ee8cc1Swenshuai.xi # define SI_USER SI_USER 151*53ee8cc1Swenshuai.xi SI_KERNEL = 0x80 /* Send by kernel. */ 152*53ee8cc1Swenshuai.xi #define SI_KERNEL SI_KERNEL 153*53ee8cc1Swenshuai.xi }; 154*53ee8cc1Swenshuai.xi 155*53ee8cc1Swenshuai.xi 156*53ee8cc1Swenshuai.xi /* `si_code' values for SIGILL signal. */ 157*53ee8cc1Swenshuai.xi enum 158*53ee8cc1Swenshuai.xi { 159*53ee8cc1Swenshuai.xi ILL_ILLOPC = 1, /* Illegal opcode. */ 160*53ee8cc1Swenshuai.xi # define ILL_ILLOPC ILL_ILLOPC 161*53ee8cc1Swenshuai.xi ILL_ILLOPN, /* Illegal operand. */ 162*53ee8cc1Swenshuai.xi # define ILL_ILLOPN ILL_ILLOPN 163*53ee8cc1Swenshuai.xi ILL_ILLADR, /* Illegal addressing mode. */ 164*53ee8cc1Swenshuai.xi # define ILL_ILLADR ILL_ILLADR 165*53ee8cc1Swenshuai.xi ILL_ILLTRP, /* Illegal trap. */ 166*53ee8cc1Swenshuai.xi # define ILL_ILLTRP ILL_ILLTRP 167*53ee8cc1Swenshuai.xi ILL_PRVOPC, /* Privileged opcode. */ 168*53ee8cc1Swenshuai.xi # define ILL_PRVOPC ILL_PRVOPC 169*53ee8cc1Swenshuai.xi ILL_PRVREG, /* Privileged register. */ 170*53ee8cc1Swenshuai.xi # define ILL_PRVREG ILL_PRVREG 171*53ee8cc1Swenshuai.xi ILL_COPROC, /* Coprocessor error. */ 172*53ee8cc1Swenshuai.xi # define ILL_COPROC ILL_COPROC 173*53ee8cc1Swenshuai.xi ILL_BADSTK /* Internal stack error. */ 174*53ee8cc1Swenshuai.xi # define ILL_BADSTK ILL_BADSTK 175*53ee8cc1Swenshuai.xi }; 176*53ee8cc1Swenshuai.xi 177*53ee8cc1Swenshuai.xi /* `si_code' values for SIGFPE signal. */ 178*53ee8cc1Swenshuai.xi enum 179*53ee8cc1Swenshuai.xi { 180*53ee8cc1Swenshuai.xi FPE_INTDIV = 1, /* Integer divide by zero. */ 181*53ee8cc1Swenshuai.xi # define FPE_INTDIV FPE_INTDIV 182*53ee8cc1Swenshuai.xi FPE_INTOVF, /* Integer overflow. */ 183*53ee8cc1Swenshuai.xi # define FPE_INTOVF FPE_INTOVF 184*53ee8cc1Swenshuai.xi FPE_FLTDIV, /* Floating point divide by zero. */ 185*53ee8cc1Swenshuai.xi # define FPE_FLTDIV FPE_FLTDIV 186*53ee8cc1Swenshuai.xi FPE_FLTOVF, /* Floating point overflow. */ 187*53ee8cc1Swenshuai.xi # define FPE_FLTOVF FPE_FLTOVF 188*53ee8cc1Swenshuai.xi FPE_FLTUND, /* Floating point underflow. */ 189*53ee8cc1Swenshuai.xi # define FPE_FLTUND FPE_FLTUND 190*53ee8cc1Swenshuai.xi FPE_FLTRES, /* Floating point inexact result. */ 191*53ee8cc1Swenshuai.xi # define FPE_FLTRES FPE_FLTRES 192*53ee8cc1Swenshuai.xi FPE_FLTINV, /* Floating point invalid operation. */ 193*53ee8cc1Swenshuai.xi # define FPE_FLTINV FPE_FLTINV 194*53ee8cc1Swenshuai.xi FPE_FLTSUB /* Subscript out of range. */ 195*53ee8cc1Swenshuai.xi # define FPE_FLTSUB FPE_FLTSUB 196*53ee8cc1Swenshuai.xi }; 197*53ee8cc1Swenshuai.xi 198*53ee8cc1Swenshuai.xi /* `si_code' values for SIGSEGV signal. */ 199*53ee8cc1Swenshuai.xi enum 200*53ee8cc1Swenshuai.xi { 201*53ee8cc1Swenshuai.xi SEGV_MAPERR = 1, /* Address not mapped to object. */ 202*53ee8cc1Swenshuai.xi # define SEGV_MAPERR SEGV_MAPERR 203*53ee8cc1Swenshuai.xi SEGV_ACCERR /* Invalid permissions for mapped object. */ 204*53ee8cc1Swenshuai.xi # define SEGV_ACCERR SEGV_ACCERR 205*53ee8cc1Swenshuai.xi }; 206*53ee8cc1Swenshuai.xi 207*53ee8cc1Swenshuai.xi /* `si_code' values for SIGBUS signal. */ 208*53ee8cc1Swenshuai.xi enum 209*53ee8cc1Swenshuai.xi { 210*53ee8cc1Swenshuai.xi BUS_ADRALN = 1, /* Invalid address alignment. */ 211*53ee8cc1Swenshuai.xi # define BUS_ADRALN BUS_ADRALN 212*53ee8cc1Swenshuai.xi BUS_ADRERR, /* Non-existant physical address. */ 213*53ee8cc1Swenshuai.xi # define BUS_ADRERR BUS_ADRERR 214*53ee8cc1Swenshuai.xi BUS_OBJERR /* Object specific hardware error. */ 215*53ee8cc1Swenshuai.xi # define BUS_OBJERR BUS_OBJERR 216*53ee8cc1Swenshuai.xi }; 217*53ee8cc1Swenshuai.xi 218*53ee8cc1Swenshuai.xi /* `si_code' values for SIGTRAP signal. */ 219*53ee8cc1Swenshuai.xi enum 220*53ee8cc1Swenshuai.xi { 221*53ee8cc1Swenshuai.xi TRAP_BRKPT = 1, /* Process breakpoint. */ 222*53ee8cc1Swenshuai.xi # define TRAP_BRKPT TRAP_BRKPT 223*53ee8cc1Swenshuai.xi TRAP_TRACE /* Process trace trap. */ 224*53ee8cc1Swenshuai.xi # define TRAP_TRACE TRAP_TRACE 225*53ee8cc1Swenshuai.xi }; 226*53ee8cc1Swenshuai.xi 227*53ee8cc1Swenshuai.xi /* `si_code' values for SIGCHLD signal. */ 228*53ee8cc1Swenshuai.xi enum 229*53ee8cc1Swenshuai.xi { 230*53ee8cc1Swenshuai.xi CLD_EXITED = 1, /* Child has exited. */ 231*53ee8cc1Swenshuai.xi # define CLD_EXITED CLD_EXITED 232*53ee8cc1Swenshuai.xi CLD_KILLED, /* Child was killed. */ 233*53ee8cc1Swenshuai.xi # define CLD_KILLED CLD_KILLED 234*53ee8cc1Swenshuai.xi CLD_DUMPED, /* Child terminated abnormally. */ 235*53ee8cc1Swenshuai.xi # define CLD_DUMPED CLD_DUMPED 236*53ee8cc1Swenshuai.xi CLD_TRAPPED, /* Traced child has trapped. */ 237*53ee8cc1Swenshuai.xi # define CLD_TRAPPED CLD_TRAPPED 238*53ee8cc1Swenshuai.xi CLD_STOPPED, /* Child has stopped. */ 239*53ee8cc1Swenshuai.xi # define CLD_STOPPED CLD_STOPPED 240*53ee8cc1Swenshuai.xi CLD_CONTINUED /* Stopped child has continued. */ 241*53ee8cc1Swenshuai.xi # define CLD_CONTINUED CLD_CONTINUED 242*53ee8cc1Swenshuai.xi }; 243*53ee8cc1Swenshuai.xi 244*53ee8cc1Swenshuai.xi /* `si_code' values for SIGPOLL signal. */ 245*53ee8cc1Swenshuai.xi enum 246*53ee8cc1Swenshuai.xi { 247*53ee8cc1Swenshuai.xi POLL_IN = 1, /* Data input available. */ 248*53ee8cc1Swenshuai.xi # define POLL_IN POLL_IN 249*53ee8cc1Swenshuai.xi POLL_OUT, /* Output buffers available. */ 250*53ee8cc1Swenshuai.xi # define POLL_OUT POLL_OUT 251*53ee8cc1Swenshuai.xi POLL_MSG, /* Input message available. */ 252*53ee8cc1Swenshuai.xi # define POLL_MSG POLL_MSG 253*53ee8cc1Swenshuai.xi POLL_ERR, /* I/O error. */ 254*53ee8cc1Swenshuai.xi # define POLL_ERR POLL_ERR 255*53ee8cc1Swenshuai.xi POLL_PRI, /* High priority input available. */ 256*53ee8cc1Swenshuai.xi # define POLL_PRI POLL_PRI 257*53ee8cc1Swenshuai.xi POLL_HUP /* Device disconnected. */ 258*53ee8cc1Swenshuai.xi # define POLL_HUP POLL_HUP 259*53ee8cc1Swenshuai.xi }; 260*53ee8cc1Swenshuai.xi 261*53ee8cc1Swenshuai.xi # undef __need_siginfo_t 262*53ee8cc1Swenshuai.xi #endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */ 263*53ee8cc1Swenshuai.xi 264*53ee8cc1Swenshuai.xi 265*53ee8cc1Swenshuai.xi #if (defined _SIGNAL_H || defined __need_sigevent_t) \ 266*53ee8cc1Swenshuai.xi && !defined __have_sigevent_t 267*53ee8cc1Swenshuai.xi # define __have_sigevent_t 1 268*53ee8cc1Swenshuai.xi 269*53ee8cc1Swenshuai.xi /* Structure to transport application-defined values with signals. */ 270*53ee8cc1Swenshuai.xi # define __SIGEV_MAX_SIZE 64 271*53ee8cc1Swenshuai.xi # if __WORDSIZE == 64 272*53ee8cc1Swenshuai.xi # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4) 273*53ee8cc1Swenshuai.xi # else 274*53ee8cc1Swenshuai.xi # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3) 275*53ee8cc1Swenshuai.xi # endif 276*53ee8cc1Swenshuai.xi 277*53ee8cc1Swenshuai.xi typedef struct sigevent 278*53ee8cc1Swenshuai.xi { 279*53ee8cc1Swenshuai.xi sigval_t sigev_value; 280*53ee8cc1Swenshuai.xi int sigev_signo; 281*53ee8cc1Swenshuai.xi int sigev_notify; 282*53ee8cc1Swenshuai.xi 283*53ee8cc1Swenshuai.xi union 284*53ee8cc1Swenshuai.xi { 285*53ee8cc1Swenshuai.xi int _pad[__SIGEV_PAD_SIZE]; 286*53ee8cc1Swenshuai.xi 287*53ee8cc1Swenshuai.xi /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the 288*53ee8cc1Swenshuai.xi thread to receive the signal. */ 289*53ee8cc1Swenshuai.xi __pid_t _tid; 290*53ee8cc1Swenshuai.xi 291*53ee8cc1Swenshuai.xi struct 292*53ee8cc1Swenshuai.xi { 293*53ee8cc1Swenshuai.xi void (*_function) (sigval_t); /* Function to start. */ 294*53ee8cc1Swenshuai.xi void *_attribute; /* Really pthread_attr_t. */ 295*53ee8cc1Swenshuai.xi } _sigev_thread; 296*53ee8cc1Swenshuai.xi } _sigev_un; 297*53ee8cc1Swenshuai.xi } sigevent_t; 298*53ee8cc1Swenshuai.xi 299*53ee8cc1Swenshuai.xi /* POSIX names to access some of the members. */ 300*53ee8cc1Swenshuai.xi # define sigev_notify_function _sigev_un._sigev_thread._function 301*53ee8cc1Swenshuai.xi # define sigev_notify_attributes _sigev_un._sigev_thread._attribute 302*53ee8cc1Swenshuai.xi 303*53ee8cc1Swenshuai.xi /* `sigev_notify' values. */ 304*53ee8cc1Swenshuai.xi enum 305*53ee8cc1Swenshuai.xi { 306*53ee8cc1Swenshuai.xi SIGEV_SIGNAL = 0, /* Notify via signal. */ 307*53ee8cc1Swenshuai.xi # define SIGEV_SIGNAL SIGEV_SIGNAL 308*53ee8cc1Swenshuai.xi SIGEV_NONE, /* Other notification: meaningless. */ 309*53ee8cc1Swenshuai.xi # define SIGEV_NONE SIGEV_NONE 310*53ee8cc1Swenshuai.xi SIGEV_THREAD, /* Deliver via thread creation. */ 311*53ee8cc1Swenshuai.xi # define SIGEV_THREAD SIGEV_THREAD 312*53ee8cc1Swenshuai.xi 313*53ee8cc1Swenshuai.xi SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */ 314*53ee8cc1Swenshuai.xi #define SIGEV_THREAD_ID SIGEV_THREAD_ID 315*53ee8cc1Swenshuai.xi }; 316*53ee8cc1Swenshuai.xi 317*53ee8cc1Swenshuai.xi #endif /* have _SIGNAL_H. */ 318