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)19int 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)35int 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