#include #include #include #include #define MY_EVENT 0x00000001ll #define MY_PRIORITY 99 static RT_TASK mainTask; int main(int argc, char** argv) { const double ONE_SEC = 1e9; const RTIME timeout = (RTIME)(5 * ONE_SEC); RT_EVENT event; unsigned long mask; RTIME start, end; int res; mlockall(MCL_CURRENT | MCL_FUTURE); res = rt_task_shadow(&mainTask, "main_task", MY_PRIORITY, 0); if (res < 0) { printf("rt_task_shadow(): %d (%s)\n", res, strerror(-res)); } res = rt_task_set_mode(0, T_PRIMARY, NULL); if (res < 0) { printf("rt_task_set_mode(): %d (%s)\n", res, strerror(-res)); } res = rt_event_create(&event, NULL, 0, EV_PRIO); if (res < 0) { printf("rt_event_create(): %d (%s)\n", res, strerror(-res)); } start = rt_timer_read(); res = rt_event_wait(&event, MY_EVENT, &mask, EV_ALL, rt_timer_ns2ticks(timeout)); end = rt_timer_read(); if (res < 0 && res != -ETIMEDOUT) { printf("rt_event_wait(): %d (%s)\n", res, strerror(-res)); } printf("time - measured %g s, wanted %g s\n", rt_timer_ticks2ns(end - start)/ONE_SEC, timeout/ONE_SEC); res = rt_event_delete(&event); if (res < 0) { printf("rt_event_delete(): %d (%s)\n", res, strerror(-res)); } return 0; }