xref: /netbsd-src/sys/compat/linux/arch/arm/linux_siginfo.h (revision 55d5cc9d0d0d3202f2dfe5ceb654ac526bb0475c)
1*55d5cc9dSnjoly /*	$NetBSD: linux_siginfo.h,v 1.2 2009/06/08 11:46:07 njoly Exp $	*/
2*55d5cc9dSnjoly 
3*55d5cc9dSnjoly /*-
4*55d5cc9dSnjoly  * This code is derived from software contributed to The NetBSD Foundation
5*55d5cc9dSnjoly  * by Eric Haszlakiewicz.
6*55d5cc9dSnjoly  *
7*55d5cc9dSnjoly  * Redistribution and use in source and binary forms, with or without
8*55d5cc9dSnjoly  * modification, are permitted provided that the following conditions
9*55d5cc9dSnjoly  * are met:
10*55d5cc9dSnjoly  * 1. Redistributions of source code must retain the above copyright
11*55d5cc9dSnjoly  *    notice, this list of conditions and the following disclaimer.
12*55d5cc9dSnjoly  * 2. Redistributions in binary form must reproduce the above copyright
13*55d5cc9dSnjoly  *    notice, this list of conditions and the following disclaimer in the
14*55d5cc9dSnjoly  *    documentation and/or other materials provided with the distribution.
15*55d5cc9dSnjoly  *
16*55d5cc9dSnjoly  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
17*55d5cc9dSnjoly  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
18*55d5cc9dSnjoly  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19*55d5cc9dSnjoly  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
20*55d5cc9dSnjoly  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21*55d5cc9dSnjoly  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22*55d5cc9dSnjoly  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23*55d5cc9dSnjoly  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24*55d5cc9dSnjoly  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25*55d5cc9dSnjoly  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26*55d5cc9dSnjoly  * POSSIBILITY OF SUCH DAMAGE.
27*55d5cc9dSnjoly  */
28*55d5cc9dSnjoly 
29*55d5cc9dSnjoly #ifndef _ARM_LINUX_SIGINFO_H
30*55d5cc9dSnjoly #define _ARM_LINUX_SIGINFO_H
31*55d5cc9dSnjoly 
32*55d5cc9dSnjoly typedef union linux_sigval {
33*55d5cc9dSnjoly 	int	sival_int;
34*55d5cc9dSnjoly 	void	*sival_ptr;
35*55d5cc9dSnjoly } linux_sigval_t;
36*55d5cc9dSnjoly 
37*55d5cc9dSnjoly #define SI_MAX_SIZE	128
38*55d5cc9dSnjoly #define SI_PAD_SIZE	((SI_MAX_SIZE/sizeof(int)) - 3)
39*55d5cc9dSnjoly 
40*55d5cc9dSnjoly typedef struct linux_siginfo {
41*55d5cc9dSnjoly 	int	lsi_signo;
42*55d5cc9dSnjoly 	int	lsi_errno;
43*55d5cc9dSnjoly 	int	lsi_code;
44*55d5cc9dSnjoly 	union {
45*55d5cc9dSnjoly 		int	_pad[SI_PAD_SIZE];
46*55d5cc9dSnjoly 
47*55d5cc9dSnjoly 		/* kill() */
48*55d5cc9dSnjoly 		struct {
49*55d5cc9dSnjoly 			linux_pid_t	_pid;
50*55d5cc9dSnjoly 			linux_uid_t	_uid;
51*55d5cc9dSnjoly 		} _kill;
52*55d5cc9dSnjoly 
53*55d5cc9dSnjoly 		/* POSIX.1b signals */
54*55d5cc9dSnjoly 		struct {
55*55d5cc9dSnjoly 			linux_pid_t	_pid;
56*55d5cc9dSnjoly 			linux_uid_t	_uid;
57*55d5cc9dSnjoly 			linux_sigval_t	_sigval;
58*55d5cc9dSnjoly 		} _rt;
59*55d5cc9dSnjoly 
60*55d5cc9dSnjoly 		/* POSIX.1b timers */
61*55d5cc9dSnjoly 		struct {
62*55d5cc9dSnjoly 			unsigned int	_timer1;
63*55d5cc9dSnjoly 			unsigned int	_timer2;
64*55d5cc9dSnjoly 		} _timer;
65*55d5cc9dSnjoly 
66*55d5cc9dSnjoly 		/* SIGCHLD */
67*55d5cc9dSnjoly 		struct {
68*55d5cc9dSnjoly 			linux_pid_t	_pid;
69*55d5cc9dSnjoly 			linux_uid_t	_uid;
70*55d5cc9dSnjoly 			int		_status;
71*55d5cc9dSnjoly 			linux_clock_t	_utime;
72*55d5cc9dSnjoly 			linux_clock_t	_stime;
73*55d5cc9dSnjoly 		} _sigchld;
74*55d5cc9dSnjoly 
75*55d5cc9dSnjoly 		/* SIGPOLL */
76*55d5cc9dSnjoly 		struct {
77*55d5cc9dSnjoly 			int		_band;
78*55d5cc9dSnjoly 			int		_fd;
79*55d5cc9dSnjoly 		} _sigpoll;
80*55d5cc9dSnjoly 
81*55d5cc9dSnjoly 		/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
82*55d5cc9dSnjoly 		struct {
83*55d5cc9dSnjoly 			void		*_addr;
84*55d5cc9dSnjoly 		} _sigfault;
85*55d5cc9dSnjoly 	} _sidata;
86*55d5cc9dSnjoly } linux_siginfo_t;
87*55d5cc9dSnjoly 
88*55d5cc9dSnjoly #endif /* !_ARM_LINUX_SIGINFO_H */
89