1#include <barrelfish/barrelfish.h> 2#include <barrelfish/deferred.h> 3#include <bench/bench.h> 4 5// 5 seconds in us 6#define DFLT_DELAY (60UL*1000*1000) 7 8static cycles_t register_time; 9 10static void handler(void *arg) 11{ 12 cycles_t time_tsc = bench_tsc() - register_time; 13 uint64_t time_ms = bench_tsc_to_ms(time_tsc); 14 debug_printf("deferred event triggered: after %"PRIu64" ms\n", time_ms); 15} 16 17int main(void) 18{ 19 errval_t err; 20 struct deferred_event ev; 21 deferred_event_init(&ev); 22 bench_init(); 23 register_time = bench_tsc(); 24 err = deferred_event_register(&ev, get_default_waitset(), DFLT_DELAY, 25 MKCLOSURE(handler, NULL)); 26 assert(err_is_ok(err)); 27 28 while (true) { 29 err = event_dispatch(get_default_waitset()); 30 if (err_is_fail(err)) { 31 return 1; 32 } 33 } 34 return 0; 35} 36