]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sigact.h
Add -m to post.sh
[FreeBSD/FreeBSD.git] / sigact.h
1 /* NAME:
2  *      sigact.h - sigaction et al
3  *
4  * SYNOPSIS:
5  *      #include "sigact.h"
6  *
7  * DESCRIPTION:
8  *      This header is the interface to a fake sigaction(2) 
9  *      implementation. It provides a POSIX compliant interface 
10  *      to whatever signal handling mechanisms are available.
11  *      It also provides a Signal() function that is implemented 
12  *      in terms of sigaction().
13  *      If not using signal(2) as part of the underlying 
14  *      implementation (USE_SIGNAL or USE_SIGMASK), and 
15  *      NO_SIGNAL is not defined, it also provides a signal() 
16  *      function that calls Signal(). 
17  *      
18  * SEE ALSO:
19  *      sigact.c
20  */
21 /*
22  * RCSid:
23  *      $Id: sigact.h,v 1.4 2021/10/14 19:39:17 sjg Exp $
24  */
25 #ifndef _SIGACT_H
26 #define _SIGACT_H
27
28 #include <sys/cdefs.h>
29
30 /*
31  * most modern systems use void for signal handlers but
32  * not all.
33  */
34 #ifndef SIG_HDLR
35 # define SIG_HDLR void
36 #endif
37
38 /*
39  * if you want to install this header as signal.h,
40  * modify this to pick up the original signal.h
41  */
42 #ifndef SIGKILL
43 # include <signal.h>
44 #endif
45 #ifndef SIGKILL
46 # include <sys/signal.h>
47 #endif
48   
49 #ifndef SIG_ERR
50 # define SIG_ERR  (SIG_HDLR (*)())-1
51 #endif
52 #ifndef BADSIG
53 # define BADSIG  SIG_ERR
54 #endif
55     
56 #ifndef SA_NOCLDSTOP
57 /* we assume we need the fake sigaction */
58 /* sa_flags */
59 #define SA_NOCLDSTOP    1               /* don't send SIGCHLD on child stop */
60 #define SA_RESTART      2               /* re-start I/O */
61
62 /* sigprocmask flags */
63 #define SIG_BLOCK       1
64 #define SIG_UNBLOCK     2
65 #define SIG_SETMASK     4
66
67 /*
68  * this is a bit untidy
69  */
70 #ifdef _SIGSET_T_
71 typedef _SIGSET_T_ sigset_t;
72 #endif
73   
74 /*
75  * POSIX sa_handler should return void, but since we are
76  * implementing in terms of something else, it may
77  * be appropriate to use the normal SIG_HDLR return type
78  */
79 struct sigaction
80 {
81   SIG_HDLR      (*sa_handler)();
82   sigset_t      sa_mask;
83   int           sa_flags;
84 };
85
86
87 int     sigaction       ( int /*sig*/, const struct sigaction */*act*/, struct sigaction */*oact*/ );
88 int     sigaddset       ( sigset_t */*mask*/, int /*sig*/ );
89 int     sigdelset       ( sigset_t */*mask*/, int /*sig*/ );
90 int     sigemptyset     ( sigset_t */*mask*/ );
91 int     sigfillset      ( sigset_t */*mask*/ );
92 int     sigismember     ( const sigset_t */*mask*/, int /*sig*/ );
93 int     sigpending      ( sigset_t */*set*/ );
94 int     sigprocmask     ( int how, const sigset_t */*set*/, sigset_t */*oset*/ );
95 int     sigsuspend      ( sigset_t */*mask*/ );
96         
97 #ifndef sigmask
98 # define sigmask(s)     (1<<((s)-1) & (32 - 1)) /* convert SIGnum to mask */
99 #endif
100 #if !defined(NSIG) && defined(_NSIG)
101 # define NSIG _NSIG
102 #endif
103 #endif /* ! SA_NOCLDSTOP */
104 #endif /* _SIGACT_H */