#include #include #include "timer.h" TimerDat* mytimer_new(void) { TimerDat *p; if ((p = malloc(sizeof(*p))) == NULL) { perror("mytimer_new"); exit(1); } p->next = NULL; p->data = NULL; p->interval = 0; return p; } void mytimer_delete(TimerDat *p) { if (p) free(p); } void mytimerlist_delete(TimerDatList l) { TimerDat *p, *q; if (l) { p = l->next; while (p != NULL) { q = p; p = p->next; mytimer_delete(q); } mytimer_delete(l); } } void mytimer_reentry(TimerDatList list, void *data, TimerDat *new, int interval) { TimerDat *t = list; /* search entry point */ while (t->next != NULL) { if (t->next->interval > interval) break; interval -= t->next->interval; t = t->next; } /* リストに追加 */ new->data = data; new->next = t->next; new->interval = interval; if (t->next) t->next->interval -= interval; t->next = new; } void mytimer_entry(TimerDatList list, void *data) { TimerDat *new = mytimer_new(); mytimer_reentry(list, data, new, 0); }