master
  1/*-
  2 * SPDX-License-Identifier: BSD-3-Clause
  3 *
  4 * Copyright (c) 1991, 1993
  5 *	The Regents of the University of California.  All rights reserved.
  6 *
  7 * Redistribution and use in source and binary forms, with or without
  8 * modification, are permitted provided that the following conditions
  9 * are met:
 10 * 1. Redistributions of source code must retain the above copyright
 11 *    notice, this list of conditions and the following disclaimer.
 12 * 2. Redistributions in binary form must reproduce the above copyright
 13 *    notice, this list of conditions and the following disclaimer in the
 14 *    documentation and/or other materials provided with the distribution.
 15 * 3. Neither the name of the University nor the names of its contributors
 16 *    may be used to endorse or promote products derived from this software
 17 *    without specific prior written permission.
 18 *
 19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 22 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 29 * SUCH DAMAGE.
 30 *
 31 *	@(#)signal.h	8.3 (Berkeley) 3/30/94
 32 */
 33
 34#ifndef _SIGNAL_H_
 35#define	_SIGNAL_H_
 36
 37#include <sys/cdefs.h>
 38#include <sys/_types.h>
 39#include <sys/signal.h>
 40#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
 41#include <machine/ucontext.h>
 42#include <sys/_ucontext.h>
 43#endif
 44
 45__NULLABILITY_PRAGMA_PUSH
 46
 47#if __BSD_VISIBLE
 48/*
 49 * XXX should enlarge these, if only to give empty names instead of bounds
 50 * errors for large signal numbers.
 51 */
 52extern const char * const sys_signame[NSIG];
 53extern const char * const sys_siglist[NSIG];
 54extern const int sys_nsig;
 55#endif
 56
 57#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
 58#ifndef _PID_T_DECLARED
 59typedef	__pid_t		pid_t;
 60#define	_PID_T_DECLARED
 61#endif
 62#endif
 63
 64#if __POSIX_VISIBLE || __XSI_VISIBLE
 65struct pthread;		/* XXX */
 66typedef struct pthread *__pthread_t;
 67#if !defined(_PTHREAD_T_DECLARED) && __POSIX_VISIBLE >= 200809
 68typedef __pthread_t pthread_t;
 69#define	_PTHREAD_T_DECLARED
 70#endif
 71#endif /* __POSIX_VISIBLE || __XSI_VISIBLE */
 72
 73__BEGIN_DECLS
 74int	raise(int);
 75
 76#if __POSIX_VISIBLE || __XSI_VISIBLE
 77int	kill(__pid_t, int);
 78int	pthread_kill(__pthread_t, int);
 79int	pthread_sigmask(int, const __sigset_t * __restrict,
 80	    __sigset_t * __restrict);
 81int	sigaction(int, const struct sigaction * __restrict,
 82	    struct sigaction * __restrict);
 83int	sigaddset(sigset_t *, int);
 84int	sigdelset(sigset_t *, int);
 85int	sigemptyset(sigset_t *);
 86int	sigfillset(sigset_t *);
 87int	sigismember(const sigset_t *, int);
 88int	sigpending(sigset_t * _Nonnull);
 89int	sigprocmask(int, const sigset_t * __restrict, sigset_t * __restrict);
 90int	sigsuspend(const sigset_t * _Nonnull);
 91int	sigwait(const sigset_t * _Nonnull __restrict,
 92	    int * _Nonnull __restrict);
 93#endif
 94
 95#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE >= 600
 96int	sigqueue(__pid_t, int, const union sigval);
 97
 98struct timespec;
 99int	sigtimedwait(const sigset_t * __restrict, siginfo_t * __restrict,
100	    const struct timespec * __restrict);
101int	sigwaitinfo(const sigset_t * __restrict, siginfo_t * __restrict);
102#endif
103
104#if __XSI_VISIBLE
105int	killpg(__pid_t, int);
106int	sigaltstack(const stack_t * __restrict, stack_t * __restrict); 
107int	sighold(int);
108int	sigignore(int);
109int	sigpause(int);
110int	sigrelse(int);
111void	(* _Nullable sigset(int, void (* _Nullable)(int)))(int);
112int	xsi_sigpause(int);
113#endif
114
115#if __XSI_VISIBLE >= 600
116int	siginterrupt(int, int);
117#endif
118
119#if __POSIX_VISIBLE >= 200809
120void	psignal(int, const char *);
121#endif
122
123#if __BSD_VISIBLE
124int	sigandset(sigset_t *dest, const sigset_t *left, const sigset_t *right);
125int	sigblock(int);
126int	sigisemptyset(const sigset_t *set);
127int	sigorset(sigset_t *dest, const sigset_t *left, const sigset_t *right);
128int	sigreturn(const struct __ucontext *);
129int	sigsetmask(int);
130int	sigstack(const struct sigstack *, struct sigstack *);
131int	sigvec(int, struct sigvec *, struct sigvec *);
132#endif
133__END_DECLS
134__NULLABILITY_PRAGMA_POP
135
136#endif /* !_SIGNAL_H_ */