18 #ifndef _MERCURY_BOILERPLATE_SIGNAL_H
19 #define _MERCURY_BOILERPLATE_SIGNAL_H
23 #ifndef sigev_notify_thread_id
24 #define sigev_notify_thread_id _sigev_un._tid
28 #define __SIGRSVD(n) (SIGRTMIN + 8 + (n))
30 #define SIGSUSP __SIGRSVD(0)
31 #define SIGRESM __SIGRSVD(1)
32 #define SIGRELS __SIGRSVD(2)
33 #define SIGRRB __SIGRSVD(3)
34 #define SIGAGENT __SIGRSVD(4)
35 #define SIGPERIOD __SIGRSVD(5)
38 #define __SIGPRIV(n) __SIGRSVD(8 + (n))
40 #define SIGSAFE_LOCK_ENTRY(__safelock) \
42 sigset_t __safeset, __oldsafeset; \
43 sigemptyset(&__safeset); \
44 sigaddset(&__safeset, SIGSUSP); \
45 pthread_sigmask(SIG_BLOCK, &__safeset, &__oldsafeset); \
46 push_cleanup_lock(__safelock); \
47 write_lock(__safelock);
49 #define SIGSAFE_LOCK_EXIT(__safelock) \
50 write_unlock(__safelock); \
51 pop_cleanup_lock(&__safelock); \
52 pthread_sigmask(SIG_SETMASK, &__oldsafeset, NULL); \