Beispiel #1
0
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);
}
Beispiel #2
0
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;
}