diff options
author | Peter S. Mazinger <ps.m@gmx.net> | 2011-04-21 23:21:29 +0200 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2012-06-15 14:00:41 +0200 |
commit | fae8e7e498eadf7b859b49a5c6fe103ca447838b (patch) | |
tree | 5bf2da757998b20d99f9a80dcda6c373a3902b1f /include/signal.h | |
parent | 551ca528920603daa252b9ca40fb11a422066122 (diff) |
sigsuspend.c: add cancellation support independently of rt_sigsuspend
signal.h: add __SYSCALL_SIGSET_T_SIZE, since kernel sigset_t is different
on mips and use that instead of _NSIG / 8
Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'include/signal.h')
-rw-r--r-- | include/signal.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/signal.h b/include/signal.h index 7ff2c9fbc..09f06f95b 100644 --- a/include/signal.h +++ b/include/signal.h @@ -299,7 +299,10 @@ libc_hidden_proto(sigprocmask) This function is a cancellation point and therefore not marked with __THROW. */ extern int sigsuspend (__const sigset_t *__set) __nonnull ((1)); +#ifdef _LIBC +extern __typeof(sigsuspend) __sigsuspend_nocancel attribute_hidden; libc_hidden_proto(sigsuspend) +#endif /* Get and/or set the action for signal SIG. */ extern int sigaction (int __sig, __const struct sigaction *__restrict __act, @@ -325,6 +328,16 @@ extern int __syscall_rt_sigaction(int, __const struct sigaction *, ; extern __typeof(sigaction) __libc_sigaction; libc_hidden_proto(sigaction) + +# ifdef __mips__ +# define _KERNEL_NSIG_WORDS (_NSIG / _MIPS_SZLONG) +typedef struct { + unsigned long sig[_KERNEL_NSIG_WORDS]; +} kernel_sigset_t; +# define __SYSCALL_SIGSET_T_SIZE (sizeof(kernel_sigset_t)) +# else +# define __SYSCALL_SIGSET_T_SIZE (_NSIG / 8) +# endif #endif /* Put in SET all signals that are blocked and waiting to be delivered. */ |