1 /*
2 * timer_settime.c - set the timer.
3 */
4
5 #include <errno.h>
6 #include <stdlib.h>
7 #include <time.h>
8 #include <sys/syscall.h>
9
10 #include "kernel-posix-timers.h"
11
12 #if defined(__NR_timer_settime) || defined(__NR_timer_settime64)
13
14 #if defined(__UCLIBC_USE_TIME64__) && defined(__NR_timer_settime64)
15 #include "internal/time64_helpers.h"
16
timer_settime(timer_t timerid,int flags,const struct itimerspec * value,struct itimerspec * ovalue)17 int timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue)
18 {
19 struct timer *kt = (struct timer *)timerid;
20
21 return INLINE_SYSCALL(timer_settime64, 4, kt->ktimerid, flags, TO_ITS64_P(value), ovalue);
22 }
23 #else
24 #define __NR___syscall_timer_settime __NR_timer_settime
25
26 static __inline__ _syscall4(int, __syscall_timer_settime, kernel_timer_t, ktimerid,
27 int, flags, const void *, value, void *, ovalue);
28
29 /* Set the expiration time for a timer */
timer_settime(timer_t timerid,int flags,const struct itimerspec * value,struct itimerspec * ovalue)30 int timer_settime(timer_t timerid, int flags, const struct itimerspec *value,
31 struct itimerspec *ovalue)
32 {
33 struct timer *kt = (struct timer *)timerid;
34
35 /* Set timeout */
36 return __syscall_timer_settime(kt->ktimerid, flags, value, ovalue);
37 }
38
39 #endif
40 #endif
41