summaryrefslogtreecommitdiff
path: root/src/time/timer_create.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/time/timer_create.c')
-rw-r--r--src/time/timer_create.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/time/timer_create.c b/src/time/timer_create.c
index 424c70b7..2d8a62bd 100644
--- a/src/time/timer_create.c
+++ b/src/time/timer_create.c
@@ -22,6 +22,10 @@ static void dummy_0()
}
weak_alias(dummy_0, __pthread_tsd_run_dtors);
+static void timer_handler(int sig, siginfo_t *si, void *ctx)
+{
+}
+
static void cleanup_fromsig(void *p)
{
pthread_t self = __pthread_self();
@@ -98,7 +102,10 @@ int timer_create(clockid_t clk, struct sigevent *restrict evp, timer_t *restrict
break;
case SIGEV_THREAD:
if (!init) {
- struct sigaction sa = { .sa_handler = SIG_DFL };
+ struct sigaction sa = {
+ .sa_sigaction = timer_handler,
+ .sa_flags = SA_SIGINFO | SA_RESTART
+ };
__libc_sigaction(SIGTIMER, &sa, 0);
a_store(&init, 1);
}