Blame gettext-runtime/gnulib-lib/signal.in.h

Packit 5b56b6
/* A GNU-like <signal.h>.
Packit 5b56b6
Packit 5b56b6
   Copyright (C) 2006-2015 Free Software Foundation, Inc.
Packit 5b56b6
Packit 5b56b6
   This program is free software: you can redistribute it and/or modify
Packit 5b56b6
   it under the terms of the GNU General Public License as published by
Packit 5b56b6
   the Free Software Foundation; either version 3 of the License, or
Packit 5b56b6
   (at your option) any later version.
Packit 5b56b6
Packit 5b56b6
   This program is distributed in the hope that it will be useful,
Packit 5b56b6
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 5b56b6
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 5b56b6
   GNU General Public License for more details.
Packit 5b56b6
Packit 5b56b6
   You should have received a copy of the GNU General Public License
Packit 5b56b6
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
Packit 5b56b6
Packit 5b56b6
#if __GNUC__ >= 3
Packit 5b56b6
@PRAGMA_SYSTEM_HEADER@
Packit 5b56b6
#endif
Packit 5b56b6
@PRAGMA_COLUMNS@
Packit 5b56b6
Packit 5b56b6
#if defined __need_sig_atomic_t || defined __need_sigset_t || defined _GL_ALREADY_INCLUDING_SIGNAL_H || (defined _SIGNAL_H && !defined __SIZEOF_PTHREAD_MUTEX_T)
Packit 5b56b6
/* Special invocation convention:
Packit 5b56b6
   - Inside glibc header files.
Packit 5b56b6
   - On glibc systems we have a sequence of nested includes
Packit 5b56b6
     <signal.h> -> <ucontext.h> -> <signal.h>.
Packit 5b56b6
     In this situation, the functions are not yet declared, therefore we cannot
Packit 5b56b6
     provide the C++ aliases.
Packit 5b56b6
   - On glibc systems with GCC 4.3 we have a sequence of nested includes
Packit 5b56b6
     <csignal> -> </usr/include/signal.h> -> <sys/ucontext.h> -> <signal.h>.
Packit 5b56b6
     In this situation, some of the functions are not yet declared, therefore
Packit 5b56b6
     we cannot provide the C++ aliases.  */
Packit 5b56b6
Packit 5b56b6
# @INCLUDE_NEXT@ @NEXT_SIGNAL_H@
Packit 5b56b6
Packit 5b56b6
#else
Packit 5b56b6
/* Normal invocation convention.  */
Packit 5b56b6
Packit 5b56b6
#ifndef _@GUARD_PREFIX@_SIGNAL_H
Packit 5b56b6
Packit 5b56b6
#define _GL_ALREADY_INCLUDING_SIGNAL_H
Packit 5b56b6
Packit 5b56b6
/* Define pid_t, uid_t.
Packit 5b56b6
   Also, mingw defines sigset_t not in <signal.h>, but in <sys/types.h>.
Packit 5b56b6
   On Solaris 10, <signal.h> includes <sys/types.h>, which eventually includes
Packit 5b56b6
   us; so include <sys/types.h> now, before the second inclusion guard.  */
Packit 5b56b6
#include <sys/types.h>
Packit 5b56b6
Packit 5b56b6
/* The include_next requires a split double-inclusion guard.  */
Packit 5b56b6
#@INCLUDE_NEXT@ @NEXT_SIGNAL_H@
Packit 5b56b6
Packit 5b56b6
#undef _GL_ALREADY_INCLUDING_SIGNAL_H
Packit 5b56b6
Packit 5b56b6
#ifndef _@GUARD_PREFIX@_SIGNAL_H
Packit 5b56b6
#define _@GUARD_PREFIX@_SIGNAL_H
Packit 5b56b6
Packit 5b56b6
/* Mac OS X 10.3, FreeBSD 6.4, OpenBSD 3.8, OSF/1 4.0, Solaris 2.6, Android
Packit 5b56b6
   declare pthread_sigmask in <pthread.h>, not in <signal.h>.
Packit 5b56b6
   But avoid namespace pollution on glibc systems.*/
