etime_t alarm_gettime(alarm_t a) { #if 0 now = time_of_secs_usecs(tv.tv_sec, tv.tv_usec) ; /* Yuck!! BUG!! */ if (time_gt(last, now)) { #if 0 eprintf("SYS:gettime:time going backwards %d usecs\n", (int)(last.usecs - now.usecs)) ; #endif return last ; } last = now ; return now ; #endif return a->gettime(a->env) ; }
int timer_exp (struct timespec *now, struct timespec *b, struct timespec *res) { struct timespec now_te, *ptr_te; if ( now == NULL ) { clock_gettime (CLOCK_MONOTONIC, &now_te); ptr_te = &now_te; } else ptr_te = now; if (res != NULL) time_diff (b, ptr_te, res); if (time_gt(b, pte_te)) return 0; return 1; }
void time_diff (struct timespec *a, struct timespec *b, struct timespec *res) { if (time_gt (a, b)) { res->tv_sec = a->tv_sec - b->tv_sec; res->tv_nsec = a->tv_nsec - b->tv_nsec; if (res->tv_nsec < 0) { res->tv_nsec = NSSECOND + res->tv_nsec; res->tv_sec = res->tv_sec -1; } } else { res->tv_sec = b->tv_sec - a->tv_sec; res->tv_nsec = b->tv_nsec - a->tv_nsec; if (res->tv_nsec < 0) { res->tv_nsec = NSSECOND + res->tv_nsec; res->tv_sec = res->tv_sec -1; } } return; }