|
|
1.1 root 1: #ifdef POSIX_SIGNALS
2:
3: #define SIGMASKTYPE sigset_t
4: #define SIGEMPTYMASK (signal_empty_mask)
5: #define SIGFULLMASK (signal_full_mask)
6: extern sigset_t signal_empty_mask, signal_full_mask;
7:
8: #ifdef sigmask
9: #undef sigmask
10: #endif
11: #define sigmask(SIG) \
12: (_mask = SIGEMPTYMASK, sigaddset (&_mask, SIG), _mask)
13:
14: /* Local mask is used to avoid problems if code using any of the macros
15: below could be reentered due to a signal occurring.
16: This can't happen in Emacs 18.58, but just to be safe... - DJB
17: These macros require GCC. */
18: #define sigpause(SIG) ({ sigset_t _mask; sys_sigpause(SIG); })
19: #define sigblock(SIG) ({ sigset_t _mask; sys_sigblock(SIG); })
20: #define sigunblock(SIG) ({ sigset_t _mask; sys_sigunblock(SIG); })
21: #define sigsetmask(SIG) ({ sigset_t _mask; sys_sigsetmask(SIG); })
22: #define sighold(SIG) ONLY_USED_IN_BSD_4_1
23: #define sigrelse(SIG) ONLY_USED_IN_BSD_4_1
24:
25: int (*sys_signal (int signal_number, int (*action)())) ();
26: int sys_sigpause (sigset_t new_mask);
27: sigset_t sys_sigblock (sigset_t new_mask);
28: sigset_t sys_sigunblock (sigset_t new_mask);
29: sigset_t sys_sigsetmask (sigset_t new_mask);
30:
31: #define sys_sigdel(MASK,SIG) sigdelset(&MASK,SIG)
32: #endif /* POSIX_SIGNALS */
33:
34: #ifndef SIGMASKTYPE
35: #define SIGMASKTYPE int
36: #endif
37:
38: #ifndef SIGEMPTYMASK
39: #define SIGEMPTYMASK 0
40: #endif
41:
42: #ifndef SIGFULLMASK
43: #define SIGFULLMASK 0xffffffff
44: #endif
45:
46: #ifndef sigmask
47: #define sigmask(no) (1L << ((no) - 1))
48: #endif
49:
50: #ifndef sigunblock
51: #define sigunblock(SIG) \
52: { SIGMASKTYPE omask = sigblock (SIGFULLMASK); sigsetmask (omask & ~SIG); }
53: #endif
54:
55: #ifndef sys_sigdel
56: #define sys_sigdel(MASK,SIG) MASK &= ~(1 << SIG)
57: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.