#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 |