void lk_list_test() { lk_list list; lk_init(&list, N); print_lk(&list); printf("\n"); lk_del(&list, list.head); print_lk(&list); printf("\n"); lk_insert(&list, 100); print_lk(&list); printf("\n"); lk_free(&list); }
static int lkT_poller (lk_State *S, void *ud, lk_Slot *slot, lk_Signal *sig) { lk_TimerState *ts = (lk_TimerState*)ud; lk_Time nexttime, current; (void)S; (void)sig; for (;;) { int waittime; lk_lock(ts->lock); lkT_updatetimers(ts, current = lk_time()); nexttime = ts->nexttime; assert(nexttime > current); lk_unlock(ts->lock); waittime = nexttime == LK_FOREVER ? -1 : (int)(nexttime - current); if (lk_wait(slot, NULL, waittime) == LK_ERR) break; } ts->nexttime = LK_FOREVER; lk_freelock(ts->lock); lk_freemempool(&ts->timers); lk_free(S, ts->heap); lk_free(S, ts); return LK_OK; }