summaryrefslogtreecommitdiff
path: root/sysdeps/l4/hurd/pt-sigstate-init.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/l4/hurd/pt-sigstate-init.c')
-rw-r--r--sysdeps/l4/hurd/pt-sigstate-init.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/sysdeps/l4/hurd/pt-sigstate-init.c b/sysdeps/l4/hurd/pt-sigstate-init.c
index 25a3920c..4c40fdb3 100644
--- a/sysdeps/l4/hurd/pt-sigstate-init.c
+++ b/sysdeps/l4/hurd/pt-sigstate-init.c
@@ -1,5 +1,5 @@
/* Initialize the signal state. Hurd on L4 version.
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -20,9 +20,25 @@
#include <pthread.h>
#include <pt-internal.h>
+#include <sig-internal.h>
error_t
__pthread_sigstate_init (struct __pthread *thread)
{
+ struct signal_state *ss = &thread->ss;
+
+ memset (ss, 0, sizeof (*ss));
+
+ ss->stack.ss_flags = SS_DISABLE;
+
+ int signo;
+ for (signo = 1; signo < NSIG; ++signo)
+ {
+ sigemptyset (&ss->actions[signo - 1].sa_mask);
+ ss->actions[signo - 1].sa_flags = SA_RESTART;
+ ss->actions[signo - 1].sa_handler = SIG_DFL;
+ ss->lock = (pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER;
+ }
+
return 0;
}