1 /* ISC license. */
2 
3 /* MT-unsafe */
4 
5 #include <skalibs/sysdeps.h>
6 
7 #ifndef SKALIBS_HASCLOCKRT
8 # ifndef SKALIBS_HASSETTIMEOFDAY
9 #  error "neither clockrt nor settimeofday sysdeps are present. How do your set your system clock?"
10 # endif
11 #endif
12 
13 
14 #ifdef SKALIBS_HASCLOCKRT
15 
16 #include <time.h>
17 #include <skalibs/tai.h>
18 
sysclock_set(tain_t const * a)19 int sysclock_set (tain_t const *a)
20 {
21   struct timespec now ;
22   tain_t aa ;
23   tain_add(&aa, a, &tain_nano500) ;
24   if (!timespec_from_tain(&now, &aa)) return 0 ;
25   if (clock_settime(CLOCK_REALTIME, &now) < 0) return 0 ;
26   return 1 ;
27 }
28 
29 #else
30 
31 #include <skalibs/nonposix.h>
32 #include <sys/time.h>
33 #include <skalibs/tai.h>
34 
sysclock_set(tain_t const * a)35 int sysclock_set (tain_t const *a)
36 {
37   struct timeval now ;
38   tain_t aa ;
39   tain_add(&aa, a, &tain_nano500) ;
40   if (!timeval_from_tain(&now, &aa)) return 0 ;
41   if (settimeofday(&now, 0) < 0) return 0 ;
42   return 1 ;
43 }
44 
45 #endif
46