X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftimer%2Ftest%2Frun.c;h=f7b711f2c8530cb98183baf10ed07770f3fc4264;hb=fe6bc8c530795a6c718f7e8fd1a6643d9f3024a1;hp=2946ba10d653b8a1b9731d6bbed04dc8ace61d56;hpb=606cca7b0ed5236d1df1c4436ca79db6e3fd5321;p=ccan diff --git a/ccan/timer/test/run.c b/ccan/timer/test/run.c index 2946ba10..f7b711f2 100644 --- a/ccan/timer/test/run.c +++ b/ccan/timer/test/run.c @@ -3,34 +3,40 @@ #include #include +static struct timeabs timeabs_from_nsec(unsigned long long nsec) +{ + struct timeabs epoch = { { 0, 0 } }; + return timeabs_add(epoch, time_from_nsec(nsec)); +} + int main(void) { struct timers timers; struct timer t[64]; - struct list_head expired; - struct timespec earliest; + struct timeabs earliest; uint64_t i; + struct timeabs epoch = { { 0, 0 } }; /* This is how many tests you plan to run */ plan_tests(488); - timers_init(&timers, time_from_nsec(0)); + timers_init(&timers, epoch); ok1(timers_check(&timers, NULL)); ok1(!timer_earliest(&timers, &earliest)); - timer_add(&timers, &t[0], time_from_nsec(1)); + timer_add(&timers, &t[0], timeabs_from_nsec(1)); ok1(timers_check(&timers, NULL)); ok1(timer_earliest(&timers, &earliest)); - ok1(time_eq(earliest, grains_to_time(t[0].time))); + ok1(timeabs_eq(earliest, grains_to_time(t[0].time))); timer_del(&timers, &t[0]); ok1(timers_check(&timers, NULL)); ok1(!timer_earliest(&timers, &earliest)); /* Check timer ordering. */ for (i = 0; i < 32; i++) { - timer_add(&timers, &t[i*2], time_from_nsec(1ULL << i)); + timer_add(&timers, &t[i*2], timeabs_from_nsec(1ULL << i)); ok1(timers_check(&timers, NULL)); - timer_add(&timers, &t[i*2+1], time_from_nsec((1ULL << i) + 1)); + timer_add(&timers, &t[i*2+1], timeabs_from_nsec((1ULL << i) + 1)); ok1(timers_check(&timers, NULL)); } @@ -52,9 +58,9 @@ int main(void) for (i = 0; i < 32; i++) { uint64_t exp = (uint64_t)TIMER_GRANULARITY << i; - timer_add(&timers, &t[i*2], time_from_nsec(exp)); + timer_add(&timers, &t[i*2], timeabs_from_nsec(exp)); ok1(timers_check(&timers, NULL)); - timer_add(&timers, &t[i*2+1], time_from_nsec(exp + 1)); + timer_add(&timers, &t[i*2+1], timeabs_from_nsec(exp + 1)); ok1(timers_check(&timers, NULL)); } @@ -62,13 +68,11 @@ int main(void) struct timer *t1, *t2; ok1(timer_earliest(&timers, &earliest)); - timers_expire(&timers, earliest, &expired); - - t1 = list_pop(&expired, struct timer, list); + t1 = timers_expire(&timers, earliest); ok1(t1); - t2 = list_pop(&expired, struct timer, list); + t2 = timers_expire(&timers, earliest); ok1(t2); - ok1(list_empty(&expired)); + ok1(!timers_expire(&timers, earliest)); ok1(t1 == &t[i*2] || t1 == &t[i*2+1]); ok1(t2 != t1 && (t2 == &t[i*2] || t2 == &t[i*2+1]));