summaryrefslogtreecommitdiffstats
path: root/sys/vm/swap_pager.c
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1995-03-01 23:30:04 +0000
committerdg <dg@FreeBSD.org>1995-03-01 23:30:04 +0000
commiteb198debb87180989f8b19a7edc7eccb01f90fa5 (patch)
tree939577bd1f960df71501392b5bf83109c6c968b5 /sys/vm/swap_pager.c
parente8c06a9513ade8cda989aadc92beefcb5596acf0 (diff)
downloadFreeBSD-src-eb198debb87180989f8b19a7edc7eccb01f90fa5.zip
FreeBSD-src-eb198debb87180989f8b19a7edc7eccb01f90fa5.tar.gz
Various changes from John and myself that do the following:
New functions create - vm_object_pip_wakeup and pagedaemon_wakeup that are used to reduce the actual number of wakeups. New function vm_page_protect which is used in conjuction with some new page flags to reduce the number of calls to pmap_page_protect. Minor changes to reduce unnecessary spl nesting. Rewrote vm_page_alloc() to improve readability. Various other mostly cosmetic changes.
Diffstat (limited to 'sys/vm/swap_pager.c')
-rw-r--r--sys/vm/swap_pager.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
index 3189619..9902969 100644
--- a/sys/vm/swap_pager.c
+++ b/sys/vm/swap_pager.c
@@ -39,7 +39,7 @@
* from: Utah $Hdr: swap_pager.c 1.4 91/04/30$
*
* @(#)swap_pager.c 8.9 (Berkeley) 3/21/94
- * $Id: swap_pager.c,v 1.27 1995/02/22 09:15:20 davidg Exp $
+ * $Id: swap_pager.c,v 1.28 1995/02/25 17:02:48 davidg Exp $
*/
/*
@@ -1040,7 +1040,7 @@ swap_pager_input(swp, m, count, reqpage)
if (curproc == pageproc)
(void) swap_pager_clean();
else
- wakeup((caddr_t) &vm_pages_needed);
+ pagedaemon_wakeup();
while (swap_pager_free.tqh_first == NULL) {
swap_pager_needflags |= SWAP_FREE_NEEDED;
if (curproc == pageproc)
@@ -1050,7 +1050,7 @@ swap_pager_input(swp, m, count, reqpage)
if (curproc == pageproc)
(void) swap_pager_clean();
else
- wakeup((caddr_t) &vm_pages_needed);
+ pagedaemon_wakeup();
}
splx(s);
}
@@ -1146,7 +1146,7 @@ swap_pager_input(swp, m, count, reqpage)
wakeup((caddr_t) &swap_pager_free);
}
if( swap_pager_needflags & SWAP_FREE_NEEDED_BY_PAGEOUT)
- wakeup((caddr_t) &vm_pages_needed);
+ pagedaemon_wakeup();
swap_pager_needflags &= ~(SWAP_FREE_NEEDED|SWAP_FREE_NEEDED_BY_PAGEOUT);
} else {
/*
@@ -1369,7 +1369,7 @@ swap_pager_output(swp, m, count, flags, rtvals)
return VM_PAGER_AGAIN;
#endif
} else
- wakeup((caddr_t) &vm_pages_needed);
+ pagedaemon_wakeup();
while (swap_pager_free.tqh_first == NULL ||
swap_pager_free.tqh_first->spc_list.tqe_next == NULL ||
swap_pager_free.tqh_first->spc_list.tqe_next->spc_list.tqe_next == NULL) {
@@ -1385,7 +1385,7 @@ swap_pager_output(swp, m, count, flags, rtvals)
if (curproc == pageproc)
(void) swap_pager_clean();
else
- wakeup((caddr_t) &vm_pages_needed);
+ pagedaemon_wakeup();
}
splx(s);
}
@@ -1544,7 +1544,7 @@ swap_pager_output(swp, m, count, flags, rtvals)
wakeup((caddr_t) &swap_pager_free);
}
if( swap_pager_needflags & SWAP_FREE_NEEDED_BY_PAGEOUT)
- wakeup((caddr_t) &vm_pages_needed);
+ pagedaemon_wakeup();
swap_pager_needflags &= ~(SWAP_FREE_NEEDED|SWAP_FREE_NEEDED_BY_PAGEOUT);
return (rv);
}
@@ -1592,7 +1592,7 @@ doclean:
wakeup((caddr_t) &swap_pager_free);
}
if( swap_pager_needflags & SWAP_FREE_NEEDED_BY_PAGEOUT)
- wakeup((caddr_t) &vm_pages_needed);
+ pagedaemon_wakeup();
swap_pager_needflags &= ~(SWAP_FREE_NEEDED|SWAP_FREE_NEEDED_BY_PAGEOUT);
++cleandone;
splx(s);
@@ -1691,7 +1691,7 @@ swap_pager_iodone(bp)
if( swap_pager_needflags & SWAP_FREE_NEEDED_BY_PAGEOUT) {
swap_pager_needflags &= ~SWAP_FREE_NEEDED_BY_PAGEOUT;
- wakeup((caddr_t) &vm_pages_needed);
+ pagedaemon_wakeup();
}
if (vm_pageout_pages_needed) {
@@ -1700,8 +1700,8 @@ swap_pager_iodone(bp)
}
if ((swap_pager_inuse.tqh_first == NULL) ||
((cnt.v_free_count + cnt.v_cache_count) < cnt.v_free_min &&
- nswiodone + cnt.v_free_count + cnt.v_cache_count >= cnt.v_free_min)) {
- wakeup((caddr_t) &vm_pages_needed);
+ nswiodone + cnt.v_free_count + cnt.v_cache_count >= cnt.v_free_min)) {
+ pagedaemon_wakeup();
}
splx(s);
}
OpenPOWER on IntegriCloud