summaryrefslogtreecommitdiffstats
path: root/sys/vm/swap_pager.c
diff options
context:
space:
mode:
authordyson <dyson@FreeBSD.org>1996-05-23 00:45:58 +0000
committerdyson <dyson@FreeBSD.org>1996-05-23 00:45:58 +0000
commit509f02d4a3034d089f3b708293f367e91cdc784b (patch)
tree93cb5552524c0e6c7df6625358d83c0aaf76b71e /sys/vm/swap_pager.c
parentc8d511854a4e1ec4a0e64833ef0f7e2f67d521d5 (diff)
downloadFreeBSD-src-509f02d4a3034d089f3b708293f367e91cdc784b.zip
FreeBSD-src-509f02d4a3034d089f3b708293f367e91cdc784b.tar.gz
Initial support for MADV_FREE, support for pages that we don't care
about the contents anymore. This gives us alot of the advantage of freeing individual pages through munmap, but with almost none of the overhead.
Diffstat (limited to 'sys/vm/swap_pager.c')
-rw-r--r--sys/vm/swap_pager.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
index 4feebd5..37427ec 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.65 1996/05/03 21:01:47 phk Exp $
+ * $Id: swap_pager.c,v 1.66 1996/05/18 03:37:32 dyson Exp $
*/
/*
@@ -438,6 +438,32 @@ swap_pager_freespace(object, start, size)
splx(s);
}
+/*
+ * same as freespace, but don't free, just force a DMZ next time
+ */
+void
+swap_pager_dmzspace(object, start, size)
+ vm_object_t object;
+ vm_pindex_t start;
+ vm_size_t size;
+{
+ vm_pindex_t i;
+ int s;
+
+ s = splbio();
+ for (i = start; i < start + size; i += 1) {
+ int valid;
+ daddr_t *addr = swap_pager_diskaddr(object, i, &valid);
+
+ if (addr && *addr != SWB_EMPTY) {
+ if (valid) {
+ swap_pager_setvalid(object, i, 0);
+ }
+ }
+ }
+ splx(s);
+}
+
static void
swap_pager_free_swap(object)
vm_object_t object;
OpenPOWER on IntegriCloud