/* $NetBSD: sigact.h,v 1.2 2008/05/31 16:47:37 tnn Exp $ */ /* NAME: * sigact.h - sigaction et al * * SYNOPSIS: * #include "sigact.h" * * DESCRIPTION: * This header is the interface to a fake sigaction(2) * implementation. It provides a POSIX compliant interface * to whatever signal handling mechanisms are available. * It also provides a Signal() function that is implemented * in terms of sigaction(). * If not using signal(2) as part of the underlying * implementation (USE_SIGNAL or USE_SIGMASK), and * NO_SIGNAL is not defined, it also provides a signal() * function that calls Signal(). * * SEE ALSO: * sigact.c */ /* * RCSid: * $NetBSD: sigact.h,v 1.2 2008/05/31 16:47:37 tnn Exp $ */ /* Changes to sigact.h for pdksh, Michael Rendell : * - changed SIG_HDLR to RETSIGTYPE for use with GNU autoconf * - added RETSIGVAL * - ifdef'd out ARGS(), volatile and const initializations * - ifdef'd out sigset_t definition - let autoconf handle it * - ifdef out routines not used in ksh if IS_KSH is defined * (same in sigact.c). */ #ifndef _SIGACT_H #define _SIGACT_H /* * most modern systems use void for signal handlers but * not all. */ #ifndef RETSIGTYPE # define RETSIGTYPE void # define RETSIGVAL #endif #if 0 /* ARGS(), volatile and const are already set up in config*.h -mhr */ #undef ARGS #define ARGS(p) p #endif #ifndef IS_KSH handler_t Signal ARGS((int sig, handler_t disp)); #endif /* IS_KSH */ /* * if you want to install this header as signal.h, * modify this to pick up the original signal.h */ #ifndef SIGKILL # include #endif #ifndef SIG_ERR # define SIG_ERR ((handler_t) -1) #endif #ifndef BADSIG # define BADSIG SIG_ERR #endif #ifndef SA_NOCLDSTOP /* we assume we need the fake sigaction */ /* sa_flags */ #define SA_NOCLDSTOP 1 /* don't send SIGCHLD on child stop */ #define SA_RESTART 2 /* re-start I/O */ /* sigprocmask flags */ #define SIG_BLOCK 1 #define SIG_UNBLOCK 2 #define SIG_SETMASK 4 #if 0 /* autoconf will define sigset_t if it isn't available */ /* * this is a bit untidy */ #if !defined(__sys_stdtypes_h) typedef unsigned int sigset_t; #endif #endif /* 0 */ /* * POSIX sa_handler should return void, but since we are * implementing in terms of something else, it may * be appropriate to use the normal RETSIGTYPE return type */ struct sigaction { handler_t sa_handler; sigset_t sa_mask; int sa_flags; }; int sigaction ARGS(( int sig, struct sigaction *act, struct sigaction *oact )); int sigaddset ARGS(( sigset_t *mask, int sig )); #ifndef IS_KSH int sigdelset ARGS(( sigset_t *mask, int sig )); #endif /* IS_KSH */ int sigemptyset ARGS(( sigset_t *mask )); #ifndef IS_KSH int sigfillset ARGS(( sigset_t *mask )); int sigismember ARGS(( sigset_t *mask, int sig )); int sigpending ARGS(( sigset_t *set )); #endif /* IS_KSH */ int sigprocmask ARGS(( int how, sigset_t *set, sigset_t *oset )); int sigsuspend ARGS(( sigset_t *mask )); #ifndef sigmask # define sigmask(s) (1<<((s)-1)) /* convert SIGnum to mask */ #endif #if !defined(NSIG) && defined(_NSIG) # define NSIG _NSIG #endif #endif /* ! SA_NOCLDSTOP */ #endif /* _SIGACT_H */