Blame signal/signal.h

Packit Service 82fcde
/* Copyright (C) 1991-2018 Free Software Foundation, Inc.
Packit Service 82fcde
   This file is part of the GNU C Library.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is free software; you can redistribute it and/or
Packit Service 82fcde
   modify it under the terms of the GNU Lesser General Public
Packit Service 82fcde
   License as published by the Free Software Foundation; either
Packit Service 82fcde
   version 2.1 of the License, or (at your option) any later version.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is distributed in the hope that it will be useful,
Packit Service 82fcde
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 82fcde
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 82fcde
   Lesser General Public License for more details.
Packit Service 82fcde
Packit Service 82fcde
   You should have received a copy of the GNU Lesser General Public
Packit Service 82fcde
   License along with the GNU C Library; if not, see
Packit Service 82fcde
   <http://www.gnu.org/licenses/>.  */
Packit Service 82fcde
Packit Service 82fcde
/*
Packit Service 82fcde
 *	ISO C99 Standard: 7.14 Signal handling <signal.h>
Packit Service 82fcde
 */
Packit Service 82fcde
Packit Service 82fcde
#ifndef	_SIGNAL_H
Packit Service 82fcde
#define _SIGNAL_H
Packit Service 82fcde
Packit Service 82fcde
#include <features.h>
Packit Service 82fcde
Packit Service 82fcde
__BEGIN_DECLS
Packit Service 82fcde
Packit Service 82fcde
#include <bits/types.h>
Packit Service 82fcde
#include <bits/signum.h>
Packit Service 82fcde
Packit Service 82fcde
#include <bits/types/sig_atomic_t.h>
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_POSIX
Packit Service 82fcde
#include <bits/types/sigset_t.h>
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_XOPEN || defined __USE_XOPEN2K
Packit Service 82fcde
# ifndef __pid_t_defined
Packit Service 82fcde
typedef __pid_t pid_t;
Packit Service 82fcde
#  define __pid_t_defined
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifdef __USE_XOPEN
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifndef __uid_t_defined
Packit Service 82fcde
typedef __uid_t uid_t;
Packit Service 82fcde
#  define __uid_t_defined
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif	/* Unix98 */
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_POSIX199309
Packit Service 82fcde
/* We need `struct timespec' later on.  */
Packit Service 82fcde
# include <bits/types/struct_timespec.h>
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_POSIX199309 || defined __USE_XOPEN_EXTENDED
Packit Service 82fcde
# include <bits/types/siginfo_t.h>
Packit Service 82fcde
# include <bits/siginfo-consts.h>
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
# include <bits/types/sigval_t.h>
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_POSIX199309
Packit Service 82fcde
# include <bits/types/sigevent_t.h>
Packit Service 82fcde
# include <bits/sigevent-consts.h>
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Type of a signal handler.  */
Packit Service 82fcde
typedef void (*__sighandler_t) (int);
Packit Service 82fcde
Packit Service 82fcde
/* The X/Open definition of `signal' specifies the SVID semantic.  Use
Packit Service 82fcde
   the additional function `sysv_signal' when X/Open compatibility is
Packit Service 82fcde
   requested.  */
Packit Service 82fcde
extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
Packit Service 82fcde
     __THROW;
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler)
Packit Service 82fcde
     __THROW;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Set the handler for the signal SIG to HANDLER, returning the old
Packit Service 82fcde
   handler, or SIG_ERR on error.
Packit Service 82fcde
   By default `signal' has the BSD semantic.  */
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
extern __sighandler_t signal (int __sig, __sighandler_t __handler)
Packit Service 82fcde
     __THROW;
Packit Service 82fcde
#else
Packit Service 82fcde
/* Make sure the used `signal' implementation is the SVID version. */
Packit Service 82fcde
# ifdef __REDIRECT_NTH
Packit Service 82fcde
extern __sighandler_t __REDIRECT_NTH (signal,
Packit Service 82fcde
				      (int __sig, __sighandler_t __handler),
Packit Service 82fcde
				      __sysv_signal);
Packit Service 82fcde
# else
Packit Service 82fcde
#  define signal __sysv_signal
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8
Packit Service 82fcde
/* The X/Open definition of `signal' conflicts with the BSD version.
Packit Service 82fcde
   So they defined another function `bsd_signal'.  */
Packit Service 82fcde
extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler)
Packit Service 82fcde
     __THROW;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Send signal SIG to process number PID.  If PID is zero,
Packit Service 82fcde
   send SIG to all processes in the current process's process group.
