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