summaryrefslogtreecommitdiff
path: root/include/signal.h
diff options
context:
space:
mode:
authorPeter S. Mazinger <ps.m@gmx.net>2011-04-21 23:21:29 +0200
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2012-06-15 14:00:41 +0200
commitfae8e7e498eadf7b859b49a5c6fe103ca447838b (patch)
tree5bf2da757998b20d99f9a80dcda6c373a3902b1f /include/signal.h
parent551ca528920603daa252b9ca40fb11a422066122 (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.h13
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. */