Packit Service 82fcde
   If PID is < -1, send SIG to all processes in process group - PID.  */
Packit Service 82fcde
#ifdef __USE_POSIX
Packit Service 82fcde
extern int kill (__pid_t __pid, int __sig) __THROW;
Packit Service 82fcde
#endif /* Use POSIX.  */
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
Packit Service 82fcde
/* Send SIG to all processes in process group PGRP.
Packit Service 82fcde
   If PGRP is zero, send SIG to all processes in
Packit Service 82fcde
   the current process's process group.  */
Packit Service 82fcde
extern int killpg (__pid_t __pgrp, int __sig) __THROW;
Packit Service 82fcde
#endif /* Use misc || X/Open Unix.  */
Packit Service 82fcde
Packit Service 82fcde
/* Raise signal SIG, i.e., send SIG to yourself.  */
Packit Service 82fcde
extern int raise (int __sig) __THROW;
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
/* SVID names for the same things.  */
Packit Service 82fcde
extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
Packit Service 82fcde
     __THROW;
Packit Service 82fcde
extern int gsignal (int __sig) __THROW;
Packit Service 82fcde
#endif /* Use misc.  */
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_XOPEN2K8
Packit Service 82fcde
/* Print a message describing the meaning of the given signal number.  */
Packit Service 82fcde
extern void psignal (int __sig, const char *__s);
Packit Service 82fcde
Packit Service 82fcde
/* Print a message describing the meaning of the given signal information.  */
Packit Service 82fcde
extern void psiginfo (const siginfo_t *__pinfo, const char *__s);
Packit Service 82fcde
#endif /* POSIX 2008.  */
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* The `sigpause' function in X/Open defines the argument as the
Packit Service 82fcde
   signal number.  This requires redirecting to another function
Packit Service 82fcde
   because the default version in glibc uses an old BSD interface.
Packit Service 82fcde
Packit Service 82fcde
   This function is a cancellation point and therefore not marked with
Packit Service 82fcde
   __THROW.  */
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_XOPEN_EXTENDED
Packit Service 82fcde
# ifdef __GNUC__
Packit Service 82fcde
extern int sigpause (int __sig) __asm__ ("__xpg_sigpause");
Packit Service 82fcde
# else
Packit Service 82fcde
extern int __sigpause (int __sig_or_mask, int __is_sig);
Packit Service 82fcde
/* Remove a signal from the signal mask and suspend the process.  */
Packit Service 82fcde
#  define sigpause(sig) __sigpause ((sig), 1)
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
/* None of the following functions should be used anymore.  They are here
Packit Service 82fcde
   only for compatibility.  A single word (`int') is not guaranteed to be
Packit Service 82fcde
   enough to hold a complete signal mask and therefore these functions
Packit Service 82fcde
   simply do not work in many situations.  Use `sigprocmask' instead.  */
Packit Service 82fcde
Packit Service 82fcde
/* Compute mask for signal SIG.  */
Packit Service 82fcde
# define sigmask(sig) ((int)(1u << ((sig) - 1)))
Packit Service 82fcde
Packit Service 82fcde
/* Block signals in MASK, returning the old mask.  */
Packit Service 82fcde
extern int sigblock (int __mask) __THROW __attribute_deprecated__;
Packit Service 82fcde
Packit Service 82fcde
/* Set the mask of blocked signals to MASK, returning the old mask.  */
Packit Service 82fcde
extern int sigsetmask (int __mask) __THROW __attribute_deprecated__;
Packit Service 82fcde
Packit Service 82fcde
/* Return currently selected signal mask.  */
Packit Service 82fcde
extern int siggetmask (void) __THROW __attribute_deprecated__;
Packit Service 82fcde
#endif /* Use misc.  */
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
# define NSIG	_NSIG
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
typedef __sighandler_t sighandler_t;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* 4.4 BSD uses the name `sig_t' for this.  */
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
typedef __sighandler_t sig_t;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_POSIX
Packit Service 82fcde
Packit Service 82fcde
/* Clear all signals from SET.  */
Packit Service 82fcde
extern int sigemptyset (sigset_t *__set) __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
/* Set all signals in SET.  */
Packit Service 82fcde
extern int sigfillset (sigset_t *__set) __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
/* Add SIGNO to SET.  */
Packit Service 82fcde
extern int sigaddset (sigset_t *__set, int __signo) __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
/* Remove SIGNO from SET.  */
Packit Service 82fcde
extern int sigdelset (sigset_t *__set, int __signo) __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
/* Return 1 if SIGNO is in SET, 0 if not.  */
Packit Service 82fcde
extern int sigismember (const sigset_t *__set, int __signo)
Packit Service 82fcde
     __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
