105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A GNU-like <signal.h>.
205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Copyright (C) 2006-2012 Free Software Foundation, Inc.
405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is free software: you can redistribute it and/or modify
605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   it under the terms of the GNU General Public License as published by
705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the Free Software Foundation; either version 3 of the License, or
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   (at your option) any later version.
905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is distributed in the hope that it will be useful,
1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   but WITHOUT ANY WARRANTY; without even the implied warranty of
1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNU General Public License for more details.
1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   You should have received a copy of the GNU General Public License
1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if __GNUC__ >= 3
1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang@PRAGMA_SYSTEM_HEADER@
2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang@PRAGMA_COLUMNS@
2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __need_sig_atomic_t || defined __need_sigset_t || defined _GL_ALREADY_INCLUDING_SIGNAL_H || (defined _SIGNAL_H && !defined __SIZEOF_PTHREAD_MUTEX_T)
2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Special invocation convention:
2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   - Inside glibc header files.
2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   - On glibc systems we have a sequence of nested includes
2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     <signal.h> -> <ucontext.h> -> <signal.h>.
2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     In this situation, the functions are not yet declared, therefore we cannot
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     provide the C++ aliases.
3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   - On glibc systems with GCC 4.3 we have a sequence of nested includes
3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     <csignal> -> </usr/include/signal.h> -> <sys/ucontext.h> -> <signal.h>.
3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     In this situation, some of the functions are not yet declared, therefore
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     we cannot provide the C++ aliases.  */
3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# @INCLUDE_NEXT@ @NEXT_SIGNAL_H@
3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Normal invocation convention.  */
3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _@GUARD_PREFIX@_SIGNAL_H
4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_ALREADY_INCLUDING_SIGNAL_H
4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Define pid_t, uid_t.
4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Also, mingw defines sigset_t not in <signal.h>, but in <sys/types.h>.
4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   On Solaris 10, <signal.h> includes <sys/types.h>, which eventually includes
4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   us; so include <sys/types.h> now, before the second inclusion guard.  */
4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <sys/types.h>
4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The include_next requires a split double-inclusion guard.  */
5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#@INCLUDE_NEXT@ @NEXT_SIGNAL_H@
5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef _GL_ALREADY_INCLUDING_SIGNAL_H
5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _@GUARD_PREFIX@_SIGNAL_H
5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _@GUARD_PREFIX@_SIGNAL_H
5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Mac OS X 10.3, FreeBSD 6.4, OpenBSD 3.8, OSF/1 4.0, Solaris 2.6 declare
5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   pthread_sigmask in <pthread.h>, not in <signal.h>.
6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   But avoid namespace pollution on glibc systems.*/
6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if (@GNULIB_PTHREAD_SIGMASK@ || defined GNULIB_POSIXCHECK) \
6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    && ((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __OpenBSD__ || defined __osf__ || defined __sun) \
6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    && ! defined __GLIBC__
6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <pthread.h>
6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_ARG_NONNULL is copied here.  */
7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_WARN_ON_USE is copied here.  */
7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* On AIX, sig_atomic_t already includes volatile.  C99 requires that
7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   'volatile sig_atomic_t' ignore the extra modifier, but C89 did not.
7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Hence, redefine this to a non-volatile type as needed.  */
7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ! @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@
7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_sig_atomic_t
7805436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int rpl_sig_atomic_t;
7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef sig_atomic_t
8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define sig_atomic_t rpl_sig_atomic_t
8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_sig_atomic_t 1
8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A set or mask of signals.  */
8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !@HAVE_SIGSET_T@
8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_sigset_t
8805436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned int sigset_t;
8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_sigset_t 1
9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
9205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
9305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Define sighandler_t, the type of signal handlers.  A GNU extension.  */
9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !@HAVE_SIGHANDLER_T@
9505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef __cplusplus
9605436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern "C" {
9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
9805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_sighandler_t
9905436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef void (*sighandler_t) (int);
10005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_sighandler_t 1
10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef __cplusplus
10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_SIGNAL_H_SIGPIPE@
10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef SIGPIPE
11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Define SIGPIPE to a value that does not overlap with other signals.  */
11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define SIGPIPE 13
11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_SIGPIPE 1
11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* To actually use SIGPIPE, you also need the gnulib modules 'sigprocmask',
11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   'write', 'stdio'.  */
11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Maximum signal number + 1.  */
12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef NSIG
12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined __TANDEM
12205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define NSIG 32
12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
12405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_PTHREAD_SIGMASK@
12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_PTHREAD_SIGMASK@
12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef pthread_sigmask
13105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define pthread_sigmask rpl_pthread_sigmask
13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (pthread_sigmask, int,
13405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int how, const sigset_t *new_mask, sigset_t *old_mask));
13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (pthread_sigmask, int,
13605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int how, const sigset_t *new_mask, sigset_t *old_mask));
13705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_PTHREAD_SIGMASK@
13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (pthread_sigmask, int,
14005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int how, const sigset_t *new_mask, sigset_t *old_mask));
14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
14205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (pthread_sigmask, int,
14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int how, const sigset_t *new_mask, sigset_t *old_mask));
14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (pthread_sigmask);
14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
14705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef pthread_sigmask
14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_PTHREAD_SIGMASK
14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (pthread_sigmask, "pthread_sigmask is not portable - "
15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module pthread_sigmask for portability");
15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_RAISE@
15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @REPLACE_RAISE@
15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef raise
15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define raise rpl_raise
16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (raise, int, (int sig));
16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (raise, int, (int sig));
16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_RAISE@
16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (raise, int, (int sig));
16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (raise, int, (int sig));
16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (raise);
17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef raise
17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Assume raise is always declared.  */
17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (raise, "raise can crash on native Windows - "
17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module raise for portability");
17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_SIGPROCMASK@
17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_POSIX_SIGNALBLOCKING@
18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  ifndef GNULIB_defined_signal_blocking
18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define GNULIB_defined_signal_blocking 1
18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Maximum signal number + 1.  */
18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  ifndef NSIG
18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define NSIG 32
18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This code supports only 32 signals.  */
19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !GNULIB_defined_verify_NSIG_constraint
19205436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1];
19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define GNULIB_defined_verify_NSIG_constraint 1
19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Test whether a given signal is contained in a signal set.  */
19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @HAVE_POSIX_SIGNALBLOCKING@
20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This function is defined as a macro on Mac OS X.  */
20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __cplusplus && defined GNULIB_NAMESPACE
20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sigismember
20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigismember, int, (const sigset_t *set, int sig)
20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                    _GL_ARG_NONNULL ((1)));
20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigismember, int, (const sigset_t *set, int sig));
20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigismember);
21005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Initialize a signal set to the empty set.  */
21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @HAVE_POSIX_SIGNALBLOCKING@
21305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This function is defined as a macro on Mac OS X.  */
21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __cplusplus && defined GNULIB_NAMESPACE
21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sigemptyset
21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigemptyset, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigemptyset, int, (sigset_t *set));
22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigemptyset);
22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Add a signal to a signal set.  */
22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @HAVE_POSIX_SIGNALBLOCKING@
22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This function is defined as a macro on Mac OS X.  */
22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __cplusplus && defined GNULIB_NAMESPACE
22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sigaddset
22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigaddset, int, (sigset_t *set, int sig)
23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigaddset, int, (sigset_t *set, int sig));
23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigaddset);
23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Remove a signal from a signal set.  */
23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @HAVE_POSIX_SIGNALBLOCKING@
23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This function is defined as a macro on Mac OS X.  */
23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __cplusplus && defined GNULIB_NAMESPACE
24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sigdelset
24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigdelset, int, (sigset_t *set, int sig)
24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigdelset, int, (sigset_t *set, int sig));
24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigdelset);
24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Fill a signal set with all possible signals.  */
25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if @HAVE_POSIX_SIGNALBLOCKING@
25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This function is defined as a macro on Mac OS X.  */
25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __cplusplus && defined GNULIB_NAMESPACE
25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef sigfillset
25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigfillset, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigfillset, int, (sigset_t *set));
25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigfillset);
26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return the set of those blocked signals that are pending.  */
26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_POSIX_SIGNALBLOCKING@
26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigpending, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigpending, int, (sigset_t *set));
26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigpending);
26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* If OLD_SET is not NULL, put the current set of blocked signals in *OLD_SET.
26905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Then, if SET is not NULL, affect the current set of blocked signals by
27005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   combining it with *SET as indicated in OPERATION.
27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   In this implementation, you are not allowed to change a signal handler
27205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   while the signal is blocked.  */
27305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_POSIX_SIGNALBLOCKING@
27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define SIG_BLOCK   0  /* blocked_set = blocked_set | *set; */
27505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define SIG_SETMASK 1  /* blocked_set = *set; */
27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define SIG_UNBLOCK 2  /* blocked_set = blocked_set & ~*set; */
27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigprocmask, int,
27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int operation, const sigset_t *set, sigset_t *old_set));
27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigprocmask, int,
28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int operation, const sigset_t *set, sigset_t *old_set));
28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigprocmask);
28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Install the handler FUNC for signal SIG, and return the previous
28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   handler.  */
28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef __cplusplus
28705436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern "C" {
28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_function_taking_int_returning_void_t
29005436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef void (*_gl_function_taking_int_returning_void_t) (int);
29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_function_taking_int_returning_void_t 1
29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifdef __cplusplus
29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
29605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_POSIX_SIGNALBLOCKING@
29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define signal rpl_signal
29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (signal, _gl_function_taking_int_returning_void_t,
30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int sig, _gl_function_taking_int_returning_void_t func));
30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (signal, _gl_function_taking_int_returning_void_t,
30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int sig, _gl_function_taking_int_returning_void_t func));
30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (signal, _gl_function_taking_int_returning_void_t,
30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  (int sig, _gl_function_taking_int_returning_void_t func));
30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (signal);
30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_POSIX_SIGNALBLOCKING@ && GNULIB_defined_SIGPIPE
31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Raise signal SIGPIPE.  */
31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_EXTERN_C int _gl_raise_SIGPIPE (void);
31305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigaddset
31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGADDSET
31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigaddset, "sigaddset is unportable - "
31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigdelset
32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGDELSET
32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigdelset, "sigdelset is unportable - "
32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigemptyset
32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGEMPTYSET
32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigemptyset, "sigemptyset is unportable - "
32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigfillset
33205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGFILLSET
33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigfillset, "sigfillset is unportable - "
33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigismember
33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGISMEMBER
33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigismember, "sigismember is unportable - "
33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigpending
34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGPENDING
34305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigpending, "sigpending is unportable - "
34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
34605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigprocmask
34705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGPROCMASK
34805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigprocmask, "sigprocmask is unportable - "
34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigprocmask for portability");
35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* @GNULIB_SIGPROCMASK@ */
35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if @GNULIB_SIGACTION@
35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !@HAVE_SIGACTION@
35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !@HAVE_SIGINFO_T@
35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   if !GNULIB_defined_siginfo_types
36005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Present to allow compilation, but unsupported by gnulib.  */
36205436638acc7c010349a69c3395f1a57c642dc62Ying Wangunion sigval
36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int sival_int;
36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  void *sival_ptr;
36605436638acc7c010349a69c3395f1a57c642dc62Ying Wang};
36705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Present to allow compilation, but unsupported by gnulib.  */
36905436638acc7c010349a69c3395f1a57c642dc62Ying Wangstruct siginfo_t
37005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int si_signo;
37205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int si_code;
37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int si_errno;
37405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  pid_t si_pid;
37505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  uid_t si_uid;
37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  void *si_addr;
37705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int si_status;
37805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  long si_band;
37905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  union sigval si_value;
38005436638acc7c010349a69c3395f1a57c642dc62Ying Wang};
38105436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef struct siginfo_t siginfo_t;
38205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define GNULIB_defined_siginfo_types 1
38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif /* !@HAVE_SIGINFO_T@ */
38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* We assume that platforms which lack the sigaction() function also lack
38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the 'struct sigaction' type, and vice versa.  */
39005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !GNULIB_defined_struct_sigaction
39205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstruct sigaction
39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  union
39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    void (*_sa_handler) (int);
39805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Present to allow compilation, but unsupported by gnulib.  POSIX
39905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       says that implementations may, but not must, make sa_sigaction
40005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       overlap with sa_handler, but we know of no implementation where
40105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       they do not overlap.  */
40205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    void (*_sa_sigaction) (int, siginfo_t *, void *);
40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  } _sa_func;
40405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  sigset_t sa_mask;
40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Not all POSIX flags are supported.  */
40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int sa_flags;
40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang};
40805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define sa_handler _sa_func._sa_handler
40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define sa_sigaction _sa_func._sa_sigaction
41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Unsupported flags are not present.  */
41105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define SA_RESETHAND 1
41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define SA_NODEFER 2
41305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define SA_RESTART 4
41405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define GNULIB_defined_struct_sigaction 1
41605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (sigaction, int, (int, const struct sigaction *restrict,
41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                   struct sigaction *restrict));
42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@
42205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define sa_sigaction sa_handler
42405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif /* !@HAVE_SIGACTION@, !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ */
42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (sigaction, int, (int, const struct sigaction *restrict,
42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                   struct sigaction *restrict));
42905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (sigaction);
43005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef sigaction
43305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_SIGACTION
43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (sigaction, "sigaction is unportable - "
43505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use the gnulib module sigaction for portability");
43605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
43705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Some systems don't have SA_NODEFER.  */
44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef SA_NODEFER
44105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define SA_NODEFER 0
44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
44305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _@GUARD_PREFIX@_SIGNAL_H */
44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _@GUARD_PREFIX@_SIGNAL_H */
44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
448