예제 #1
0
파일: test.c 프로젝트: Zolok/refos
static int
test_cpool(void)
{
    test_start("cpool");
    cpool_t p;
    cpool_init(&p, 1, 10240);
    for (int i = 1; i < 10240; i+=2) {
        int v = cpool_alloc(&p);
        test_assert(v >= 1 && v <= 10240);
        test_assert(cpool_check(&p, v) == false);
    }
    cpool_free(&p, 1);
    int v = cpool_alloc(&p);
    test_assert(v == 1);
    cpool_release(&p);
    return test_success();
}
예제 #2
0
파일: coat.c 프로젝트: seL4/refos
int coat_free(coat_t *t, int id) {
    assert(t);
    if (cpool_check(&t->pool, id)) {
        // Free but should have been allocated.
        return -EBADF;
    }
    if (t->oat_delete) {
        cvector_item_t obj = coat_get(t, id);
        if (!obj) {
            // No such object.
            return -EBADF;
        }
        t->oat_delete(t, obj);
    }
    cvector_set(&t->table, id, (cvector_item_t) NULL);
    cpool_free(&t->pool, id);
    return 0;
}