siginfo.h revision 198084289b68143fd4ea72dec91515eec00d700f
1198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/*
2198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * This file is subject to the terms and conditions of the GNU General Public
3198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * License.  See the file "COPYING" in the main directory of this archive
4198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * for more details.
5198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris *
6198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Copyright (C) 1998, 1999, 2001, 2003 Ralf Baechle
7198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Copyright (C) 2000, 2001 Silicon Graphics, Inc.
8198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */
9198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#ifndef _UAPI_ASM_SIGINFO_H
10198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define _UAPI_ASM_SIGINFO_H
11198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
12198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
13198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(long) + 2*sizeof(int))
14198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef __ARCH_SI_TRAPNO /* exception code needs to fill this ...  */
15198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
16198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define HAVE_ARCH_SIGINFO_T
17198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
18198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/*
19198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * We duplicate the generic versions - <asm-generic/siginfo.h> is just borked
20198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * by design ...
21198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */
22198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define HAVE_ARCH_COPY_SIGINFO
23198084289b68143fd4ea72dec91515eec00d700fChristopher Ferrisstruct siginfo;
24198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
25198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/*
26198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Careful to keep union _sifields from shifting ...
27198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */
28198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#if _MIPS_SZLONG == 32
29198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int))
30198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#elif _MIPS_SZLONG == 64
31198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
32198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#else
33198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#error _MIPS_SZLONG neither 32 nor 64
34198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif
35198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
36198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#include <asm-generic/siginfo.h>
37198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
38198084289b68143fd4ea72dec91515eec00d700fChristopher Ferristypedef struct siginfo {
39198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	int si_signo;
40198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	int si_code;
41198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	int si_errno;
42198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3];
43198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
44198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	union {
45198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		int _pad[SI_PAD_SIZE];
46198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
47198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		/* kill() */
48198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		struct {
49198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			pid_t _pid;		/* sender's pid */
50198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			__ARCH_SI_UID_T _uid;	/* sender's uid */
51198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		} _kill;
52198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
53198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		/* POSIX.1b timers */
54198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		struct {
55198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			timer_t _tid;		/* timer id */
56198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			int _overrun;		/* overrun count */
57198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)];
58198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			sigval_t _sigval;	/* same as below */
59198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			int _sys_private;	/* not to be passed to user */
60198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		} _timer;
61198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
62198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		/* POSIX.1b signals */
63198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		struct {
64198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			pid_t _pid;		/* sender's pid */
65198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			__ARCH_SI_UID_T _uid;	/* sender's uid */
66198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			sigval_t _sigval;
67198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		} _rt;
68198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
69198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		/* SIGCHLD */
70198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		struct {
71198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			pid_t _pid;		/* which child */
72198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			__ARCH_SI_UID_T _uid;	/* sender's uid */
73198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			int _status;		/* exit code */
74198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			clock_t _utime;
75198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			clock_t _stime;
76198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		} _sigchld;
77198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
78198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		/* IRIX SIGCHLD */
79198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		struct {
80198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			pid_t _pid;		/* which child */
81198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			clock_t _utime;
82198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			int _status;		/* exit code */
83198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			clock_t _stime;
84198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		} _irix_sigchld;
85198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
86198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
87198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		struct {
88198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			void __user *_addr; /* faulting insn/memory ref. */
89198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#ifdef __ARCH_SI_TRAPNO
90198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			int _trapno;	/* TRAP # which caused the signal */
91198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif
92198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			short _addr_lsb;
93198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		} _sigfault;
94198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
95198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		/* SIGPOLL, SIGXFSZ (To do ...)	 */
96198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		struct {
97198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			__ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */
98198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			int _fd;
99198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		} _sigpoll;
100198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	} _sifields;
101198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris} siginfo_t;
102198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
103198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/*
104198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * si_code values
105198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Again these have been chosen to be IRIX compatible.
106198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */
107198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_ASYNCIO
108198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_TIMER
109198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_MESGQ
110198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_ASYNCIO	-2	/* sent by AIO completion */
111198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_TIMER __SI_CODE(__SI_TIMER, -3) /* sent by timer expiration */
112198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_MESGQ __SI_CODE(__SI_MESGQ, -4) /* sent by real time mesq state change */
113198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
114198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
115198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif /* _UAPI_ASM_SIGINFO_H */
116