diff options
author | Karel Zak | 2018-10-24 12:28:13 +0200 |
---|---|---|
committer | Karel Zak | 2018-12-03 11:23:33 +0100 |
commit | 6df5acf970852a94b254800dc69569bd1f4c9ae8 (patch) | |
tree | 18751217f934f0dd328edd69fe4da5b6bfb0428c /include | |
parent | build-sys: make sure HAVE_TIMER_CREATE defined (diff) | |
download | kernel-qcow2-util-linux-6df5acf970852a94b254800dc69569bd1f4c9ae8.tar.gz kernel-qcow2-util-linux-6df5acf970852a94b254800dc69569bd1f4c9ae8.tar.xz kernel-qcow2-util-linux-6df5acf970852a94b254800dc69569bd1f4c9ae8.zip |
lib/timer: add fallback if timer_create() not available
* add struct ul_timer as API abstraction to hide differences between
timer_create() and setitimer()
* add setitimer() detection to ./configure.ac
* add fallback code to use setitimer() if timer_create() not available
(for example on OSX)
Addresses: https://github.com/karelzak/util-linux/issues/584
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/timer.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/include/timer.h b/include/timer.h index aa9f9c018..70da1ba9e 100644 --- a/include/timer.h +++ b/include/timer.h @@ -4,8 +4,19 @@ #include <signal.h> #include <sys/time.h> -extern int setup_timer(timer_t * t_id, struct itimerval *timeout, +#ifdef HAVE_TIMER_CREATE +struct ul_timer { + timer_t t_id; +}; +#else +struct ul_timer { + struct itimerval old_timer; + struct sigaction old_sa; +}; +#endif + +extern int setup_timer(struct ul_timer *timer, struct itimerval *timeout, void (*timeout_handler)(int, siginfo_t *, void *)); -extern void cancel_timer(timer_t * t_id); +extern void cancel_timer(struct ul_timer *timer); #endif /* UTIL_LINUX_TIMER_H */ |