| version 1.117, 2006/05/25 14:27:28 |
version 1.118, 2006/06/07 22:33:40 |
| Line 1122 pool_do_put(struct pool *pp, void *v, st |
|
| Line 1122 pool_do_put(struct pool *pp, void *v, st |
|
| struct pool_item *pi = v; |
struct pool_item *pi = v; |
| struct pool_item_header *ph; |
struct pool_item_header *ph; |
| caddr_t page; |
caddr_t page; |
| int s; |
|
| |
|
| LOCK_ASSERT(simple_lock_held(&pp->pr_slock)); |
LOCK_ASSERT(simple_lock_held(&pp->pr_slock)); |
| SCHED_ASSERT_UNLOCKED(); |
SCHED_ASSERT_UNLOCKED(); |
| Line 1217 pool_do_put(struct pool *pp, void *v, st |
|
| Line 1216 pool_do_put(struct pool *pp, void *v, st |
|
| * be reclaimed by the pagedaemon. This minimizes |
* be reclaimed by the pagedaemon. This minimizes |
| * ping-pong'ing for memory. |
* ping-pong'ing for memory. |
| */ |
*/ |
| s = splclock(); |
getmicrotime(&ph->ph_time); |
| ph->ph_time = mono_time; |
|
| splx(s); |
|
| } |
} |
| pool_update_curpage(pp); |
pool_update_curpage(pp); |
| } |
} |
| Line 1355 pool_prime_page(struct pool *pp, caddr_t |
|
| Line 1352 pool_prime_page(struct pool *pp, caddr_t |
|
| unsigned int align = pp->pr_align; |
unsigned int align = pp->pr_align; |
| unsigned int ioff = pp->pr_itemoffset; |
unsigned int ioff = pp->pr_itemoffset; |
| int n; |
int n; |
| int s; |
|
| |
|
| LOCK_ASSERT(simple_lock_held(&pp->pr_slock)); |
LOCK_ASSERT(simple_lock_held(&pp->pr_slock)); |
| |
|
| Line 1371 pool_prime_page(struct pool *pp, caddr_t |
|
| Line 1367 pool_prime_page(struct pool *pp, caddr_t |
|
| LIST_INIT(&ph->ph_itemlist); |
LIST_INIT(&ph->ph_itemlist); |
| ph->ph_page = storage; |
ph->ph_page = storage; |
| ph->ph_nmissing = 0; |
ph->ph_nmissing = 0; |
| s = splclock(); |
getmicrotime(&ph->ph_time); |
| ph->ph_time = mono_time; |
|
| splx(s); |
|
| if ((pp->pr_roflags & PR_PHINPAGE) == 0) |
if ((pp->pr_roflags & PR_PHINPAGE) == 0) |
| SPLAY_INSERT(phtree, &pp->pr_phtree, ph); |
SPLAY_INSERT(phtree, &pp->pr_phtree, ph); |
| |
|
| Line 1539 pool_reclaim(struct pool *pp) |
|
| Line 1533 pool_reclaim(struct pool *pp) |
|
| struct pool_pagelist pq; |
struct pool_pagelist pq; |
| struct pool_cache_grouplist pcgl; |
struct pool_cache_grouplist pcgl; |
| struct timeval curtime, diff; |
struct timeval curtime, diff; |
| int s; |
|
| |
|
| if (pp->pr_drain_hook != NULL) { |
if (pp->pr_drain_hook != NULL) { |
| /* |
/* |
| Line 1561 pool_reclaim(struct pool *pp) |
|
| Line 1554 pool_reclaim(struct pool *pp) |
|
| LIST_FOREACH(pc, &pp->pr_cachelist, pc_poollist) |
LIST_FOREACH(pc, &pp->pr_cachelist, pc_poollist) |
| pool_cache_reclaim(pc, &pq, &pcgl); |
pool_cache_reclaim(pc, &pq, &pcgl); |
| |
|
| s = splclock(); |
getmicrotime(&curtime); |
| curtime = mono_time; |
|
| splx(s); |
|
| |
|
| for (ph = LIST_FIRST(&pp->pr_emptypages); ph != NULL; ph = phnext) { |
for (ph = LIST_FIRST(&pp->pr_emptypages); ph != NULL; ph = phnext) { |
| phnext = LIST_NEXT(ph, ph_pagelist); |
phnext = LIST_NEXT(ph, ph_pagelist); |