00001
00002 #ifndef UNIX__SIG__H__
00003 #define UNIX__SIG__H__
00004
00005 typedef void (*signalfn)(int);
00006
00007 void sig_block(int sig);
00008 void sig_unblock(int sig);
00009 void sig_suspend(void);
00010 void sig_catch(int sig, signalfn fn);
00011 void sig_default(int sig);
00012 void sig_ignore(int sig);
00013
00014 void sig_misc_ignore(void);
00015 void sig_bug_catch(signalfn fn);
00016
00017 #define SIG_FUNCTION_DECL(NAME) \
00018 extern void sig_##NAME##_block(void); \
00019 extern void sig_##NAME##_unblock(void); \
00020 extern void sig_##NAME##_catch(signalfn fn); \
00021 extern void sig_##NAME##_default(void)
00022
00023 SIG_FUNCTION_DECL(alarm);
00024 SIG_FUNCTION_DECL(child);
00025 SIG_FUNCTION_DECL(hup);
00026 SIG_FUNCTION_DECL(int);
00027 SIG_FUNCTION_DECL(pipe);
00028 SIG_FUNCTION_DECL(quit);
00029 SIG_FUNCTION_DECL(term);
00030
00031 SIG_FUNCTION_DECL(all);
00032
00033 #undef SIG_FUNCTION_DECL
00034
00035 #define SIG_FUNCTION_MAKE(NAME,SIG) \
00036 extern void sig_##NAME##_block(void) { sig_block(SIG); } \
00037 extern void sig_##NAME##_unblock(void) { sig_unblock(SIG); } \
00038 extern void sig_##NAME##_catch(signalfn fn) { sig_catch(SIG, fn); } \
00039 extern void sig_##NAME##_default(void) { sig_default(SIG); } \
00040
00041 #endif