Пример #1
0
static BT_ERROR init_cache(BT_CACHE *pCache, BT_u32 ulObjectSize) {
	pCache->ulObjectSize = ulObjectSize;
	pCache->free = NULL;
	pCache->allocated = 0;

	extend_cache(pCache);

	return BT_ERR_NONE;
}
Пример #2
0
static BT_ERROR init_cache(BT_CACHE *pCache, BT_u32 ulObjectSize) {
	BT_LIST_INIT_HEAD(&pCache->blocks);
	pCache->ulObjectSize = ulObjectSize;
	pCache->free = NULL;
	pCache->allocated = 0;

	extend_cache(pCache);

	return BT_ERR_NONE;
}
Пример #3
0
static void *BT_CacheAlloc(BT_CACHE *pCache) {

	struct block_free *p = pop_free(pCache);
	if(!p) {
		extend_cache(pCache);
		p = pop_free(pCache);
		if(!p) {
			return NULL;
		}
	}

	return (void *) p;
}
Пример #4
0
void *BT_CacheAlloc(BT_CACHE *pCache) {

	SLAB_LOCK(pCache);

	struct block_free *p = pop_free(pCache);
	if(!p) {
		extend_cache(pCache);
		p = pop_free(pCache);
		if(!p) {
			SLAB_UNLOCK(pCache);
			return NULL;
		}
	}

	SLAB_UNLOCK(pCache);

	return (void *) p;
}