diff options
-rw-r--r-- | include/monotonic.h | 2 | ||||
-rw-r--r-- | lib/monotonic.c | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/include/monotonic.h b/include/monotonic.h index d5ff7c8e5..aca8b1fe4 100644 --- a/include/monotonic.h +++ b/include/monotonic.h @@ -9,7 +9,7 @@ extern int get_boot_time(struct timeval *boot_time); extern int gettime_monotonic(struct timeval *tv); extern int setup_timer(timer_t * t_id, struct itimerval *timeout, - void (*timeout_handler)(void)); + void (*timeout_handler)(int, siginfo_t *, void *)); extern void cancel_timer(timer_t * t_id); #endif /* UTIL_LINUX_BOOTTIME_H */ diff --git a/lib/monotonic.c b/lib/monotonic.c index a124debba..c6e0f7572 100644 --- a/lib/monotonic.c +++ b/lib/monotonic.c @@ -69,7 +69,7 @@ int gettime_monotonic(struct timeval *tv) } int setup_timer(timer_t * t_id, struct itimerval *timeout, - void (*timeout_handler)(void)) + void (*timeout_handler)(int, siginfo_t *, void *)) { struct sigaction sig_a; static struct sigevent sig_e = { @@ -85,8 +85,10 @@ int setup_timer(timer_t * t_id, struct itimerval *timeout, if (sigemptyset(&sig_a.sa_mask)) return 1; + sig_a.sa_flags = SA_SIGINFO; - sig_a.sa_handler = timeout_handler; + sig_a.sa_sigaction = timeout_handler; + if (sigaction(SIGALRM, &sig_a, 0)) return 1; if (timer_create(CLOCK_MONOTONIC, &sig_e, t_id)) |