diff options
author | dyson <dyson@FreeBSD.org> | 1996-05-23 00:45:58 +0000 |
---|---|---|
committer | dyson <dyson@FreeBSD.org> | 1996-05-23 00:45:58 +0000 |
commit | 509f02d4a3034d089f3b708293f367e91cdc784b (patch) | |
tree | 93cb5552524c0e6c7df6625358d83c0aaf76b71e /sys/vm/swap_pager.c | |
parent | c8d511854a4e1ec4a0e64833ef0f7e2f67d521d5 (diff) | |
download | FreeBSD-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.c | 28 |
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; |