# ifdef __USE_GNU
Packit Service 82fcde
/* Return non-empty value is SET is not empty.  */
Packit Service 82fcde
extern int sigisemptyset (const sigset_t *__set) __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
/* Build new signal set by combining the two inputs set using logical AND.  */
Packit Service 82fcde
extern int sigandset (sigset_t *__set, const sigset_t *__left,
Packit Service 82fcde
		      const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
Packit Service 82fcde
Packit Service 82fcde
/* Build new signal set by combining the two inputs set using logical OR.  */
Packit Service 82fcde
extern int sigorset (sigset_t *__set, const sigset_t *__left,
Packit Service 82fcde
		     const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
Packit Service 82fcde
# endif /* GNU */
Packit Service 82fcde
Packit Service 82fcde
/* Get the system-specific definitions of `struct sigaction'
Packit Service 82fcde
   and the `SA_*' and `SIG_*'. constants.  */
Packit Service 82fcde
# include <bits/sigaction.h>
Packit Service 82fcde
Packit Service 82fcde
/* Get and/or change the set of blocked signals.  */
Packit Service 82fcde
extern int sigprocmask (int __how, const sigset_t *__restrict __set,
Packit Service 82fcde
			sigset_t *__restrict __oset) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Change the set of blocked signals to SET,
Packit Service 82fcde
   wait until a signal arrives, and restore the set of blocked signals.
Packit Service 82fcde
Packit Service 82fcde
   This function is a cancellation point and therefore not marked with
Packit Service 82fcde
   __THROW.  */
Packit Service 82fcde
extern int sigsuspend (const sigset_t *__set) __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
/* Get and/or set the action for signal SIG.  */
Packit Service 82fcde
extern int sigaction (int __sig, const struct sigaction *__restrict __act,
Packit Service 82fcde
		      struct sigaction *__restrict __oact) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Put in SET all signals that are blocked and waiting to be delivered.  */
Packit Service 82fcde
extern int sigpending (sigset_t *__set) __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
# ifdef __USE_POSIX199506
Packit Service 82fcde
/* Select any of pending signals from SET or wait for any to arrive.
Packit Service 82fcde
Packit Service 82fcde
   This function is a cancellation point and therefore not marked with
Packit Service 82fcde
   __THROW.  */
Packit Service 82fcde
extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig)
Packit Service 82fcde
     __nonnull ((1, 2));
Packit Service 82fcde
# endif /* Use POSIX 1995.  */
Packit Service 82fcde
Packit Service 82fcde
# ifdef __USE_POSIX199309
Packit Service 82fcde
/* Select any of pending signals from SET and place information in INFO.
Packit Service 82fcde
Packit Service 82fcde
   This function is a cancellation point and therefore not marked with
Packit Service 82fcde
   __THROW.  */
Packit Service 82fcde
extern int sigwaitinfo (const sigset_t *__restrict __set,
Packit Service 82fcde
			siginfo_t *__restrict __info) __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
/* Select any of pending signals from SET and place information in INFO.
Packit Service 82fcde
   Wait the time specified by TIMEOUT if no signal is pending.
Packit Service 82fcde
Packit Service 82fcde
   This function is a cancellation point and therefore not marked with
Packit Service 82fcde
   __THROW.  */
Packit Service 82fcde
extern int sigtimedwait (const sigset_t *__restrict __set,
Packit Service 82fcde
			 siginfo_t *__restrict __info,
Packit Service 82fcde
			 const struct timespec *__restrict __timeout)
Packit Service 82fcde
     __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
/* Send signal SIG to the process PID.  Associate data in VAL with the
Packit Service 82fcde
   signal.  */
Packit Service 82fcde
extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val)
Packit Service 82fcde
     __THROW;
Packit Service 82fcde
# endif	/* Use POSIX 199306.  */
Packit Service 82fcde
Packit Service 82fcde
#endif /* Use POSIX.  */
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
Packit Service 82fcde
/* Names of the signals.  This variable exists only for compatibility.
Packit Service 82fcde
   Use `strsignal' instead (see <string.h>).  */
