siginfo.h
001: 
002: 
003: 
004: 
005: 
006: 
007: 
008: 
009: 
010: 
011: 
012: 
013: 
014: 
015: 
016: 
017: 
018: 
019: 
020: #if !defined _SIGNAL_H && !defined __need_siginfo_t \
021:     && !defined __need_sigevent_t
022: # error "Never include this file directly.  Use <signal.h> instead"
023: #endif
024: 
025: #include <bits/wordsize.h>
026: 
027: #if (!defined __have_sigval_t \
028:      && (defined _SIGNAL_H || defined __need_siginfo_t \
029:          || defined __need_sigevent_t))
030: # define __have_sigval_t        1
031: 
032: 
033: typedef union sigval
034:   {
035:     int sival_int;
036:     void *sival_ptr;
037:   } sigval_t;
038: #endif
039: 
040: #if (!defined __have_siginfo_t \
041:      && (defined _SIGNAL_H || defined __need_siginfo_t))
042: # define __have_siginfo_t       1
043: 
044: # define __SI_MAX_SIZE     128
045: # if __WORDSIZE == 64
046: #  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 4)
047: # else
048: #  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 3)
049: # endif
050: 
051: typedef struct siginfo
052:   {
053:     int si_signo;               
054:     int si_errno;               
055: 
056:     int si_code;                
057: 
058:     union
059:       {
060:         int _pad[__SI_PAD_SIZE];
061: 
062:          
063:         struct
064:           {
065:             __pid_t si_pid;     
066:             __uid_t si_uid;     
067:           } _kill;
068: 
069:         
070:         struct
071:           {
072:             int si_tid;         
073:             int si_overrun;     
074:             sigval_t si_sigval; 
075:           } _timer;
076: 
077:         
078:         struct
079:           {
080:             __pid_t si_pid;     
081:             __uid_t si_uid;     
082:             sigval_t si_sigval; 
083:           } _rt;
084: 
085:         
086:         struct
087:           {
088:             __pid_t si_pid;     
089:             __uid_t si_uid;     
090:             int si_status;      
091:             __clock_t si_utime;
092:             __clock_t si_stime;
093:           } _sigchld;
094: 
095:         
096:         struct
097:           {
098:             void *si_addr;      
099:           } _sigfault;
100: 
101:         
102:         struct
103:           {
104:             long int si_band;   
105:             int si_fd;
106:           } _sigpoll;
107:       } _sifields;
108:   } siginfo_t;
109: 
110: 
111: 
112: # define si_pid         _sifields._kill.si_pid
113: # define si_uid         _sifields._kill.si_uid
114: # define si_timerid     _sifields._timer.si_tid
115: # define si_overrun     _sifields._timer.si_overrun
116: # define si_status      _sifields._sigchld.si_status
117: # define si_utime       _sifields._sigchld.si_utime
118: # define si_stime       _sifields._sigchld.si_stime
119: # define si_value       _sifields._rt.si_sigval
120: # define si_int         _sifields._rt.si_sigval.sival_int
121: # define si_ptr         _sifields._rt.si_sigval.sival_ptr
122: # define si_addr        _sifields._sigfault.si_addr
123: # define si_band        _sifields._sigpoll.si_band
124: # define si_fd          _sifields._sigpoll.si_fd
125: 
126: 
127: 
128: 
129: enum
130: {
131:   SI_ASYNCNL = -60,             
132: # define SI_ASYNCNL     SI_ASYNCNL
133:   SI_TKILL = -6,                
134: # define SI_TKILL       SI_TKILL
135:   SI_SIGIO,                     
136: # define SI_SIGIO       SI_SIGIO
137:   SI_ASYNCIO,                   
138: # define SI_ASYNCIO     SI_ASYNCIO
139:   SI_MESGQ,                     
140: # define SI_MESGQ       SI_MESGQ
141:   SI_TIMER,                     
142: # define SI_TIMER       SI_TIMER
143:   SI_QUEUE,                     
144: # define SI_QUEUE       SI_QUEUE
145:   SI_USER,                      
146: # define SI_USER        SI_USER
147:   SI_KERNEL = 0x80              
148: #define SI_KERNEL       SI_KERNEL
149: };
150: 
151: 
152: 
153: enum
154: {
155:   ILL_ILLOPC = 1,               
156: # define ILL_ILLOPC     ILL_ILLOPC
157:   ILL_ILLOPN,                   
158: # define ILL_ILLOPN     ILL_ILLOPN
159:   ILL_ILLADR,                   
160: # define ILL_ILLADR     ILL_ILLADR
161:   ILL_ILLTRP,                   
162: # define ILL_ILLTRP     ILL_ILLTRP
163:   ILL_PRVOPC,                   
164: # define ILL_PRVOPC     ILL_PRVOPC
165:   ILL_PRVREG,                   
166: # define ILL_PRVREG     ILL_PRVREG
167:   ILL_COPROC,                   
168: # define ILL_COPROC     ILL_COPROC
169:   ILL_BADSTK                    
170: # define ILL_BADSTK     ILL_BADSTK
171: };
172: 
173: 
174: enum
175: {
176:   FPE_INTDIV = 1,               
177: # define FPE_INTDIV     FPE_INTDIV
178:   FPE_INTOVF,                   
179: # define FPE_INTOVF     FPE_INTOVF
180:   FPE_FLTDIV,                   
181: # define FPE_FLTDIV     FPE_FLTDIV
182:   FPE_FLTOVF,                   
183: # define FPE_FLTOVF     FPE_FLTOVF
184:   FPE_FLTUND,                   
185: # define FPE_FLTUND     FPE_FLTUND
186:   FPE_FLTRES,                   
187: # define FPE_FLTRES     FPE_FLTRES
188:   FPE_FLTINV,                   
189: # define FPE_FLTINV     FPE_FLTINV
190:   FPE_FLTSUB                    
191: # define FPE_FLTSUB     FPE_FLTSUB
192: };
193: 
194: 
195: enum
196: {
197:   SEGV_MAPERR = 1,              
198: # define SEGV_MAPERR    SEGV_MAPERR
199:   SEGV_ACCERR                   
200: # define SEGV_ACCERR    SEGV_ACCERR
201: };
202: 
203: 
204: enum
205: {
206:   BUS_ADRALN = 1,               
207: # define BUS_ADRALN     BUS_ADRALN
208:   BUS_ADRERR,                   
209: # define BUS_ADRERR     BUS_ADRERR
210:   BUS_OBJERR                    
211: # define BUS_OBJERR     BUS_OBJERR
212: };
213: 
214: 
215: enum
216: {
217:   TRAP_BRKPT = 1,               
218: # define TRAP_BRKPT     TRAP_BRKPT
219:   TRAP_TRACE                    
220: # define TRAP_TRACE     TRAP_TRACE
221: };
222: 
223: 
224: enum
225: {
226:   CLD_EXITED = 1,               
227: # define CLD_EXITED     CLD_EXITED
228:   CLD_KILLED,                   
229: # define CLD_KILLED     CLD_KILLED
230:   CLD_DUMPED,                   
231: # define CLD_DUMPED     CLD_DUMPED
232:   CLD_TRAPPED,                  
233: # define CLD_TRAPPED    CLD_TRAPPED
234:   CLD_STOPPED,                  
235: # define CLD_STOPPED    CLD_STOPPED
236:   CLD_CONTINUED                 
237: # define CLD_CONTINUED  CLD_CONTINUED
238: };
239: 
240: 
241: enum
242: {
243:   POLL_IN = 1,                  
244: # define POLL_IN        POLL_IN
245:   POLL_OUT,                     
246: # define POLL_OUT       POLL_OUT
247:   POLL_MSG,                     
248: # define POLL_MSG       POLL_MSG
249:   POLL_ERR,                     
250: # define POLL_ERR       POLL_ERR
251:   POLL_PRI,                     
252: # define POLL_PRI       POLL_PRI
253:   POLL_HUP                      
254: # define POLL_HUP       POLL_HUP
255: };
256: 
257: # undef __need_siginfo_t
258: #endif  
259: 
260: 
261: #if (defined _SIGNAL_H || defined __need_sigevent_t) \
262:     && !defined __have_sigevent_t
263: # define __have_sigevent_t      1
264: 
265: 
266: # define __SIGEV_MAX_SIZE       64
267: # if __WORDSIZE == 64
268: #  define __SIGEV_PAD_SIZE      ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
269: # else
270: #  define __SIGEV_PAD_SIZE      ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
271: # endif
272: 
273: typedef struct sigevent
274:   {
275:     sigval_t sigev_value;
276:     int sigev_signo;
277:     int sigev_notify;
278: 
279:     union
280:       {
281:         int _pad[__SIGEV_PAD_SIZE];
282: 
283:         
284: 
285:         __pid_t _tid;
286: 
287:         struct
288:           {
289:             void (*_function) (sigval_t);       
290:             void *_attribute;                   
291:           } _sigev_thread;
292:       } _sigev_un;
293:   } sigevent_t;
294: 
295: 
296: # define sigev_notify_function   _sigev_un._sigev_thread._function
297: # define sigev_notify_attributes _sigev_un._sigev_thread._attribute
298: 
299: 
300: enum
301: {
302:   SIGEV_SIGNAL = 0,             
303: # define SIGEV_SIGNAL   SIGEV_SIGNAL
304:   SIGEV_NONE,                   
305: # define SIGEV_NONE     SIGEV_NONE
306:   SIGEV_THREAD,                 
307: # define SIGEV_THREAD   SIGEV_THREAD
308: 
309:   SIGEV_THREAD_ID = 4           
310: #define SIGEV_THREAD_ID SIGEV_THREAD_ID
311: };
312: 
313: #endif  
314: 
      
      
      
      
   
      
      
         
            
            © Andrew Scott 2006 -
            2025, 
            All Rights Reserved