Packit 5b56b6
#if (@GNULIB_PTHREAD_SIGMASK@ || defined GNULIB_POSIXCHECK) \
Packit 5b56b6
    && ((defined __APPLE__ && defined __MACH__) \
Packit 5b56b6
        || defined __FreeBSD__ || defined __OpenBSD__ || defined __osf__ \
Packit 5b56b6
        || defined __sun || defined __ANDROID__) \
Packit 5b56b6
    && ! defined __GLIBC__
Packit 5b56b6
# include <pthread.h>
Packit 5b56b6
#endif
Packit 5b56b6
Packit 5b56b6
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
Packit 5b56b6
Packit 5b56b6
/* The definition of _GL_ARG_NONNULL is copied here.  */
Packit 5b56b6
Packit 5b56b6
/* The definition of _GL_WARN_ON_USE is copied here.  */
Packit 5b56b6
Packit 5b56b6
/* On AIX, sig_atomic_t already includes volatile.  C99 requires that
Packit 5b56b6
   'volatile sig_atomic_t' ignore the extra modifier, but C89 did not.
Packit 5b56b6
   Hence, redefine this to a non-volatile type as needed.  */
Packit 5b56b6
#if ! @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@
Packit 5b56b6
# if !GNULIB_defined_sig_atomic_t
Packit 5b56b6
typedef int rpl_sig_atomic_t;
Packit 5b56b6
#  undef sig_atomic_t
Packit 5b56b6
#  define sig_atomic_t rpl_sig_atomic_t
Packit 5b56b6
#  define GNULIB_defined_sig_atomic_t 1
Packit 5b56b6
# endif
Packit 5b56b6
#endif
Packit 5b56b6
Packit 5b56b6
/* A set or mask of signals.  */
Packit 5b56b6
#if !@HAVE_SIGSET_T@
Packit 5b56b6
# if !GNULIB_defined_sigset_t
Packit 5b56b6
typedef unsigned int sigset_t;
Packit 5b56b6
#  define GNULIB_defined_sigset_t 1
Packit 5b56b6
# endif
Packit 5b56b6
#endif
Packit 5b56b6
Packit 5b56b6
/* Define sighandler_t, the type of signal handlers.  A GNU extension.  */
Packit 5b56b6
#if !@HAVE_SIGHANDLER_T@
Packit 5b56b6
# ifdef __cplusplus
Packit 5b56b6
extern "C" {
Packit 5b56b6
# endif
Packit 5b56b6
# if !GNULIB_defined_sighandler_t
Packit 5b56b6
typedef void (*sighandler_t) (int);
Packit 5b56b6
#  define GNULIB_defined_sighandler_t 1
Packit 5b56b6
# endif
Packit 5b56b6
# ifdef __cplusplus
Packit 5b56b6
}
Packit 5b56b6
# endif
Packit 5b56b6
#endif
Packit 5b56b6
Packit 5b56b6
Packit 5b56b6
#if @GNULIB_SIGNAL_H_SIGPIPE@
Packit 5b56b6
# ifndef SIGPIPE
Packit 5b56b6
/* Define SIGPIPE to a value that does not overlap with other signals.  */
Packit 5b56b6
#  define SIGPIPE 13
Packit 5b56b6
#  define GNULIB_defined_SIGPIPE 1
Packit 5b56b6
/* To actually use SIGPIPE, you also need the gnulib modules 'sigprocmask',
Packit 5b56b6
   'write', 'stdio'.  */
Packit 5b56b6
# endif
Packit 5b56b6
#endif
Packit 5b56b6
Packit 5b56b6
Packit 5b56b6
/* Maximum signal number + 1.  */
Packit 5b56b6
#ifndef NSIG
Packit 5b56b6
# if defined __TANDEM
Packit 5b56b6
#  define NSIG 32
Packit 5b56b6
# endif
Packit 5b56b6
#endif
Packit 5b56b6
Packit 5b56b6
Packit 5b56b6
#if @GNULIB_PTHREAD_SIGMASK@
Packit 5b56b6
# if @REPLACE_PTHREAD_SIGMASK@
Packit 5b56b6
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 5b56b6
#   undef pthread_sigmask
Packit 5b56b6
#   define pthread_sigmask rpl_pthread_sigmask
Packit 5b56b6
#  endif
Packit 5b56b6
_GL_FUNCDECL_RPL (pthread_sigmask, int,
Packit 5b56b6
                  (int how, const sigset_t *new_mask, sigset_t *old_mask));
