xref: /dragonfly/sys/sys/_siginfo.h (revision 33346040)
127622b73SSascha Wildner /*-
227622b73SSascha Wildner  * Copyright (c) 2019 The DragonFly Project.  All rights reserved.
327622b73SSascha Wildner  *
427622b73SSascha Wildner  * Redistribution and use in source and binary forms, with or without
527622b73SSascha Wildner  * modification, are permitted provided that the following conditions
627622b73SSascha Wildner  * are met:
727622b73SSascha Wildner  *
827622b73SSascha Wildner  * 1. Redistributions of source code must retain the above copyright
927622b73SSascha Wildner  *    notice, this list of conditions and the following disclaimer.
1027622b73SSascha Wildner  * 2. Redistributions in binary form must reproduce the above copyright
1127622b73SSascha Wildner  *    notice, this list of conditions and the following disclaimer in
1227622b73SSascha Wildner  *    the documentation and/or other materials provided with the
1327622b73SSascha Wildner  *    distribution.
1427622b73SSascha Wildner  * 3. Neither the name of The DragonFly Project nor the names of its
1527622b73SSascha Wildner  *    contributors may be used to endorse or promote products derived
1627622b73SSascha Wildner  *    from this software without specific, prior written permission.
1727622b73SSascha Wildner  *
1827622b73SSascha Wildner  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1927622b73SSascha Wildner  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2027622b73SSascha Wildner  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
2127622b73SSascha Wildner  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
2227622b73SSascha Wildner  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
2327622b73SSascha Wildner  * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
2427622b73SSascha Wildner  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
2527622b73SSascha Wildner  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
2627622b73SSascha Wildner  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2727622b73SSascha Wildner  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
2827622b73SSascha Wildner  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2927622b73SSascha Wildner  * SUCH DAMAGE.
3027622b73SSascha Wildner  */
3127622b73SSascha Wildner 
3227622b73SSascha Wildner #ifndef _SYS__SIGINFO_H_
3327622b73SSascha Wildner #define	_SYS__SIGINFO_H_
3427622b73SSascha Wildner 
3527622b73SSascha Wildner #include <sys/cdefs.h>
36*33346040SSascha Wildner #include <machine/stdint.h>
3727622b73SSascha Wildner 
3827622b73SSascha Wildner #ifndef _PID_T_DECLARED
3927622b73SSascha Wildner typedef	__pid_t		pid_t;
4027622b73SSascha Wildner #define	_PID_T_DECLARED
4127622b73SSascha Wildner #endif
4227622b73SSascha Wildner 
4327622b73SSascha Wildner #ifndef _UID_T_DECLARED
4427622b73SSascha Wildner typedef	__uint32_t	uid_t;		/* user id */
4527622b73SSascha Wildner #define	_UID_T_DECLARED
4627622b73SSascha Wildner #endif
4727622b73SSascha Wildner 
4827622b73SSascha Wildner #if __POSIX_VISIBLE >= 199309 || __XSI_VISIBLE >= 500
4927622b73SSascha Wildner union sigval {
5027622b73SSascha Wildner 	int	sival_int;
5127622b73SSascha Wildner 	void	*sival_ptr;
5227622b73SSascha Wildner };
5327622b73SSascha Wildner #endif
5427622b73SSascha Wildner 
5527622b73SSascha Wildner #if __POSIX_VISIBLE
5627622b73SSascha Wildner /** si_code */
5727622b73SSascha Wildner #define	SI_USER		0	/* Sent by kill(2)			*/
5827622b73SSascha Wildner #define	SI_QUEUE	-1	/* Sent by the sigqueue(2)		*/
5927622b73SSascha Wildner #define	SI_TIMER	-2	/* Generated by expiration of a timer	*/
6027622b73SSascha Wildner 				/* set by timer_settime(2)		*/
6127622b73SSascha Wildner #define	SI_ASYNCIO	-3	/* Generated by completion of an	*/
6227622b73SSascha Wildner 				/* asynchronous I/O signal		*/
6327622b73SSascha Wildner #define	SI_MESGQ	-4	/* Generated by arrival of a message on	*/
6427622b73SSascha Wildner 				/* an empty message queue		*/
6527622b73SSascha Wildner #endif
6627622b73SSascha Wildner 
6727622b73SSascha Wildner #if __POSIX_VISIBLE >= 199309 || __XSI_VISIBLE
6827622b73SSascha Wildner /*
6927622b73SSascha Wildner  * si_code stuff
7027622b73SSascha Wildner  */
7127622b73SSascha Wildner /* SIGILL */
7227622b73SSascha Wildner #define	ILL_ILLOPC	1	/* Illegal opcode			*/
7327622b73SSascha Wildner #define	ILL_ILLOPN	2	/* Illegal operand			*/
7427622b73SSascha Wildner #define	ILL_ILLADR	3	/* Illegal addressing mode		*/
7527622b73SSascha Wildner #define	ILL_ILLTRP	4	/* Illegal trap				*/
7627622b73SSascha Wildner #define	ILL_PRVOPC	5	/* Privileged opcode			*/
7727622b73SSascha Wildner #define	ILL_PRVREG	6	/* Privileged register			*/
7827622b73SSascha Wildner #define	ILL_COPROC	7	/* Coprocessor error			*/
7927622b73SSascha Wildner #define	ILL_BADSTK	8	/* Internal stack error			*/
8027622b73SSascha Wildner 
8127622b73SSascha Wildner /* SIGFPE */
8227622b73SSascha Wildner #define	FPE_INTOVF	1	/* Integer overflow			*/
8327622b73SSascha Wildner #define	FPE_INTDIV	2	/* Integer divide by zero		*/
8427622b73SSascha Wildner #define	FPE_FLTDIV	3	/* Floating point divide by zero	*/
8527622b73SSascha Wildner #define	FPE_FLTOVF	4	/* Floating point overflow		*/
8627622b73SSascha Wildner #define	FPE_FLTUND	5	/* Floating point underflow		*/
8727622b73SSascha Wildner #define	FPE_FLTRES	6	/* Floating point inexact result	*/
8827622b73SSascha Wildner #define	FPE_FLTINV	7	/* Invalid Floating point operation	*/
8927622b73SSascha Wildner #define	FPE_FLTSUB	8	/* Subscript out of range		*/
9027622b73SSascha Wildner 
9127622b73SSascha Wildner /* SIGSEGV */
9227622b73SSascha Wildner #define	SEGV_MAPERR	1	/* Address not mapped to object		*/
9327622b73SSascha Wildner #define	SEGV_ACCERR	2	/* Invalid permissions for mapped object*/
9427622b73SSascha Wildner 
9527622b73SSascha Wildner /* SIGBUS */
9627622b73SSascha Wildner #define	BUS_ADRALN	1	/* Invalid address alignment		*/
9727622b73SSascha Wildner #define	BUS_ADRERR	2	/* Non-existent physical address	*/
9827622b73SSascha Wildner #define	BUS_OBJERR	3	/* Object specific hardware error	*/
9927622b73SSascha Wildner 
10027622b73SSascha Wildner /* SIGTRAP */
10127622b73SSascha Wildner #define	TRAP_BRKPT	1	/* Process breakpoint			*/
10227622b73SSascha Wildner #define	TRAP_TRACE	2	/* Process trace trap			*/
10327622b73SSascha Wildner 
10427622b73SSascha Wildner /* SIGCHLD */
10527622b73SSascha Wildner #define	CLD_EXITED	1	/* Child has exited			*/
10627622b73SSascha Wildner #define	CLD_KILLED	2	/* Child has terminated abnormally but	*/
10727622b73SSascha Wildner 				/* did not create a core file		*/
10827622b73SSascha Wildner #define	CLD_DUMPED	3	/* Child has terminated abnormally and	*/
10927622b73SSascha Wildner 				/* created a core file			*/
11027622b73SSascha Wildner #define	CLD_TRAPPED	4	/* Traced child has trapped		*/
11127622b73SSascha Wildner #define	CLD_STOPPED	5	/* Child has stopped			*/
11227622b73SSascha Wildner #define	CLD_CONTINUED	6	/* Stopped child has continued		*/
11327622b73SSascha Wildner 
11427622b73SSascha Wildner /* SIGPOLL */
11527622b73SSascha Wildner #define	POLL_IN		1	/* Data input available			*/
11627622b73SSascha Wildner #define	POLL_OUT	2	/* Output buffers available		*/
11727622b73SSascha Wildner #define	POLL_MSG	3	/* Input message available		*/
11827622b73SSascha Wildner #define	POLL_ERR	4	/* I/O Error				*/
11927622b73SSascha Wildner #define	POLL_PRI	5	/* High priority input available	*/
12027622b73SSascha Wildner #define	POLL_HUP	6	/* Device disconnected			*/
12127622b73SSascha Wildner 
12227622b73SSascha Wildner typedef	struct __siginfo {
12327622b73SSascha Wildner 	int	si_signo;		/* signal number */
12427622b73SSascha Wildner 	int	si_errno;		/* errno association */
12527622b73SSascha Wildner 	/*
12627622b73SSascha Wildner 	 * Cause of signal, one of the SI_ macros or signal-specific
12727622b73SSascha Wildner 	 * values, i.e. one of the FPE_... values for SIGFPE. This
12827622b73SSascha Wildner 	 * value is equivalent to the second argument to an old-style
12927622b73SSascha Wildner 	 * FreeBSD signal handler.
13027622b73SSascha Wildner 	 */
13127622b73SSascha Wildner 	int	si_code;		/* signal code */
13227622b73SSascha Wildner 	pid_t	si_pid;			/* sending process */
13327622b73SSascha Wildner 	uid_t	si_uid;			/* sender's ruid */
13427622b73SSascha Wildner 	int	si_status;		/* exit value */
13527622b73SSascha Wildner 	void	*si_addr;		/* faulting instruction */
13627622b73SSascha Wildner 	union sigval si_value;		/* signal value */
13727622b73SSascha Wildner 	long	si_band;		/* band event for SIGPOLL */
13827622b73SSascha Wildner 	int	__spare__[7];		/* gimme some slack */
13927622b73SSascha Wildner } siginfo_t;
14027622b73SSascha Wildner #endif /* __POSIX_VISIBLE >= 199309 || __XSI_VISIBLE */
14127622b73SSascha Wildner 
14227622b73SSascha Wildner #endif /* !_SYS__SIGINFO_H_ */
143