siginfo.h revision 12e1f28cce28271eb109a5bae818a804f0c3bb27
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 * Careful to keep union _sifields from shifting ...
20198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */
21e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#if _MIPS_SZLONG == 32
22198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int))
23e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#elif _MIPS_SZLONG == 64
24198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
25e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#else
26e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#error _MIPS_SZLONG neither 32 nor 64
27198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif
28198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
29e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define __ARCH_SIGSYS
30e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris
3112e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris#include <uapi/asm-generic/siginfo.h>
32198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
3312e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris/* We can't use generic siginfo_t, because our si_code and si_errno are swapped */
34198084289b68143fd4ea72dec91515eec00d700fChristopher Ferristypedef struct siginfo {
35198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	int si_signo;
36198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	int si_code;
37198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	int si_errno;
38198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3];
39198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
40198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	union {
41198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		int _pad[SI_PAD_SIZE];
42198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
43198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		/* kill() */
44198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		struct {
45198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			pid_t _pid;		/* sender's pid */
46198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			__ARCH_SI_UID_T _uid;	/* sender's uid */
47198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		} _kill;
48198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
49198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		/* POSIX.1b timers */
50198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		struct {
51198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			timer_t _tid;		/* timer id */
52198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			int _overrun;		/* overrun count */
53198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)];
54198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			sigval_t _sigval;	/* same as below */
55198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			int _sys_private;	/* not to be passed to user */
56198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		} _timer;
57198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
58198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		/* POSIX.1b signals */
59198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		struct {
60198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			pid_t _pid;		/* sender's pid */
61198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			__ARCH_SI_UID_T _uid;	/* sender's uid */
62198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			sigval_t _sigval;
63198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		} _rt;
64198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
65198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		/* SIGCHLD */
66198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		struct {
67198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			pid_t _pid;		/* which child */
68198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			__ARCH_SI_UID_T _uid;	/* sender's uid */
69198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			int _status;		/* exit code */
70198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			clock_t _utime;
71198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			clock_t _stime;
72198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		} _sigchld;
73198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
74198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		/* IRIX SIGCHLD */
75198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		struct {
76198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			pid_t _pid;		/* which child */
77198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			clock_t _utime;
78198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			int _status;		/* exit code */
79198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			clock_t _stime;
80198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		} _irix_sigchld;
81198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
82198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
83198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris		struct {
84198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			void __user *_addr; /* faulting insn/memory ref. */
85198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#ifdef __ARCH_SI_TRAPNO
86198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			int _trapno;	/* TRAP # which caused the signal */
87198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif
88198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris			short _addr_lsb;
8912e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris			struct {
9012e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris				void __user *_lower;
9112e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris				void __user *_upper;
9212e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris			} _addr_bnd;
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;
100e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris
101e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris		/* SIGSYS */
102e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris		struct {
103e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris			void __user *_call_addr; /* calling user insn */
104e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris			int _syscall;	/* triggering system call number */
105e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris			unsigned int _arch;	/* AUDIT_ARCH_* of syscall */
106e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris		} _sigsys;
107198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris	} _sifields;
108198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris} siginfo_t;
109198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
110198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/*
111198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * si_code values
112198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Again these have been chosen to be IRIX compatible.
113198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */
114198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_ASYNCIO
115198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_TIMER
116198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_MESGQ
117198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_ASYNCIO	-2	/* sent by AIO completion */
118198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_TIMER __SI_CODE(__SI_TIMER, -3) /* sent by timer expiration */
119198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_MESGQ __SI_CODE(__SI_MESGQ, -4) /* sent by real time mesq state change */
120198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
12112e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris#include <asm-generic/siginfo.h>
122198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris
123198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif /* _UAPI_ASM_SIGINFO_H */
124