Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/kern/subr_pool.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/kern/subr_pool.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.116.2.1 retrieving revision 1.117 diff -u -p -r1.116.2.1 -r1.117 --- src/sys/kern/subr_pool.c 2006/06/19 04:07:16 1.116.2.1 +++ src/sys/kern/subr_pool.c 2006/05/25 14:27:28 1.117 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_pool.c,v 1.116.2.1 2006/06/19 04:07:16 chap Exp $ */ +/* $NetBSD: subr_pool.c,v 1.117 2006/05/25 14:27:28 yamt Exp $ */ /*- * Copyright (c) 1997, 1999, 2000 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.116.2.1 2006/06/19 04:07:16 chap Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.117 2006/05/25 14:27:28 yamt Exp $"); #include "opt_pool.h" #include "opt_poollog.h" @@ -1122,6 +1122,7 @@ pool_do_put(struct pool *pp, void *v, st struct pool_item *pi = v; struct pool_item_header *ph; caddr_t page; + int s; LOCK_ASSERT(simple_lock_held(&pp->pr_slock)); SCHED_ASSERT_UNLOCKED(); @@ -1216,7 +1217,9 @@ pool_do_put(struct pool *pp, void *v, st * be reclaimed by the pagedaemon. This minimizes * ping-pong'ing for memory. */ - getmicrotime(&ph->ph_time); + s = splclock(); + ph->ph_time = mono_time; + splx(s); } pool_update_curpage(pp); } @@ -1352,6 +1355,7 @@ pool_prime_page(struct pool *pp, caddr_t unsigned int align = pp->pr_align; unsigned int ioff = pp->pr_itemoffset; int n; + int s; LOCK_ASSERT(simple_lock_held(&pp->pr_slock)); @@ -1367,7 +1371,9 @@ pool_prime_page(struct pool *pp, caddr_t LIST_INIT(&ph->ph_itemlist); ph->ph_page = storage; ph->ph_nmissing = 0; - getmicrotime(&ph->ph_time); + s = splclock(); + ph->ph_time = mono_time; + splx(s); if ((pp->pr_roflags & PR_PHINPAGE) == 0) SPLAY_INSERT(phtree, &pp->pr_phtree, ph); @@ -1533,6 +1539,7 @@ pool_reclaim(struct pool *pp) struct pool_pagelist pq; struct pool_cache_grouplist pcgl; struct timeval curtime, diff; + int s; if (pp->pr_drain_hook != NULL) { /* @@ -1554,7 +1561,9 @@ pool_reclaim(struct pool *pp) LIST_FOREACH(pc, &pp->pr_cachelist, pc_poollist) pool_cache_reclaim(pc, &pq, &pcgl); - getmicrotime(&curtime); + s = splclock(); + curtime = mono_time; + splx(s); for (ph = LIST_FIRST(&pp->pr_emptypages); ph != NULL; ph = phnext) { phnext = LIST_NEXT(ph, ph_pagelist);