bglibs: sig.h Source File

bglibs

sig.h
1 #ifndef UNIX__SIG__H__
2 #define UNIX__SIG__H__
3
4 typedef void (*signalfn)(int);
5
6 void sig_block(int sig);
7 void sig_unblock(int sig);
8 void sig_suspend(void);
9 void sig_catch(int sig, signalfn fn);
10 void sig_default(int sig);
11 void sig_ignore(int sig);
12
13 void sig_misc_ignore(void);
14 void sig_bug_catch(signalfn fn);
15
16 #define SIG_FUNCTION_DECL(NAME) \
17 extern void sig_##NAME##_block(void); \
18 extern void sig_##NAME##_unblock(void); \
19 extern void sig_##NAME##_catch(signalfn fn); \
20 extern void sig_##NAME##_default(void)
21
22 SIG_FUNCTION_DECL(alarm);
23 SIG_FUNCTION_DECL(child);
24 SIG_FUNCTION_DECL(hup);
25 SIG_FUNCTION_DECL(int);
26 SIG_FUNCTION_DECL(pipe);
27 SIG_FUNCTION_DECL(quit);
28 SIG_FUNCTION_DECL(term);
29
30 SIG_FUNCTION_DECL(all);
31
32 #undef SIG_FUNCTION_DECL
33
34 #define SIG_FUNCTION_MAKE(NAME,SIG) \
35 extern void sig_##NAME##_block(void) { sig_block(SIG); } \
36 extern void sig_##NAME##_unblock(void) { sig_unblock(SIG); } \
37 extern void sig_##NAME##_catch(signalfn fn) { sig_catch(SIG, fn); } \
38 extern void sig_##NAME##_default(void) { sig_default(SIG); } \
39
40 #endif