summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Bushnell <thomas@gnu.org>1999-06-27 23:51:47 +0000
committerThomas Bushnell <thomas@gnu.org>1999-06-27 23:51:47 +0000
commit3ad230669bd394f4e77a3c2fada222ba60daf861 (patch)
tree58255fd1747812e4814220ab17241b9ee5ac741f
parent428857b46fcc238b6cadf53043e7976447ca175e (diff)
1999-06-27 Thomas Bushnell, BSG <tb@mit.edu>
* vm/vm_resident.c (vm_page_external_count): Define variable. (vm_page_grab): New argument `external'. All callers changed. Keep track of number of externally managed pages. Don't let non-privileged threads exceed the externally-managed page limit. (vm_page_grab_contiguous_pages): New argument `external'. All callers changed. Keep track of number of externally managed pages. Don't let non-privileged threads exceed the externally-managed page limit. (vm_page_convert): New argument `external'. All callers changed. (vm_page_release): New argument `external'. All callers changed. Keep track of number of externally managed pages. (vm_page_bootstrap): Initialize M->external. * vm/vm_page.h (vm_page_external_limit, vm_page_external_count): New variables. (struct vm_page): New members `external' and `extcounted'. * vm/vm_pageout.c (vm_pageout): Initialize vm_page_external_limit and vm_page_external_target. (VM_PAGE_EXTERNAL_LIMIT, VM_PAGE_EXTERNAL_TARGET): New macro. (vm_pageout_external_target): New variable. (vm_pageout_scan): Regard "too many externally managed pages" as a reason to keep doing work, but if that's the only reason we're doing work, then the only thing we do is schedule cleaning of pages. Help keep track of the number of externally managed pages that we care about.
-rw-r--r--i386/intel/pmap.c2
-rw-r--r--linux/dev/glue/block.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/i386/intel/pmap.c b/i386/intel/pmap.c
index 3c2493b..237d8d0 100644
--- a/i386/intel/pmap.c
+++ b/i386/intel/pmap.c
@@ -915,7 +915,7 @@ pmap_page_table_page_alloc()
/*
* Allocate a VM page for the level 2 page table entries.
*/
- while ((m = vm_page_grab()) == VM_PAGE_NULL)
+ while ((m = vm_page_grab(FALSE)) == VM_PAGE_NULL)
VM_PAGE_WAIT((void (*)()) 0);
/*
diff --git a/linux/dev/glue/block.c b/linux/dev/glue/block.c
index 7900e72..c450ea4 100644
--- a/linux/dev/glue/block.c
+++ b/linux/dev/glue/block.c
@@ -308,7 +308,7 @@ alloc_buffer (int size)
if (! linux_auto_config)
{
- while ((m = vm_page_grab ()) == 0)
+ while ((m = vm_page_grab (FALSE)) == 0)
VM_PAGE_WAIT (0);
d = current_thread ()->pcb->data;
assert (d);
@@ -1492,7 +1492,7 @@ device_read (void *d, ipc_port_t reply_port,
/* Allocate and map pages. */
while (alloc_offset < trunc_page (offset) + len)
{
- while ((m = vm_page_grab ()) == 0)
+ while ((m = vm_page_grab (FALSE)) == 0)
VM_PAGE_WAIT (0);
assert (! m->active && ! m->inactive);
m->busy = TRUE;