Packit 5b56b6
_GL_CXXALIAS_RPL (pthread_sigmask, int,
Packit 5b56b6
                  (int how, const sigset_t *new_mask, sigset_t *old_mask));
Packit 5b56b6
# else
Packit 5b56b6
#  if !@HAVE_PTHREAD_SIGMASK@
Packit 5b56b6
_GL_FUNCDECL_SYS (pthread_sigmask, int,
Packit 5b56b6
                  (int how, const sigset_t *new_mask, sigset_t *old_mask));
Packit 5b56b6
#  endif
Packit 5b56b6
_GL_CXXALIAS_SYS (pthread_sigmask, int,
Packit 5b56b6
                  (int how, const sigset_t *new_mask, sigset_t *old_mask));
Packit 5b56b6
# endif
Packit 5b56b6
_GL_CXXALIASWARN (pthread_sigmask);
Packit 5b56b6
#elif defined GNULIB_POSIXCHECK
Packit 5b56b6
# undef pthread_sigmask
Packit 5b56b6
# if HAVE_RAW_DECL_PTHREAD_SIGMASK
Packit 5b56b6
_GL_WARN_ON_USE (pthread_sigmask, "pthread_sigmask is not portable - "
Packit 5b56b6
                 "use gnulib module pthread_sigmask for portability");
Packit 5b56b6
# endif
Packit 5b56b6
#endif
Packit 5b56b6
Packit 5b56b6
Packit 5b56b6
#if @GNULIB_RAISE@
Packit 5b56b6
# if @REPLACE_RAISE@
Packit 5b56b6
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 5b56b6
#   undef raise
Packit 5b56b6
#   define raise rpl_raise
Packit 5b56b6
#  endif
Packit 5b56b6
_GL_FUNCDECL_RPL (raise, int, (int sig));
Packit 5b56b6
_GL_CXXALIAS_RPL (raise, int, (int sig));
Packit 5b56b6
# else
Packit 5b56b6
#  if !@HAVE_RAISE@
Packit 5b56b6
_GL_FUNCDECL_SYS (raise, int, (int sig));
Packit 5b56b6
#  endif
Packit 5b56b6
_GL_CXXALIAS_SYS (raise, int, (int sig));
Packit 5b56b6
# endif
Packit 5b56b6
_GL_CXXALIASWARN (raise);
Packit 5b56b6
#elif defined GNULIB_POSIXCHECK
Packit 5b56b6
# undef raise
Packit 5b56b6
/* Assume raise is always declared.  */
Packit 5b56b6
_GL_WARN_ON_USE (raise, "raise can crash on native Windows - "
Packit 5b56b6
                 "use gnulib module raise for portability");
Packit 5b56b6
#endif
Packit 5b56b6
Packit 5b56b6
Packit 5b56b6
#if @GNULIB_SIGPROCMASK@
Packit 5b56b6
# if !@HAVE_POSIX_SIGNALBLOCKING@
Packit 5b56b6
Packit 5b56b6
#  ifndef GNULIB_defined_signal_blocking
Packit 5b56b6
#   define GNULIB_defined_signal_blocking 1
Packit 5b56b6
#  endif
Packit 5b56b6
Packit 5b56b6
/* Maximum signal number + 1.  */
Packit 5b56b6
#  ifndef NSIG
Packit 5b56b6
#   define NSIG 32
Packit 5b56b6
#  endif
Packit 5b56b6
Packit 5b56b6
/* This code supports only 32 signals.  */
Packit 5b56b6
#  if !GNULIB_defined_verify_NSIG_constraint
Packit 5b56b6
typedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1];
Packit 5b56b6
#   define GNULIB_defined_verify_NSIG_constraint 1
Packit 5b56b6
#  endif
Packit 5b56b6
Packit 5b56b6
# endif
Packit 5b56b6
Packit 5b56b6
/* When also using extern inline, suppress the use of static inline in
Packit 5b56b6
   standard headers of problematic Apple configurations, as Libc at
Packit 5b56b6
   least through Libc-825.26 (2013-04-09) mishandles it; see, e.g.,
Packit 5b56b6
   <http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
Packit 5b56b6
   Perhaps Apple will fix this some day.  */
