1 /* siginfo constants.  Linux version.
2    Copyright (C) 1997-2021 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4 
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9 
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14 
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, see
17    <https://www.gnu.org/licenses/>.  */
18 
19 #ifndef _BITS_SIGINFO_CONSTS_H
20 #define _BITS_SIGINFO_CONSTS_H 1
21 
22 #ifndef _SIGNAL_H
23 #error "Don't include <bits/siginfo-consts.h> directly; use <signal.h> instead."
24 #endif
25 
26 /* Most of these constants are uniform across all architectures, but there
27    is one exception.  */
28 #include <bits/siginfo-arch.h>
29 #ifndef __SI_ASYNCIO_AFTER_SIGIO
30 # define __SI_ASYNCIO_AFTER_SIGIO 1
31 #endif
32 
33 /* Values for `si_code'.  Positive values are reserved for kernel-generated
34    signals.  */
35 enum
36 {
37   SI_ASYNCNL = -60,		/* Sent by asynch name lookup completion.  */
38   SI_DETHREAD = -7,		/* Sent by execve killing subsidiary
39 				   threads.  */
40   SI_TKILL,			/* Sent by tkill.  */
41   SI_SIGIO,			/* Sent by queued SIGIO. */
42 #if __SI_ASYNCIO_AFTER_SIGIO
43   SI_ASYNCIO,			/* Sent by AIO completion.  */
44   SI_MESGQ,			/* Sent by real time mesq state change.  */
45   SI_TIMER,			/* Sent by timer expiration.  */
46 #else
47   SI_MESGQ,
48   SI_TIMER,
49   SI_ASYNCIO,
50 #endif
51   SI_QUEUE,			/* Sent by sigqueue.  */
52   SI_USER,			/* Sent by kill, sigsend.  */
53   SI_KERNEL = 0x80		/* Send by kernel.  */
54 
55 #define SI_ASYNCNL	SI_ASYNCNL
56 #define SI_DETHREAD	SI_DETHREAD
57 #define SI_TKILL	SI_TKILL
58 #define SI_SIGIO	SI_SIGIO
59 #define SI_ASYNCIO	SI_ASYNCIO
60 #define SI_MESGQ	SI_MESGQ
61 #define SI_TIMER	SI_TIMER
62 #define SI_ASYNCIO	SI_ASYNCIO
63 #define SI_QUEUE	SI_QUEUE
64 #define SI_USER		SI_USER
65 #define SI_KERNEL	SI_KERNEL
66 };
67 
68 
69 # if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
70 /* `si_code' values for SIGILL signal.  */
71 enum
72 {
73   ILL_ILLOPC = 1,		/* Illegal opcode.  */
74 #  define ILL_ILLOPC	ILL_ILLOPC
75   ILL_ILLOPN,			/* Illegal operand.  */
76 #  define ILL_ILLOPN	ILL_ILLOPN
77   ILL_ILLADR,			/* Illegal addressing mode.  */
78 #  define ILL_ILLADR	ILL_ILLADR
79   ILL_ILLTRP,			/* Illegal trap. */
80 #  define ILL_ILLTRP	ILL_ILLTRP
81   ILL_PRVOPC,			/* Privileged opcode.  */
82 #  define ILL_PRVOPC	ILL_PRVOPC
83   ILL_PRVREG,			/* Privileged register.  */
84 #  define ILL_PRVREG	ILL_PRVREG
85   ILL_COPROC,			/* Coprocessor error.  */
86 #  define ILL_COPROC	ILL_COPROC
87   ILL_BADSTK,			/* Internal stack error.  */
88 #  define ILL_BADSTK	ILL_BADSTK
89   ILL_BADIADDR			/* Unimplemented instruction address.  */
90 #  define ILL_BADIADDR ILL_BADIADDR
91 };
92 
93 /* `si_code' values for SIGFPE signal.  */
94 enum
95 {
96   FPE_INTDIV = 1,		/* Integer divide by zero.  */
97 #  define FPE_INTDIV	FPE_INTDIV
98   FPE_INTOVF,			/* Integer overflow.  */
99 #  define FPE_INTOVF	FPE_INTOVF
100   FPE_FLTDIV,			/* Floating point divide by zero.  */
101 #  define FPE_FLTDIV	FPE_FLTDIV
102   FPE_FLTOVF,			/* Floating point overflow.  */
103 #  define FPE_FLTOVF	FPE_FLTOVF
104   FPE_FLTUND,			/* Floating point underflow.  */
105 #  define FPE_FLTUND	FPE_FLTUND
106   FPE_FLTRES,			/* Floating point inexact result.  */
107 #  define FPE_FLTRES	FPE_FLTRES
108   FPE_FLTINV,			/* Floating point invalid operation.  */
109 #  define FPE_FLTINV	FPE_FLTINV
110   FPE_FLTSUB,			/* Subscript out of range.  */
111 #  define FPE_FLTSUB	FPE_FLTSUB
112   FPE_FLTUNK = 14,		/* Undiagnosed floating-point exception.  */
113 #  define FPE_FLTUNK	FPE_FLTUNK
114   FPE_CONDTRAP			/* Trap on condition.  */
115 #  define FPE_CONDTRAP	FPE_CONDTRAP
116 };
117 
118 /* `si_code' values for SIGSEGV signal.  */
119 enum
120 {
121   SEGV_MAPERR = 1,		/* Address not mapped to object.  */
122 #  define SEGV_MAPERR	SEGV_MAPERR
123   SEGV_ACCERR,			/* Invalid permissions for mapped object.  */
124 #  define SEGV_ACCERR	SEGV_ACCERR
125   SEGV_BNDERR,			/* Bounds checking failure.  */
126 #  define SEGV_BNDERR	SEGV_BNDERR
127   SEGV_PKUERR,			/* Protection key checking failure.  */
128 #  define SEGV_PKUERR	SEGV_PKUERR
129   SEGV_ACCADI,			/* ADI not enabled for mapped object.  */
130 #  define SEGV_ACCADI	SEGV_ACCADI
131   SEGV_ADIDERR,			/* Disrupting MCD error.  */
132 #  define SEGV_ADIDERR	SEGV_ADIDERR
133   SEGV_ADIPERR,			/* Precise MCD exception.  */
134 #  define SEGV_ADIPERR	SEGV_ADIPERR
135   SEGV_MTEAERR,			/* Asynchronous ARM MTE error.  */
136 #  define SEGV_MTEAERR	SEGV_MTEAERR
137   SEGV_MTESERR			/* Synchronous ARM MTE exception.  */
138 #  define SEGV_MTESERR	SEGV_MTESERR
139 };
140 
141 /* `si_code' values for SIGBUS signal.  */
142 enum
143 {
144   BUS_ADRALN = 1,		/* Invalid address alignment.  */
145 #  define BUS_ADRALN	BUS_ADRALN
146   BUS_ADRERR,			/* Non-existant physical address.  */
147 #  define BUS_ADRERR	BUS_ADRERR
148   BUS_OBJERR,			/* Object specific hardware error.  */
149 #  define BUS_OBJERR	BUS_OBJERR
150   BUS_MCEERR_AR,		/* Hardware memory error: action required.  */
151 #  define BUS_MCEERR_AR	BUS_MCEERR_AR
152   BUS_MCEERR_AO			/* Hardware memory error: action optional.  */
153 #  define BUS_MCEERR_AO	BUS_MCEERR_AO
154 };
155 # endif
156 
157 # ifdef __USE_XOPEN_EXTENDED
158 /* `si_code' values for SIGTRAP signal.  */
159 enum
160 {
161   TRAP_BRKPT = 1,		/* Process breakpoint.  */
162 #  define TRAP_BRKPT	TRAP_BRKPT
163   TRAP_TRACE,			/* Process trace trap.  */
164 #  define TRAP_TRACE	TRAP_TRACE
165   TRAP_BRANCH,			/* Process taken branch trap.  */
166 #  define TRAP_BRANCH	TRAP_BRANCH
167   TRAP_HWBKPT,			/* Hardware breakpoint/watchpoint.  */
168 #  define TRAP_HWBKPT	TRAP_HWBKPT
169   TRAP_UNK			/* Undiagnosed trap.  */
170 #  define TRAP_UNK	TRAP_UNK
171 };
172 # endif
173 
174 # if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
175 /* `si_code' values for SIGCHLD signal.  */
176 enum
177 {
178   CLD_EXITED = 1,		/* Child has exited.  */
179 #  define CLD_EXITED	CLD_EXITED
180   CLD_KILLED,			/* Child was killed.  */
181 #  define CLD_KILLED	CLD_KILLED
182   CLD_DUMPED,			/* Child terminated abnormally.  */
183 #  define CLD_DUMPED	CLD_DUMPED
184   CLD_TRAPPED,			/* Traced child has trapped.  */
185 #  define CLD_TRAPPED	CLD_TRAPPED
186   CLD_STOPPED,			/* Child has stopped.  */
187 #  define CLD_STOPPED	CLD_STOPPED
188   CLD_CONTINUED			/* Stopped child has continued.  */
189 #  define CLD_CONTINUED	CLD_CONTINUED
190 };
191 
192 /* `si_code' values for SIGPOLL signal.  */
193 enum
194 {
195   POLL_IN = 1,			/* Data input available.  */
196 #  define POLL_IN	POLL_IN
197   POLL_OUT,			/* Output buffers available.  */
198 #  define POLL_OUT	POLL_OUT
199   POLL_MSG,			/* Input message available.   */
200 #  define POLL_MSG	POLL_MSG
201   POLL_ERR,			/* I/O error.  */
202 #  define POLL_ERR	POLL_ERR
203   POLL_PRI,			/* High priority input available.  */
204 #  define POLL_PRI	POLL_PRI
205   POLL_HUP			/* Device disconnected.  */
206 #  define POLL_HUP	POLL_HUP
207 };
208 # endif
209 
210 /* Architectures might also add architecture-specific constants.
211    These are all considered GNU extensions.  */
212 #ifdef __USE_GNU
213 # include <bits/siginfo-consts-arch.h>
214 #endif
215 
216 #endif
217