summaryrefslogtreecommitdiff
path: root/sys/compat/linux/common/linux_siginfo.h
blob: fc04533347028ae58f11ff3bbc1681950a465788 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* 	$NetBSD: linux_siginfo.h,v 1.17 2021/09/23 06:56:27 ryo Exp $	*/

/*-
 * Copyright (c) 1998 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by Eric Haszlakiewicz.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _LINUX_SIGINFO_H
#define _LINUX_SIGINFO_H

#if defined(__i386__)
#include <compat/linux/arch/i386/linux_siginfo.h>
#elif defined(__m68k__)
#include <compat/linux/arch/m68k/linux_siginfo.h>
#elif defined(__alpha__)
#include <compat/linux/arch/alpha/linux_siginfo.h>
#elif defined(__powerpc__)
#include <compat/linux/arch/powerpc/linux_siginfo.h>
#elif defined(__mips__)
#include <compat/linux/arch/mips/linux_siginfo.h>
#elif defined(__aarch64__)
#include <compat/linux/arch/aarch64/linux_siginfo.h>
#elif defined(__arm__)
#include <compat/linux/arch/arm/linux_siginfo.h>
#elif defined(__amd64__)
#include <compat/linux/arch/amd64/linux_siginfo.h>
#else
#define linux_siginfo_t siginfo_t
#endif

/* si_code values for non signal */
#define	LINUX_SI_USER		0
#define	LINUX_SI_KERNEL		0x80
#define	LINUX_SI_QUEUE		-1
#ifndef LINUX_SI_TIMER /* all except mips */
#define	LINUX_SI_TIMER		-2
#define	LINUX_SI_MESGQ		-3
#define	LINUX_SI_ASYNCIO	-4
#endif /* LINUX_SI_TIMER */
#define	LINUX_SI_SIGIO		-5
#define	LINUX_SI_TKILL		-6
#define	LINUX_SI_DETHREAD	-7

/* si_code values for SIGILL */
#define	LINUX_ILL_ILLOPC	1
#define	LINUX_ILL_ILLOPN	2
#define	LINUX_ILL_ILLADR	3
#define	LINUX_ILL_ILLTRP	4
#define	LINUX_ILL_PRVOPC	5
#define	LINUX_ILL_PRVREG	6
#define	LINUX_ILL_COPROC	7
#define	LINUX_ILL_BADSTK	8

/* si_code values for SIGFPE */
#define	LINUX_FPE_INTDIV	1
#define	LINUX_FPE_INTOVF	2
#define	LINUX_FPE_FLTDIV	3
#define	LINUX_FPE_FLTOVF	4
#define	LINUX_FPE_FLTUND	5
#define	LINUX_FPE_FLTRES	6
#define	LINUX_FPE_FLTINV	7
#define	LINUX_FPE_FLTSUB	8

/* si_code values for SIGSEGV */
#define	LINUX_SEGV_MAPERR	1
#define	LINUX_SEGV_ACCERR	2

/* si_code values for SIGBUS */
#define	LINUX_BUS_ADRALN	1
#define	LINUX_BUS_ADRERR	2
#define	LINUX_BUS_OBJERR	3

/* si_code values for SIGTRAP */
#define	LINUX_TRAP_BRKPT	1
#define	LINUX_TRAP_TRACE	2

/* si_code values for SIGCHLD */
#define	LINUX_CLD_EXITED	1
#define	LINUX_CLD_KILLED	2
#define	LINUX_CLD_DUMPED	3
#define	LINUX_CLD_TRAPPED	4
#define	LINUX_CLD_STOPPED	5
#define	LINUX_CLD_CONTINUED	6

/* si_code values for SIGPOLL */
#define	LINUX_POLL_IN		1
#define	LINUX_POLL_OUT		2
#define	LINUX_POLL_MSG		3
#define	LINUX_POLL_ERR		4
#define	LINUX_POLL_PRI		5
#define	LINUX_POLL_HUP		6

#define	LINUX_SI_FROMUSER(sp)	((sp)->si_code <= 0)
#define	LINUX_SI_FROMKERNEL(sp)	((sp)->si_code > 0)

#define lsi_pid		_sidata._kill._pid
#define lsi_uid		_sidata._kill._uid
#define lsi_status      _sidata._sigchld._status
#define lsi_utime       _sidata._sigchld._utime
#define lsi_stime       _sidata._sigchld._stime
#define lsi_value       _sidata._rt._sigval
#define lsi_sival_int   _sidata._rt._sigval.sival_int
#define lsi_sival_ptr   _sidata._rt._sigval.sival_ptr
#define lsi_addr        _sidata._sigfault._addr
#define lsi_band        _sidata._sigpoll._band
#define lsi_fd          _sidata._sigpoll._fd

void native_to_linux_siginfo(linux_siginfo_t *, const struct _ksiginfo *);

#endif /* !_LINUX_SIGINFO_H */