Packit 5b56b6
#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \
Packit 5b56b6
     && (defined __i386__ || defined __x86_64__))
Packit 5b56b6
# undef sigaddset
Packit 5b56b6
# undef sigdelset
Packit 5b56b6
# undef sigemptyset
Packit 5b56b6
# undef sigfillset
Packit 5b56b6
# undef sigismember
Packit 5b56b6
#endif
Packit 5b56b6
Packit 5b56b6
/* Test whether a given signal is contained in a signal set.  */
Packit 5b56b6
# if @HAVE_POSIX_SIGNALBLOCKING@
Packit 5b56b6
/* This function is defined as a macro on Mac OS X.  */
Packit 5b56b6
#  if defined __cplusplus && defined GNULIB_NAMESPACE
Packit 5b56b6
#   undef sigismember
Packit 5b56b6
#  endif
Packit 5b56b6
# else
Packit 5b56b6
_GL_FUNCDECL_SYS (sigismember, int, (const sigset_t *set, int sig)
Packit 5b56b6
                                    _GL_ARG_NONNULL ((1)));
Packit 5b56b6
# endif
Packit 5b56b6
_GL_CXXALIAS_SYS (sigismember, int, (const sigset_t *set, int sig));
Packit 5b56b6
_GL_CXXALIASWARN (sigismember);
Packit 5b56b6
Packit 5b56b6
/* Initialize a signal set to the empty set.  */
Packit 5b56b6
# if @HAVE_POSIX_SIGNALBLOCKING@
Packit 5b56b6
/* This function is defined as a macro on Mac OS X.  */
Packit 5b56b6
#  if defined __cplusplus && defined GNULIB_NAMESPACE
Packit 5b56b6
#   undef sigemptyset
Packit 5b56b6
#  endif
Packit 5b56b6
# else
Packit 5b56b6
_GL_FUNCDECL_SYS (sigemptyset, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
Packit 5b56b6
# endif
Packit 5b56b6
_GL_CXXALIAS_SYS (sigemptyset, int, (sigset_t *set));
Packit 5b56b6
_GL_CXXALIASWARN (sigemptyset);
Packit 5b56b6
Packit 5b56b6
/* Add a signal to a signal set.  */
Packit 5b56b6
# if @HAVE_POSIX_SIGNALBLOCKING@
Packit 5b56b6
/* This function is defined as a macro on Mac OS X.  */
Packit 5b56b6
#  if defined __cplusplus && defined GNULIB_NAMESPACE
Packit 5b56b6
#   undef sigaddset
Packit 5b56b6
#  endif
Packit 5b56b6
# else
Packit 5b56b6
_GL_FUNCDECL_SYS (sigaddset, int, (sigset_t *set, int sig)
Packit 5b56b6
                                  _GL_ARG_NONNULL ((1)));
Packit 5b56b6
# endif
Packit 5b56b6
_GL_CXXALIAS_SYS (sigaddset, int, (sigset_t *set, int sig));
Packit 5b56b6
_GL_CXXALIASWARN (sigaddset);
Packit 5b56b6
Packit 5b56b6
/* Remove a signal from a signal set.  */
Packit 5b56b6
# if @HAVE_POSIX_SIGNALBLOCKING@
Packit 5b56b6
/* This function is defined as a macro on Mac OS X.  */
Packit 5b56b6
#  if defined __cplusplus && defined GNULIB_NAMESPACE
Packit 5b56b6
#   undef sigdelset
Packit 5b56b6
#  endif
Packit 5b56b6
# else
Packit 5b56b6
_GL_FUNCDECL_SYS (sigdelset, int, (sigset_t *set, int sig)
Packit 5b56b6
                                  _GL_ARG_NONNULL ((1)));
Packit 5b56b6
# endif
Packit 5b56b6
_GL_CXXALIAS_SYS (sigdelset, int, (sigset_t *set, int sig));
Packit 5b56b6
_GL_CXXALIASWARN (sigdelset);
Packit 5b56b6
Packit 5b56b6
/* Fill a signal set with all possible signals.  */
Packit 5b56b6
# if @HAVE_POSIX_SIGNALBLOCKING@
Packit 5b56b6
/* This function is defined as a macro on Mac OS X.  */
Packit 5b56b6
#  if defined __cplusplus && defined GNULIB_NAMESPACE
Packit 5b56b6
#   undef sigfillset
Packit 5b56b6
#  endif
Packit 5b56b6
# else
Packit 5b56b6
_GL_FUNCDECL_SYS (sigfillset, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
Packit 5b56b6
# endif
Packit 5b56b6
_GL_CXXALIAS_SYS (sigfillset, int, (sigset_t *set));
Packit 5b56b6
_GL_CXXALIASWARN (sigfillset);
Packit 5b56b6
Packit 5b56b6
/* Return the set of those blocked signals that are pending.  */
Packit 5b56b6
# if !@HAVE_POSIX_SIGNALBLOCKING@
Packit 5b56b6
_GL_FUNCDECL_SYS (sigpending, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
Packit 5b56b6
# endif
Packit 5b56b6
_GL_CXXALIAS_SYS (sigpending, int, (sigset_t *set));
Packit 5b56b6
_GL_CXXALIASWARN (sigpending);
Packit 5b56b6
Packit 5b56b6
/* If OLD_SET is not NULL, put the current set of blocked signals in *OLD_SET.
Packit 5b56b6
   Then, if SET is not NULL, affect the current set of blocked signals by
Packit 5b56b6
   combining it with *SET as indicated in OPERATION.
Packit 5b56b6
   In this implementation, you are not allowed to change a signal handler
Packit 5b56b6
   while the signal is blocked.  */
Packit 5b56b6
# if !@HAVE_POSIX_SIGNALBLOCKING@
Packit 5b56b6
#  define SIG_BLOCK   0  /* blocked_set = blocked_set | *set; */
Packit 5b56b6
#  define SIG_SETMASK 1  /* blocked_set = *set; */
Packit 5b56b6
#  define SIG_UNBLOCK 2  /* blocked_set = blocked_set & ~*set; */
Packit 5b56b6
_GL_FUNCDECL_SYS (sigprocmask, int,
Packit 5b56b6
                  (int operation, const sigset_t *set, sigset_t *old_set));
Packit 5b56b6
# endif
Packit 5b56b6
_GL_CXXALIAS_SYS (sigprocmask, int,
Packit 5b56b6
                  (int operation, const sigset_t *set, sigset_t *old_set));
Packit 5b56b6
_GL_CXXALIASWARN (sigprocmask);
Packit 5b56b6
Packit 5b56b6
/* Install the handler FUNC for signal SIG, and return the previous
Packit 5b56b6
   handler.  */
Packit 5b56b6
# ifdef __cplusplus
Packit 5b56b6
extern "C" {
Packit 5b56b6
# endif
Packit 5b56b6
# if !GNULIB_defined_function_taking_int_returning_void_t
Packit 5b56b6
typedef void (*_gl_function_taking_int_returning_void_t) (int);
Packit 5b56b6
#  define GNULIB_defined_function_taking_int_returning_void_t 1
Packit 5b56b6
# endif
Packit 5b56b6
# ifdef __cplusplus
Packit 5b56b6
}
Packit 5b56b6
# endif
Packit 5b56b6
# if !@HAVE_POSIX_SIGNALBLOCKING@
Packit 5b56b6
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 5b56b6
#   define signal rpl_signal
Packit 5b56b6
#  endif
Packit 5b56b6
_GL_FUNCDECL_RPL (signal, _gl_function_taking_int_returning_void_t,
Packit 5b56b6
                  (int sig, _gl_function_taking_int_returning_void_t func));
Packit 5b56b6
_GL_CXXALIAS_RPL (signal, _gl_function_taking_int_returning_void_t,
Packit 5b56b6
                  (int sig, _gl_function_taking_int_returning_void_t func));
Packit 5b56b6
# else
Packit 5b56b6
_GL_CXXALIAS_SYS (signal, _gl_function_taking_int_returning_void_t,
Packit 5b56b6
                  (int sig, _gl_function_taking_int_returning_void_t func));
Packit 5b56b6
# endif
Packit 5b56b6
_GL_CXXALIASWARN (signal);
Packit 5b56b6
Packit 5b56b6
# if !@HAVE_POSIX_SIGNALBLOCKING@ && GNULIB_defined_SIGPIPE
Packit 5b56b6
/* Raise signal SIGPIPE.  */
Packit 5b56b6
_GL_EXTERN_C int _gl_raise_SIGPIPE (void);
Packit 5b56b6
# endif
Packit 5b56b6
Packit 5b56b6
#elif defined GNULIB_POSIXCHECK
Packit 5b56b6
# undef sigaddset
Packit 5b56b6
# if HAVE_RAW_DECL_SIGADDSET
Packit 5b56b6
_GL_WARN_ON_USE (sigaddset, "sigaddset is unportable - "
Packit 5b56b6
                 "use the gnulib module sigprocmask for portability");
Packit 5b56b6
# endif
Packit 5b56b6
# undef sigdelset
Packit 5b56b6
# if HAVE_RAW_DECL_SIGDELSET
Packit 5b56b6
_GL_WARN_ON_USE (sigdelset, "sigdelset is unportable - "
Packit 5b56b6
                 "use the gnulib module sigprocmask for portability");
Packit 5b56b6
# endif
Packit 5b56b6
# undef sigemptyset
Packit 5b56b6
# if HAVE_RAW_DECL_SIGEMPTYSET
Packit 5b56b6
_GL_WARN_ON_USE (sigemptyset, "sigemptyset is unportable - "
Packit 5b56b6
                 "use the gnulib module sigprocmask for portability");
Packit 5b56b6
# endif
Packit 5b56b6
# undef sigfillset
Packit 5b56b6
# if HAVE_RAW_DECL_SIGFILLSET
Packit 5b56b6
_GL_WARN_ON_USE (sigfillset, "sigfillset is unportable - "
Packit 5b56b6
                 "use the gnulib module sigprocmask for portability");
Packit 5b56b6
# endif
Packit 5b56b6
# undef sigismember
Packit 5b56b6
# if HAVE_RAW_DECL_SIGISMEMBER
Packit 5b56b6
_GL_WARN_ON_USE (sigismember, "sigismember is unportable - "
Packit 5b56b6
                 "use the gnulib module sigprocmask for portability");
Packit 5b56b6
# endif
Packit 5b56b6
# undef sigpending
Packit 5b56b6
# if HAVE_RAW_DECL_SIGPENDING
Packit 5b56b6
_GL_WARN_ON_USE (sigpending, "sigpending is unportable - "
Packit 5b56b6
                 "use the gnulib module sigprocmask for portability");
Packit 5b56b6
# endif
Packit 5b56b6
# undef sigprocmask
Packit 5b56b6
# if HAVE_RAW_DECL_SIGPROCMASK
Packit 5b56b6
_GL_WARN_ON_USE (sigprocmask, "sigprocmask is unportable - "
Packit 5b56b6
                 "use the gnulib module sigprocmask for portability");
Packit 5b56b6
# endif
Packit 5b56b6
#endif /* @GNULIB_SIGPROCMASK@ */
Packit 5b56b6
Packit 5b56b6
Packit 5b56b6
#if @GNULIB_SIGACTION@
Packit 5b56b6
# if !@HAVE_SIGACTION@
Packit 5b56b6
Packit 5b56b6
#  if !@HAVE_SIGINFO_T@
Packit 5b56b6
Packit 5b56b6
#   if !GNULIB_defined_siginfo_types
Packit 5b56b6
Packit 5b56b6
/* Present to allow compilation, but unsupported by gnulib.  */
Packit 5b56b6
union sigval
Packit 5b56b6
{
Packit 5b56b6
  int sival_int;
Packit 5b56b6
  void *sival_ptr;
Packit 5b56b6
};
Packit 5b56b6
Packit 5b56b6
/* Present to allow compilation, but unsupported by gnulib.  */
Packit 5b56b6
struct siginfo_t
Packit 5b56b6
{
Packit 5b56b6
  int si_signo;
Packit 5b56b6
  int si_code;
Packit 5b56b6
  int si_errno;
Packit 5b56b6
  pid_t si_pid;
Packit 5b56b6
  uid_t si_uid;
Packit 5b56b6
  void *si_addr;
Packit 5b56b6
  int si_status;
Packit 5b56b6
  long si_band;
Packit 5b56b6
  union sigval si_value;
Packit 5b56b6
};
Packit 5b56b6
typedef struct siginfo_t siginfo_t;
Packit 5b56b6
Packit 5b56b6
#    define GNULIB_defined_siginfo_types 1
Packit 5b56b6
#   endif
Packit 5b56b6
Packit 5b56b6
#  endif /* !@HAVE_SIGINFO_T@ */
Packit 5b56b6
Packit 5b56b6
/* We assume that platforms which lack the sigaction() function also lack
Packit 5b56b6
   the 'struct sigaction' type, and vice versa.  */
Packit 5b56b6
Packit 5b56b6
#  if !GNULIB_defined_struct_sigaction
Packit 5b56b6
Packit 5b56b6
struct sigaction
Packit 5b56b6
{
Packit 5b56b6
  union
Packit 5b56b6
  {
Packit 5b56b6
    void (*_sa_handler) (int);
Packit 5b56b6
    /* Present to allow compilation, but unsupported by gnulib.  POSIX
Packit 5b56b6
       says that implementations may, but not must, make sa_sigaction
Packit 5b56b6
       overlap with sa_handler, but we know of no implementation where
Packit 5b56b6
       they do not overlap.  */
Packit 5b56b6
    void (*_sa_sigaction) (int, siginfo_t *, void *);
Packit 5b56b6
  } _sa_func;
Packit 5b56b6
  sigset_t sa_mask;
Packit 5b56b6
  /* Not all POSIX flags are supported.  */
Packit 5b56b6
  int sa_flags;
Packit 5b56b6
};
Packit 5b56b6
#   define sa_handler _sa_func._sa_handler
Packit 5b56b6
#   define sa_sigaction _sa_func._sa_sigaction
Packit 5b56b6
/* Unsupported flags are not present.  */
Packit 5b56b6
#   define SA_RESETHAND 1
Packit 5b56b6
#   define SA_NODEFER 2
Packit 5b56b6
#   define SA_RESTART 4
Packit 5b56b6
Packit 5b56b6
#   define GNULIB_defined_struct_sigaction 1
Packit 5b56b6
#  endif
Packit 5b56b6
Packit 5b56b6
_GL_FUNCDECL_SYS (sigaction, int, (int, const struct sigaction *restrict,
Packit 5b56b6
                                   struct sigaction *restrict));
Packit 5b56b6
Packit 5b56b6
# elif !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@
Packit 5b56b6
Packit 5b56b6
#  define sa_sigaction sa_handler
Packit 5b56b6
Packit 5b56b6
# endif /* !@HAVE_SIGACTION@, !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ */
Packit 5b56b6
Packit 5b56b6
_GL_CXXALIAS_SYS (sigaction, int, (int, const struct sigaction *restrict,
Packit 5b56b6
                                   struct sigaction *restrict));
Packit 5b56b6
_GL_CXXALIASWARN (sigaction);
Packit 5b56b6
Packit 5b56b6
#elif defined GNULIB_POSIXCHECK
Packit 5b56b6
# undef sigaction
Packit 5b56b6
# if HAVE_RAW_DECL_SIGACTION
Packit 5b56b6
_GL_WARN_ON_USE (sigaction, "sigaction is unportable - "
Packit 5b56b6
                 "use the gnulib module sigaction for portability");
Packit 5b56b6
# endif
Packit 5b56b6
#endif
Packit 5b56b6
Packit 5b56b6
/* Some systems don't have SA_NODEFER.  */
Packit 5b56b6
#ifndef SA_NODEFER
Packit 5b56b6
# define SA_NODEFER 0
Packit 5b56b6
#endif
Packit 5b56b6
Packit 5b56b6
Packit 5b56b6
#endif /* _@GUARD_PREFIX@_SIGNAL_H */
Packit 5b56b6
#endif /* _@GUARD_PREFIX@_SIGNAL_H */
Packit 5b56b6
#endif