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); |