diff options
Diffstat (limited to '')
-rw-r--r-- | libblkid/include/timer.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/libblkid/include/timer.h b/libblkid/include/timer.h new file mode 100644 index 000000000..79ef64919 --- /dev/null +++ b/libblkid/include/timer.h @@ -0,0 +1,31 @@ +#ifndef UTIL_LINUX_TIMER_H +#define UTIL_LINUX_TIMER_H + +#include <signal.h> +#include <sys/time.h> + +static inline int setup_timer( + struct itimerval *timer, + struct itimerval *old_timer, + struct sigaction *old_sa, + void (*timeout_handler)(int)) +{ + struct sigaction sa; + + memset(&sa, 0, sizeof sa); + sa.sa_handler = timeout_handler; + sa.sa_flags = SA_RESETHAND; + sigaction(SIGALRM, &sa, old_sa); + + return setitimer(ITIMER_REAL, timer, old_timer); +} + +static inline void cancel_timer( + struct itimerval *old_timer, + struct sigaction *old_sa) +{ + setitimer(ITIMER_REAL, old_timer, NULL); + sigaction(SIGALRM, old_sa, NULL); +} + +#endif |