| version 1.50.2.1, 2001/06/21 20:06:59 |
version 1.50.2.2, 2001/08/24 00:11:35 |
|
|
| pool_cache_put(struct pool_cache *pc, void *object) |
pool_cache_put(struct pool_cache *pc, void *object) |
| { |
{ |
| struct pool_cache_group *pcg; |
struct pool_cache_group *pcg; |
| |
int s; |
| |
|
| simple_lock(&pc->pc_slock); |
simple_lock(&pc->pc_slock); |
| |
|
| Line 1716 pool_cache_put(struct pool_cache *pc, vo |
|
| Line 1717 pool_cache_put(struct pool_cache *pc, vo |
|
| * allocate one. |
* allocate one. |
| */ |
*/ |
| simple_unlock(&pc->pc_slock); |
simple_unlock(&pc->pc_slock); |
| |
s = splvm(); |
| pcg = pool_get(&pcgpool, PR_NOWAIT); |
pcg = pool_get(&pcgpool, PR_NOWAIT); |
| |
splx(s); |
| if (pcg != NULL) { |
if (pcg != NULL) { |
| memset(pcg, 0, sizeof(*pcg)); |
memset(pcg, 0, sizeof(*pcg)); |
| simple_lock(&pc->pc_slock); |
simple_lock(&pc->pc_slock); |
| Line 1772 pool_cache_do_invalidate(struct pool_cac |
|
| Line 1775 pool_cache_do_invalidate(struct pool_cac |
|
| { |
{ |
| struct pool_cache_group *pcg, *npcg; |
struct pool_cache_group *pcg, *npcg; |
| void *object; |
void *object; |
| |
int s; |
| |
|
| for (pcg = TAILQ_FIRST(&pc->pc_grouplist); pcg != NULL; |
for (pcg = TAILQ_FIRST(&pc->pc_grouplist); pcg != NULL; |
| pcg = npcg) { |
pcg = npcg) { |
| Line 1790 pool_cache_do_invalidate(struct pool_cac |
|
| Line 1794 pool_cache_do_invalidate(struct pool_cac |
|
| TAILQ_REMOVE(&pc->pc_grouplist, pcg, pcg_list); |
TAILQ_REMOVE(&pc->pc_grouplist, pcg, pcg_list); |
| if (pc->pc_freeto == pcg) |
if (pc->pc_freeto == pcg) |
| pc->pc_freeto = NULL; |
pc->pc_freeto = NULL; |
| |
s = splvm(); |
| pool_put(&pcgpool, pcg); |
pool_put(&pcgpool, pcg); |
| |
splx(s); |
| } |
} |
| } |
} |
| } |
} |