diff options
author | Karel Zak <kzak@redhat.com> | 2013-03-13 12:13:11 +0100 |
---|---|---|
committer | Karel Zak <kzak@redhat.com> | 2013-03-13 12:13:11 +0100 |
commit | 01acff6e0919ff373ffd9cf94b202d27c6be19a1 (patch) | |
tree | 1c58970ce5fc875b274d0ca2440208c80ea588f9 /include | |
parent | 880c4045e5020e5132b1f6f41ab042f774bdd4a6 (diff) | |
download | util-linux-01acff6e0919ff373ffd9cf94b202d27c6be19a1.tar.gz |
include: add timer.h
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/Makemodule.am | 1 | ||||
-rw-r--r-- | include/timer.h | 31 |
2 files changed, 32 insertions, 0 deletions
diff --git a/include/Makemodule.am b/include/Makemodule.am index 0c1656d2..7ba4593e 100644 --- a/include/Makemodule.am +++ b/include/Makemodule.am @@ -39,6 +39,7 @@ dist_noinst_HEADERS += \ include/strutils.h \ include/swapheader.h \ include/sysfs.h \ + include/timer.h \ include/tt.h \ include/ttyutils.h \ include/wholedisk.h \ diff --git a/include/timer.h b/include/timer.h new file mode 100644 index 00000000..b820453d --- /dev/null +++ b/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 void 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); + + 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 |