xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/asm/siginfo.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /*
2*53ee8cc1Swenshuai.xi  * This file is subject to the terms and conditions of the GNU General Public
3*53ee8cc1Swenshuai.xi  * License.  See the file "COPYING" in the main directory of this archive
4*53ee8cc1Swenshuai.xi  * for more details.
5*53ee8cc1Swenshuai.xi  *
6*53ee8cc1Swenshuai.xi  * Copyright (C) 1998, 1999, 2001, 2003 Ralf Baechle
7*53ee8cc1Swenshuai.xi  * Copyright (C) 2000, 2001 Silicon Graphics, Inc.
8*53ee8cc1Swenshuai.xi  */
9*53ee8cc1Swenshuai.xi #ifndef _ASM_SIGINFO_H
10*53ee8cc1Swenshuai.xi #define _ASM_SIGINFO_H
11*53ee8cc1Swenshuai.xi 
12*53ee8cc1Swenshuai.xi 
13*53ee8cc1Swenshuai.xi #define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(long) + 2*sizeof(int))
14*53ee8cc1Swenshuai.xi #undef __ARCH_SI_TRAPNO	/* exception code needs to fill this ...  */
15*53ee8cc1Swenshuai.xi 
16*53ee8cc1Swenshuai.xi #define HAVE_ARCH_SIGINFO_T
17*53ee8cc1Swenshuai.xi 
18*53ee8cc1Swenshuai.xi /*
19*53ee8cc1Swenshuai.xi  * We duplicate the generic versions - <asm-generic/siginfo.h> is just borked
20*53ee8cc1Swenshuai.xi  * by design ...
21*53ee8cc1Swenshuai.xi  */
22*53ee8cc1Swenshuai.xi #define HAVE_ARCH_COPY_SIGINFO
23*53ee8cc1Swenshuai.xi struct siginfo;
24*53ee8cc1Swenshuai.xi 
25*53ee8cc1Swenshuai.xi /*
26*53ee8cc1Swenshuai.xi  * Careful to keep union _sifields from shifting ...
27*53ee8cc1Swenshuai.xi  */
28*53ee8cc1Swenshuai.xi #ifdef CONFIG_32BIT
29*53ee8cc1Swenshuai.xi #define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int))
30*53ee8cc1Swenshuai.xi #endif
31*53ee8cc1Swenshuai.xi #ifdef CONFIG_64BIT
32*53ee8cc1Swenshuai.xi #define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
33*53ee8cc1Swenshuai.xi #endif
34*53ee8cc1Swenshuai.xi 
35*53ee8cc1Swenshuai.xi #include <asm-generic/siginfo.h>
36*53ee8cc1Swenshuai.xi 
37*53ee8cc1Swenshuai.xi typedef struct siginfo {
38*53ee8cc1Swenshuai.xi 	int si_signo;
39*53ee8cc1Swenshuai.xi 	int si_code;
40*53ee8cc1Swenshuai.xi 	int si_errno;
41*53ee8cc1Swenshuai.xi 	int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3];
42*53ee8cc1Swenshuai.xi 
43*53ee8cc1Swenshuai.xi 	union {
44*53ee8cc1Swenshuai.xi 		int _pad[SI_PAD_SIZE];
45*53ee8cc1Swenshuai.xi 
46*53ee8cc1Swenshuai.xi 		/* kill() */
47*53ee8cc1Swenshuai.xi 		struct {
48*53ee8cc1Swenshuai.xi 			pid_t _pid;		/* sender's pid */
49*53ee8cc1Swenshuai.xi 			__ARCH_SI_UID_T _uid;	/* sender's uid */
50*53ee8cc1Swenshuai.xi 		} _kill;
51*53ee8cc1Swenshuai.xi 
52*53ee8cc1Swenshuai.xi 		/* POSIX.1b timers */
53*53ee8cc1Swenshuai.xi 		struct {
54*53ee8cc1Swenshuai.xi 			timer_t _tid;		/* timer id */
55*53ee8cc1Swenshuai.xi 			int _overrun;		/* overrun count */
56*53ee8cc1Swenshuai.xi 			char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)];
57*53ee8cc1Swenshuai.xi 			sigval_t _sigval;	/* same as below */
58*53ee8cc1Swenshuai.xi 			int _sys_private;       /* not to be passed to user */
59*53ee8cc1Swenshuai.xi 		} _timer;
60*53ee8cc1Swenshuai.xi 
61*53ee8cc1Swenshuai.xi 		/* POSIX.1b signals */
62*53ee8cc1Swenshuai.xi 		struct {
63*53ee8cc1Swenshuai.xi 			pid_t _pid;		/* sender's pid */
64*53ee8cc1Swenshuai.xi 			__ARCH_SI_UID_T _uid;	/* sender's uid */
65*53ee8cc1Swenshuai.xi 			sigval_t _sigval;
66*53ee8cc1Swenshuai.xi 		} _rt;
67*53ee8cc1Swenshuai.xi 
68*53ee8cc1Swenshuai.xi 		/* SIGCHLD */
69*53ee8cc1Swenshuai.xi 		struct {
70*53ee8cc1Swenshuai.xi 			pid_t _pid;		/* which child */
71*53ee8cc1Swenshuai.xi 			__ARCH_SI_UID_T _uid;	/* sender's uid */
72*53ee8cc1Swenshuai.xi 			int _status;		/* exit code */
73*53ee8cc1Swenshuai.xi 			clock_t _utime;
74*53ee8cc1Swenshuai.xi 			clock_t _stime;
75*53ee8cc1Swenshuai.xi 		} _sigchld;
76*53ee8cc1Swenshuai.xi 
77*53ee8cc1Swenshuai.xi 		/* IRIX SIGCHLD */
78*53ee8cc1Swenshuai.xi 		struct {
79*53ee8cc1Swenshuai.xi 			pid_t _pid;		/* which child */
80*53ee8cc1Swenshuai.xi 			clock_t _utime;
81*53ee8cc1Swenshuai.xi 			int _status;		/* exit code */
82*53ee8cc1Swenshuai.xi 			clock_t _stime;
83*53ee8cc1Swenshuai.xi 		} _irix_sigchld;
84*53ee8cc1Swenshuai.xi 
85*53ee8cc1Swenshuai.xi 		/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
86*53ee8cc1Swenshuai.xi 		struct {
87*53ee8cc1Swenshuai.xi 			void *_addr; /* faulting insn/memory ref. */
88*53ee8cc1Swenshuai.xi #ifdef __ARCH_SI_TRAPNO
89*53ee8cc1Swenshuai.xi 			int _trapno;	/* TRAP # which caused the signal */
90*53ee8cc1Swenshuai.xi #endif
91*53ee8cc1Swenshuai.xi 		} _sigfault;
92*53ee8cc1Swenshuai.xi 
93*53ee8cc1Swenshuai.xi 		/* SIGPOLL, SIGXFSZ (To do ...)  */
94*53ee8cc1Swenshuai.xi 		struct {
95*53ee8cc1Swenshuai.xi 			__ARCH_SI_BAND_T _band;	/* POLL_IN, POLL_OUT, POLL_MSG */
96*53ee8cc1Swenshuai.xi 			int _fd;
97*53ee8cc1Swenshuai.xi 		} _sigpoll;
98*53ee8cc1Swenshuai.xi 	} _sifields;
99*53ee8cc1Swenshuai.xi } siginfo_t;
100*53ee8cc1Swenshuai.xi 
101*53ee8cc1Swenshuai.xi /*
102*53ee8cc1Swenshuai.xi  * si_code values
103*53ee8cc1Swenshuai.xi  * Again these have been choosen to be IRIX compatible.
104*53ee8cc1Swenshuai.xi  */
105*53ee8cc1Swenshuai.xi #undef SI_ASYNCIO
106*53ee8cc1Swenshuai.xi #undef SI_TIMER
107*53ee8cc1Swenshuai.xi #undef SI_MESGQ
108*53ee8cc1Swenshuai.xi #define SI_ASYNCIO	-2	/* sent by AIO completion */
109*53ee8cc1Swenshuai.xi #define SI_TIMER __SI_CODE(__SI_TIMER, -3) /* sent by timer expiration */
110*53ee8cc1Swenshuai.xi #define SI_MESGQ __SI_CODE(__SI_MESGQ, -4) /* sent by real time mesq state change */
111*53ee8cc1Swenshuai.xi 
112*53ee8cc1Swenshuai.xi 
113*53ee8cc1Swenshuai.xi #endif /* _ASM_SIGINFO_H */
114