Lines Matching refs:pool
21 status_t vnidpool_alloc(struct vnidpool **pool, size_t size)
26 if (!pool)
38 fprintf(stderr, "vnidpool_alloc: pool @ %p, bitmap @ %p, size %ld\n", p, p->bitmap, p->bmsize);
39 *pool = p;
43 status_t vnidpool_free(struct vnidpool *pool) {
45 fprintf(stderr, "vnidpool_free: pool @ %p\n", pool);
46 if (!pool)
48 if (LOCK(&pool->lock) < B_OK)
51 for (i = 0; i < (pool->bmsize % sizeof(BMT)); i++) {
52 if (pool->bitmap[i])
56 free_lock(&pool->lock);
57 free(pool);
61 status_t vnidpool_get(struct vnidpool *pool, ino_t *vnid)
65 if (!pool)
67 if (LOCK(&pool->lock) < B_OK)
69 for (i = 0; BM_ISSET(pool, pool->nextvnid) && i < pool->bmsize; pool->nextvnid++, i++) {
71 if (!pool->nextvnid)
74 if (BM_ISSET(pool, pool->nextvnid))
77 BM_SET(pool, pool->nextvnid);
78 *vnid = pool->nextvnid++;
81 UNLOCK(&pool->lock);
85 status_t vnidpool_put(struct vnidpool *pool, ino_t vnid)
88 if (!pool)
90 if (LOCK(&pool->lock) < B_OK)
92 if (!BM_ISSET(pool, vnid))
95 BM_UNSET(pool, vnid);
98 UNLOCK(&pool->lock);