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