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