Packit Service 82fcde
extern const char *const _sys_siglist[_NSIG];
Packit Service 82fcde
extern const char *const sys_siglist[_NSIG];
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Get machine-dependent `struct sigcontext' and signal subcodes.  */
Packit Service 82fcde
# include <bits/sigcontext.h>
Packit Service 82fcde
Packit Service 82fcde
/* Restore the state saved in SCP.  */
Packit Service 82fcde
extern int sigreturn (struct sigcontext *__scp) __THROW;
Packit Service 82fcde
Packit Service 82fcde
#endif /* Use misc.  */
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
Packit Service 82fcde
# define __need_size_t
Packit Service 82fcde
# include <stddef.h>
Packit Service 82fcde
Packit Service 82fcde
# include <bits/types/stack_t.h>
Packit Service 82fcde
# if defined __USE_XOPEN || defined __USE_XOPEN2K8
Packit Service 82fcde
/* This will define `ucontext_t' and `mcontext_t'.  */
Packit Service 82fcde
#  include <sys/ucontext.h>
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif /* Use POSIX.1-2008 or X/Open Unix.  */
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_XOPEN_EXTENDED || defined __USE_MISC
Packit Service 82fcde
/* If INTERRUPT is nonzero, make signal SIG interrupt system calls
Packit Service 82fcde
   (causing them to fail with EINTR); if INTERRUPT is zero, make system
Packit Service 82fcde
   calls be restarted after signal SIG.  */
Packit Service 82fcde
extern int siginterrupt (int __sig, int __interrupt) __THROW;
Packit Service 82fcde
Packit Service 82fcde
# include <bits/sigstack.h>
Packit Service 82fcde
# include <bits/ss_flags.h>
Packit Service 82fcde
Packit Service 82fcde
/* Alternate signal handler stack interface.
Packit Service 82fcde
   This interface should always be preferred over `sigstack'.  */
Packit Service 82fcde
extern int sigaltstack (const stack_t *__restrict __ss,
Packit Service 82fcde
			stack_t *__restrict __oss) __THROW;
Packit Service 82fcde
#endif /* __USE_XOPEN_EXTENDED || __USE_MISC */
Packit Service 82fcde
Packit Service 82fcde
#if ((defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8)	\
Packit Service 82fcde
     || defined __USE_MISC)
Packit Service 82fcde
# include <bits/types/struct_sigstack.h>
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if ((defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K)	\
Packit Service 82fcde
     || defined __USE_MISC)
Packit Service 82fcde
/* Run signals handlers on the stack specified by SS (if not NULL).
Packit Service 82fcde
   If OSS is not NULL, it is filled in with the old signal stack status.
Packit Service 82fcde
   This interface is obsolete and on many platform not implemented.  */
Packit Service 82fcde
extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
Packit Service 82fcde
     __THROW __attribute_deprecated__;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_XOPEN_EXTENDED
Packit Service 82fcde
/* Simplified interface for signal management.  */
Packit Service 82fcde
Packit Service 82fcde
/* Add SIG to the calling process' signal mask.  */
Packit Service 82fcde
extern int sighold (int __sig) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Remove SIG from the calling process' signal mask.  */
Packit Service 82fcde
extern int sigrelse (int __sig) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Set the disposition of SIG to SIG_IGN.  */
Packit Service 82fcde
extern int sigignore (int __sig) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Set the disposition of SIG.  */
Packit Service 82fcde
extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW;
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if defined __USE_POSIX199506 || defined __USE_UNIX98
Packit Service 82fcde
/* Some of the functions for handling signals in threaded programs must
Packit Service 82fcde
   be defined here.  */
Packit Service 82fcde
# include <bits/pthreadtypes.h>
Packit Service 82fcde
# include <bits/sigthread.h>
Packit Service 82fcde
#endif /* use Unix98 */
Packit Service 82fcde
Packit Service 82fcde
/* The following functions are used internally in the C library and in
Packit Service 82fcde
   other code which need deep insights.  */
Packit Service 82fcde
Packit Service 82fcde
/* Return number of available real-time signal with highest priority.  */
Packit Service 82fcde
extern int __libc_current_sigrtmin (void) __THROW;
Packit Service 82fcde
/* Return number of available real-time signal with lowest priority.  */
Packit Service 82fcde
extern int __libc_current_sigrtmax (void) __THROW;
Packit Service 82fcde
Packit Service 82fcde
#define SIGRTMIN        (__libc_current_sigrtmin ())
Packit Service 82fcde
#define SIGRTMAX        (__libc_current_sigrtmax ())
Packit Service 82fcde
Packit Service 82fcde
__END_DECLS
Packit Service 82fcde
Packit Service 82fcde
#endif /* not signal.h */