static void gotev1(void *_x) { printf("got ev1\n"); IV_EVENT_RAW_INIT(&ev2); ev2.handler = gotev2; iv_event_raw_register(&ev2); iv_event_raw_post(&ev2); }
static void got_ev(void *_dummy) { ev_received++; if (!die) { iv_event_raw_post(&ev); } else { iv_validate_now(); tim_end = iv_now; iv_event_raw_unregister(&ev); } }
int main() { iv_init(); IV_EVENT_RAW_INIT(&ev0); ev0.handler = gotev0; iv_event_raw_register(&ev0); iv_event_raw_post(&ev0); iv_main(); iv_deinit(); return 0; }
int main() { long long nsec; iv_init(); #ifdef USE_SIGNAL signal(SIGALRM, got_signal_timeout); alarm(5); #else IV_TIMER_INIT(&timeout); iv_validate_now(); timeout.expires = iv_now; timeout.expires.tv_sec += 5; timeout.handler = got_timer_timeout; iv_timer_register(&timeout); #endif IV_EVENT_RAW_INIT(&ev); ev.handler = got_ev; iv_event_raw_register(&ev); iv_validate_now(); tim_start = iv_now; iv_event_raw_post(&ev); iv_main(); iv_deinit(); nsec = 1000000000ULL * (tim_end.tv_sec - tim_start.tv_sec) + (tim_end.tv_nsec - tim_start.tv_nsec); printf("%s: %d in %ld nsec => %d/sec\n", iv_poll_method_name(), ev_received, (long)nsec, (int)(1000000000ULL * ev_received / nsec)); return 0; }