summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_zeroidle.c
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2002-07-18 17:40:07 +0000
committeralc <alc@FreeBSD.org>2002-07-18 17:40:07 +0000
commit1ba951badc25fd36cc925db74e53db5178c99ded (patch)
tree9f223a362027c87ed66d0c64bece89fa159087af /sys/vm/vm_zeroidle.c
parentc147de1e61eb54990ffe00853ecb6d5032576e2b (diff)
downloadFreeBSD-src-1ba951badc25fd36cc925db74e53db5178c99ded.zip
FreeBSD-src-1ba951badc25fd36cc925db74e53db5178c99ded.tar.gz
o Remove the acquisition and release of Giant from the idle priority thread
that pre-zeroes free pages. o Remove GIANT_REQUIRED from some low-level page queue functions. (Instead assertions on the page queue lock are being added to the higher-level functions, like vm_page_wire(), etc.) In collaboration with: peter
Diffstat (limited to 'sys/vm/vm_zeroidle.c')
-rw-r--r--sys/vm/vm_zeroidle.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/sys/vm/vm_zeroidle.c b/sys/vm/vm_zeroidle.c
index d852b9b..46db4e7 100644
--- a/sys/vm/vm_zeroidle.c
+++ b/sys/vm/vm_zeroidle.c
@@ -74,18 +74,15 @@ vm_page_zero_idle(void)
static int free_rover;
vm_page_t m;
- mtx_lock(&Giant);
mtx_lock_spin(&vm_page_queue_free_mtx);
zero_state = 0;
m = vm_pageq_find(PQ_FREE, free_rover, FALSE);
if (m != NULL && (m->flags & PG_ZERO) == 0) {
vm_pageq_remove_nowakeup(m);
mtx_unlock_spin(&vm_page_queue_free_mtx);
- mtx_unlock(&Giant);
pmap_zero_page_idle(m);
- mtx_lock(&Giant);
mtx_lock_spin(&vm_page_queue_free_mtx);
- vm_page_flag_set(m, PG_ZERO);
+ m->flags |= PG_ZERO;
vm_pageq_enqueue(PQ_FREE + m->pc, m);
++vm_page_zero_count;
++cnt_prezero;
@@ -94,7 +91,6 @@ vm_page_zero_idle(void)
}
free_rover = (free_rover + PQ_PRIME2) & PQ_L2_MASK;
mtx_unlock_spin(&vm_page_queue_free_mtx);
- mtx_unlock(&Giant);
return 1;
}
OpenPOWER on IntegriCloud