From 9b4552a22d3abb08bb25f4e0035b164fce358d99 Mon Sep 17 00:00:00 2001 From: Thomas Bushnell Date: Tue, 29 Jun 1999 23:34:14 +0000 Subject: 1999-06-29 Thomas Bushnell, BSG * vm/vm_resident.c (vm_page_grab): Don't bounce requests when vm_page_external_count == vm_page_external_limit, so that before initialization is complete we can still allocate memory without relying on current_thread. (vm_page_wait): Also block if we are over the external page limit. * vm/vm_pageout.c (vm_pageout_scan): Rewrite the scan-for-pages-to-pageout loop to not crash when we hit the end of the inactive queue; instead jump back to the pause-for-a-little-while code. --- vm/vm_resident.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'vm/vm_resident.c') diff --git a/vm/vm_resident.c b/vm/vm_resident.c index 58d98275..f9441adb 100644 --- a/vm/vm_resident.c +++ b/vm/vm_resident.c @@ -1212,7 +1212,8 @@ void vm_page_wait( */ simple_lock(&vm_page_queue_free_lock); - if (vm_page_free_count < vm_page_free_target) { + if ((vm_page_free_count < vm_page_free_target) + || (vm_page_external_count > vm_page_external_limit)) { if (vm_page_free_wanted++ == 0) thread_wakeup((event_t)&vm_page_free_wanted); assert_wait((event_t)&vm_page_free_count, FALSE); -- cgit v1.2.3