version 1.128.2.9, 2007/09/10 11:13:17 |
version 1.128.2.10, 2007/09/25 01:36:19 |
Line 1974 pool_cache_bootstrap(pool_cache_t pc, si |
|
Line 1974 pool_cache_bootstrap(pool_cache_t pc, si |
|
|
|
mutex_init(&pc->pc_lock, MUTEX_DEFAULT, pp->pr_ipl); |
mutex_init(&pc->pc_lock, MUTEX_DEFAULT, pp->pr_ipl); |
|
|
|
if (ctor == NULL) { |
|
ctor = (int (*)(void *, void *, int))nullop; |
|
} |
|
if (dtor == NULL) { |
|
dtor = (void (*)(void *, void *))nullop; |
|
} |
|
|
pc->pc_emptygroups = NULL; |
pc->pc_emptygroups = NULL; |
pc->pc_fullgroups = NULL; |
pc->pc_fullgroups = NULL; |
pc->pc_ctor = ctor; |
pc->pc_ctor = ctor; |
|
|
pool_cache_destruct_object(pool_cache_t pc, void *object) |
pool_cache_destruct_object(pool_cache_t pc, void *object) |
{ |
{ |
|
|
if (pc->pc_dtor != NULL) |
(*pc->pc_dtor)(pc->pc_arg, object); |
(*pc->pc_dtor)(pc->pc_arg, object); |
|
pool_put(&pc->pc_pool, object); |
pool_put(&pc->pc_pool, object); |
} |
} |
|
|
Line 2344 pool_cache_get_slow(pool_cache_cpu_t *cc |
|
Line 2350 pool_cache_get_slow(pool_cache_cpu_t *cc |
|
if (object == NULL) |
if (object == NULL) |
return NULL; |
return NULL; |
|
|
if (pc->pc_ctor != NULL) { |
if ((*pc->pc_ctor)(pc->pc_arg, object, flags) != 0) { |
if ((*pc->pc_ctor)(pc->pc_arg, object, flags) != 0) { |
pool_put(&pc->pc_pool, object); |
pool_put(&pc->pc_pool, object); |
*objectp = NULL; |
*objectp = NULL; |
return NULL; |
return NULL; |
|
} |
|
} |
} |
|
|
KASSERT((((vaddr_t)object + pc->pc_pool.pr_itemoffset) & |
KASSERT((((vaddr_t)object + pc->pc_pool.pr_itemoffset) & |