-void init_timeq() {
- THREAD_MUTEX_INIT(synchronized);
-}
-
-void timeq_tick() {
- SYNCHRONIZE(synchronized);
- struct timeq_entry *entry, *next;
- struct timeval now;
- gettimeofday(&now, NULL);
- for(entry = timeq_events; entry; entry = next) {
- if(!timeval_is_bigger(entry->execute, now)) {
- next = entry->next;
- if(timeq_events == entry)
- timeq_events = next;
- entry->callback(entry->data);
- free(entry);
- } else
- break;
+static IOHANDLER_CALLBACK(timeq_callback) {
+ struct timeq_entry *entry = event->iofd->data;
+ switch(event->type) {
+ case IOEVENT_TIMEOUT:
+ entry->callback(entry->data);
+ entry->iofd = NULL;
+ timeq_del(entry);
+ break;
+ default:
+ break;