diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 2000-02-23 15:13:27 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 2000-02-23 15:13:27 +0000 |
commit | 2b37049c221501c6ae77e0308634aebcdb10060d (patch) | |
tree | 29c3604e4a9b5e9da1ff2c2d80be81f8d06f44a3 /Src/signals.h | |
parent | 4d60fd3feabfb7d24bf379d2f54ca5326211c494 (diff) | |
download | zsh-2b37049c221501c6ae77e0308634aebcdb10060d.tar.gz zsh-2b37049c221501c6ae77e0308634aebcdb10060d.tar.xz zsh-2b37049c221501c6ae77e0308634aebcdb10060d.zip |
manual/9838
Diffstat (limited to 'Src/signals.h')
-rw-r--r-- | Src/signals.h | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/Src/signals.h b/Src/signals.h index b6485e6b3..b1970e0f2 100644 --- a/Src/signals.h +++ b/Src/signals.h @@ -56,8 +56,8 @@ # define sigismember(s,n) ((*(s) & (1 << ((n) - 1))) != 0) #endif /* ifndef POSIX_SIGNALS */ -#define child_block() signal_block(signal_mask(SIGCHLD)) -#define child_unblock() signal_unblock(signal_mask(SIGCHLD)) +#define child_block() signal_block(sigchld_mask) +#define child_unblock() signal_unblock(sigchld_mask) #define child_suspend(S) signal_suspend(SIGCHLD, S) /* ignore a signal */ @@ -92,3 +92,29 @@ } \ } \ } while (0) + + +/* Make some signal functions faster. */ + +#ifdef POSIX_SIGNALS +#define signal_block(S) \ + ((dummy_sigset1 = (S)), \ + sigprocmask(SIG_BLOCK, &dummy_sigset1, &dummy_sigset2), \ + dummy_sigset2) +#else +# ifdef BSD_SIGNALS +#define signal_block(S) sigblock(S) +# else +extern sigset_t signal_block _((sigset_t)); +# endif /* BSD_SIGNALS */ +#endif /* POSIX_SIGNALS */ + +#ifdef POSIX_SIGNALS +#define signal_unblock(S) \ + ((dummy_sigset1 = (S)), \ + sigprocmask(SIG_UNBLOCK, &dummy_sigset1, &dummy_sigset2), \ + dummy_sigset2) +#else +extern sigset_t signal_unblock _((sigset_t)); +#endif /* POSIX_SIGNALS */ + |