xref: /minix/include/signal.h (revision 0a6a1f1d)
1*0a6a1f1dSLionel Sambuc /*	$NetBSD: signal.h,v 1.55 2015/07/31 12:51:32 kamil Exp $	*/
22fe8fb19SBen Gras 
32fe8fb19SBen Gras /*-
42fe8fb19SBen Gras  * Copyright (c) 1991, 1993
52fe8fb19SBen Gras  *	The Regents of the University of California.  All rights reserved.
62fe8fb19SBen Gras  *
72fe8fb19SBen Gras  * Redistribution and use in source and binary forms, with or without
82fe8fb19SBen Gras  * modification, are permitted provided that the following conditions
92fe8fb19SBen Gras  * are met:
102fe8fb19SBen Gras  * 1. Redistributions of source code must retain the above copyright
112fe8fb19SBen Gras  *    notice, this list of conditions and the following disclaimer.
122fe8fb19SBen Gras  * 2. Redistributions in binary form must reproduce the above copyright
132fe8fb19SBen Gras  *    notice, this list of conditions and the following disclaimer in the
142fe8fb19SBen Gras  *    documentation and/or other materials provided with the distribution.
152fe8fb19SBen Gras  * 3. Neither the name of the University nor the names of its contributors
162fe8fb19SBen Gras  *    may be used to endorse or promote products derived from this software
172fe8fb19SBen Gras  *    without specific prior written permission.
182fe8fb19SBen Gras  *
192fe8fb19SBen Gras  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
202fe8fb19SBen Gras  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
212fe8fb19SBen Gras  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
222fe8fb19SBen Gras  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
232fe8fb19SBen Gras  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
242fe8fb19SBen Gras  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
252fe8fb19SBen Gras  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
262fe8fb19SBen Gras  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
272fe8fb19SBen Gras  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
282fe8fb19SBen Gras  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
292fe8fb19SBen Gras  * SUCH DAMAGE.
302fe8fb19SBen Gras  *
312fe8fb19SBen Gras  *	@(#)signal.h	8.3 (Berkeley) 3/30/94
329865aeaaSBen Gras  */
339865aeaaSBen Gras 
342fe8fb19SBen Gras #ifndef _SIGNAL_H_
352fe8fb19SBen Gras #define _SIGNAL_H_
369865aeaaSBen Gras 
372fe8fb19SBen Gras #include <sys/cdefs.h>
382fe8fb19SBen Gras #include <sys/featuretest.h>
392fe8fb19SBen Gras 
402fe8fb19SBen Gras #if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
412fe8fb19SBen Gras     defined(_NETBSD_SOURCE)
422fe8fb19SBen Gras #include <sys/types.h>
439865aeaaSBen Gras #endif
449865aeaaSBen Gras 
452fe8fb19SBen Gras #include <sys/signal.h>
469865aeaaSBen Gras 
472fe8fb19SBen Gras #if defined(_NETBSD_SOURCE)
482fe8fb19SBen Gras extern const char *const *sys_signame __RENAME(__sys_signame14);
492fe8fb19SBen Gras #ifndef __SYS_SIGLIST_DECLARED
502fe8fb19SBen Gras #define __SYS_SIGLIST_DECLARED
512fe8fb19SBen Gras /* also in unistd.h */
522fe8fb19SBen Gras extern const char *const *sys_siglist __RENAME(__sys_siglist14);
532fe8fb19SBen Gras #endif /* __SYS_SIGLIST_DECLARED */
542fe8fb19SBen Gras extern const int sys_nsig __RENAME(__sys_nsig14);
559865aeaaSBen Gras #endif
569865aeaaSBen Gras 
572fe8fb19SBen Gras __BEGIN_DECLS
582fe8fb19SBen Gras int	raise(int);
592fe8fb19SBen Gras #if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
602fe8fb19SBen Gras     defined(_NETBSD_SOURCE)
612fe8fb19SBen Gras int	kill(pid_t, int);
622fe8fb19SBen Gras int	__libc_sigaction14(int, const struct sigaction * __restrict,
632fe8fb19SBen Gras 	    struct sigaction * __restrict);
649865aeaaSBen Gras 
652fe8fb19SBen Gras #if (_POSIX_C_SOURCE - 0L) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
662fe8fb19SBen Gras     defined(_NETBSD_SOURCE)
672fe8fb19SBen Gras int	pthread_sigmask(int, const sigset_t * __restrict,
682fe8fb19SBen Gras 	    sigset_t * __restrict);
6984d9c625SLionel Sambuc #if !defined(__minix)
702fe8fb19SBen Gras int	pthread_kill(pthread_t, int);
7184d9c625SLionel Sambuc #endif /* !defined(__minix) */
722fe8fb19SBen Gras int	__libc_thr_sigsetmask(int, const sigset_t * __restrict,
732fe8fb19SBen Gras 	    sigset_t * __restrict);
742fe8fb19SBen Gras #ifndef __LIBPTHREAD_SOURCE__
752fe8fb19SBen Gras #define	pthread_sigmask		__libc_thr_sigsetmask
762fe8fb19SBen Gras #endif /* __LIBPTHREAD_SOURCE__ */
77d430c4faSPhilip Homburg #endif
78d430c4faSPhilip Homburg 
792fe8fb19SBen Gras #ifndef __LIBC12_SOURCE__
802fe8fb19SBen Gras int	sigaction(int, const struct sigaction * __restrict,
812fe8fb19SBen Gras     struct sigaction * __restrict) __RENAME(__sigaction14);
829fb2800fSLionel Sambuc #if defined(__minix) && !defined(_SYSTEM)
832fe8fb19SBen Gras int	sigaddset(sigset_t *, int) __RENAME(__sigaddset14);
842fe8fb19SBen Gras int	sigdelset(sigset_t *, int) __RENAME(__sigdelset14);
852fe8fb19SBen Gras int	sigemptyset(sigset_t *) __RENAME(__sigemptyset14);
862fe8fb19SBen Gras int	sigfillset(sigset_t *) __RENAME(__sigfillset14);
872fe8fb19SBen Gras int	sigismember(const sigset_t *, int) __RENAME(__sigismember14);
8884d9c625SLionel Sambuc #endif /* defined(__minix) && !defined(_SYSTEM) */
892fe8fb19SBen Gras int	sigpending(sigset_t *) __RENAME(__sigpending14);
902fe8fb19SBen Gras int	sigprocmask(int, const sigset_t * __restrict, sigset_t * __restrict)
912fe8fb19SBen Gras     __RENAME(__sigprocmask14);
922fe8fb19SBen Gras int	sigsuspend(const sigset_t *) __RENAME(__sigsuspend14);
932fe8fb19SBen Gras 
942fe8fb19SBen Gras #if defined(__c99inline) || defined(__SIGSETOPS_BODY)
952fe8fb19SBen Gras 
962fe8fb19SBen Gras #if defined(__SIGSETOPS_BODY)
972fe8fb19SBen Gras #undef	__c99inline
982fe8fb19SBen Gras #define	__c99inline
99b423d7b4SDavid van Moolenbroek #endif
100b423d7b4SDavid van Moolenbroek 
1012fe8fb19SBen Gras /* note: this appears in both errno.h and signal.h */
1022fe8fb19SBen Gras #ifndef __errno
1032fe8fb19SBen Gras int *__errno(void);
1042fe8fb19SBen Gras #define __errno __errno
1059865aeaaSBen Gras #endif
1069865aeaaSBen Gras 
1072fe8fb19SBen Gras /* the same as "errno" - but signal.h is not allowed to define that */
1082fe8fb19SBen Gras #ifndef ___errno
1092fe8fb19SBen Gras #define ___errno (*__errno())
1102fe8fb19SBen Gras #endif
1112fe8fb19SBen Gras 
1129fb2800fSLionel Sambuc #if defined(__minix) && defined(_SYSTEM)
1139fb2800fSLionel Sambuc /* In Minix system code, use alternate versions of the signal mask
1149fb2800fSLionel Sambuc  * manipulation functions that do not check signal numbers vs. _NSIG.
1159fb2800fSLionel Sambuc  * _NSIG can then represent the user-visible signal set.
1169fb2800fSLionel Sambuc  */
1179fb2800fSLionel Sambuc #define sigaddset(set, sig)    __sigaddset((set), (sig))
1189fb2800fSLionel Sambuc #define sigdelset(set, sig)    __sigdelset((set), (sig))
1199fb2800fSLionel Sambuc #define sigemptyset(set)       __sigemptyset((set))
1209fb2800fSLionel Sambuc #define sigfillset(set)                __sigfillset((set))
1219fb2800fSLionel Sambuc #define sigismember(set, sig)  __sigismember((set), (sig))
1229fb2800fSLionel Sambuc #else
1232fe8fb19SBen Gras __c99inline int
sigaddset(sigset_t * set,int signo)1242fe8fb19SBen Gras sigaddset(sigset_t *set, int signo)
1252fe8fb19SBen Gras {
1262fe8fb19SBen Gras 	if (signo <= 0 || signo >= _NSIG) {
1272fe8fb19SBen Gras 		___errno = 22;			/* EINVAL */
1282fe8fb19SBen Gras 		return (-1);
1292fe8fb19SBen Gras 	}
1302fe8fb19SBen Gras 	__sigaddset(set, signo);
1312fe8fb19SBen Gras 	return (0);
1322fe8fb19SBen Gras }
1332fe8fb19SBen Gras 
1342fe8fb19SBen Gras __c99inline int
sigdelset(sigset_t * set,int signo)1352fe8fb19SBen Gras sigdelset(sigset_t *set, int signo)
1362fe8fb19SBen Gras {
1372fe8fb19SBen Gras 	if (signo <= 0 || signo >= _NSIG) {
1382fe8fb19SBen Gras 		___errno = 22;			/* EINVAL */
1392fe8fb19SBen Gras 		return (-1);
1402fe8fb19SBen Gras 	}
1412fe8fb19SBen Gras 	__sigdelset(set, signo);
1422fe8fb19SBen Gras 	return (0);
1432fe8fb19SBen Gras }
1442fe8fb19SBen Gras 
1452fe8fb19SBen Gras __c99inline int
sigismember(const sigset_t * set,int signo)1462fe8fb19SBen Gras sigismember(const sigset_t *set, int signo)
1472fe8fb19SBen Gras {
1482fe8fb19SBen Gras 	if (signo <= 0 || signo >= _NSIG) {
1492fe8fb19SBen Gras 		___errno = 22;			/* EINVAL */
1502fe8fb19SBen Gras 		return (-1);
1512fe8fb19SBen Gras 	}
1522fe8fb19SBen Gras 	return (__sigismember(set, signo));
1532fe8fb19SBen Gras }
1542fe8fb19SBen Gras 
1552fe8fb19SBen Gras __c99inline int
sigemptyset(sigset_t * set)1562fe8fb19SBen Gras sigemptyset(sigset_t *set)
1572fe8fb19SBen Gras {
1582fe8fb19SBen Gras 	__sigemptyset(set);
1592fe8fb19SBen Gras 	return (0);
1602fe8fb19SBen Gras }
1612fe8fb19SBen Gras 
1622fe8fb19SBen Gras __c99inline int
sigfillset(sigset_t * set)1632fe8fb19SBen Gras sigfillset(sigset_t *set)
1642fe8fb19SBen Gras {
1652fe8fb19SBen Gras 	__sigfillset(set);
1662fe8fb19SBen Gras 	return (0);
1672fe8fb19SBen Gras }
16884d9c625SLionel Sambuc #endif /* defined(__minix) && defined(_SYSTEM) */
1692fe8fb19SBen Gras #endif /* __c99inline */
1702fe8fb19SBen Gras #endif /* !__LIBC12_SOURCE__ */
1712fe8fb19SBen Gras 
1722fe8fb19SBen Gras /*
1732fe8fb19SBen Gras  * X/Open CAE Specification Issue 4 Version 2
1742fe8fb19SBen Gras  */
1752fe8fb19SBen Gras #if (defined(_XOPEN_SOURCE) && defined(_XOPEN_SOURCE_EXTENDED)) || \
1762fe8fb19SBen Gras     (_XOPEN_SOURCE - 0) >= 500 || defined(_NETBSD_SOURCE)
1772fe8fb19SBen Gras int	killpg(pid_t, int);
1782fe8fb19SBen Gras int	siginterrupt(int, int);
1792fe8fb19SBen Gras int	sigstack(const struct sigstack *, struct sigstack *);
1802fe8fb19SBen Gras #ifndef __LIBC12_SOURCE__
1812fe8fb19SBen Gras int	sigaltstack(const stack_t * __restrict, stack_t * __restrict)
1822fe8fb19SBen Gras     __RENAME(__sigaltstack14);
1832fe8fb19SBen Gras #endif
1842fe8fb19SBen Gras int	sighold(int);
1852fe8fb19SBen Gras int	sigignore(int);
1862fe8fb19SBen Gras int	sigpause(int);
1872fe8fb19SBen Gras int	sigrelse(int);
1882fe8fb19SBen Gras void	(*sigset (int, void (*)(int)))(int);
1892fe8fb19SBen Gras #endif /* _XOPEN_SOURCE_EXTENDED || _XOPEN_SOURCE >= 500 || _NETBSD_SOURCE */
1902fe8fb19SBen Gras 
1912fe8fb19SBen Gras 
1922fe8fb19SBen Gras /*
1932fe8fb19SBen Gras  * X/Open CAE Specification Issue 5; IEEE Std 1003.1b-1993 (POSIX)
1942fe8fb19SBen Gras  */
1952fe8fb19SBen Gras #if (_POSIX_C_SOURCE - 0) >= 199309L || (_XOPEN_SOURCE - 0) >= 500 || \
1962fe8fb19SBen Gras     defined(_NETBSD_SOURCE)
1972fe8fb19SBen Gras int	sigwait	(const sigset_t * __restrict, int * __restrict);
1982fe8fb19SBen Gras int	sigwaitinfo(const sigset_t * __restrict, siginfo_t * __restrict);
1992fe8fb19SBen Gras void	psiginfo(const siginfo_t *, const char *);
2002fe8fb19SBen Gras 
2012fe8fb19SBen Gras #ifndef __LIBC12_SOURCE__
202*0a6a1f1dSLionel Sambuc #include <sys/timespec.h>
2032fe8fb19SBen Gras int	sigtimedwait(const sigset_t * __restrict,
2042fe8fb19SBen Gras     siginfo_t * __restrict, const struct timespec * __restrict)
2052fe8fb19SBen Gras     __RENAME(__sigtimedwait50);
2062fe8fb19SBen Gras int	__sigtimedwait(const sigset_t * __restrict,
2072fe8fb19SBen Gras     siginfo_t * __restrict, struct timespec * __restrict)
2082fe8fb19SBen Gras     __RENAME(____sigtimedwait50);
2092fe8fb19SBen Gras #endif
2102fe8fb19SBen Gras #endif /* _POSIX_C_SOURCE >= 200112 || _XOPEN_SOURCE_EXTENDED || ... */
2112fe8fb19SBen Gras 
2122fe8fb19SBen Gras 
2132fe8fb19SBen Gras #if defined(_NETBSD_SOURCE)
2142fe8fb19SBen Gras #ifndef __PSIGNAL_DECLARED
2152fe8fb19SBen Gras #define __PSIGNAL_DECLARED
2162fe8fb19SBen Gras /* also in unistd.h */
2172fe8fb19SBen Gras void	psignal(int, const char *);
2182fe8fb19SBen Gras #endif /* __PSIGNAL_DECLARED */
2192fe8fb19SBen Gras int	sigblock(int);
2202fe8fb19SBen Gras int	sigsetmask(int);
2212fe8fb19SBen Gras #endif /* _NETBSD_SOURCE */
2222fe8fb19SBen Gras 
2232fe8fb19SBen Gras #endif	/* _POSIX_C_SOURCE || _XOPEN_SOURCE || _NETBSD_SOURCE */
2242fe8fb19SBen Gras __END_DECLS
2252fe8fb19SBen Gras 
2262fe8fb19SBen Gras #endif	/* !_SIGNAL_H_ */
227