--- Gnu-Mach/vm/vm_object.c 2020/09/02 04:52:07 1.1.1.5 +++ Gnu-Mach/vm/vm_object.c 2020/09/02 04:54:12 1.1.1.6 @@ -181,7 +181,6 @@ vm_object_t kernel_object = &kernel_obj * not be held to make simple references. */ queue_head_t vm_object_cached_list; -int vm_object_cached_count; decl_simple_lock_data(,vm_object_cached_lock_data) @@ -310,7 +309,6 @@ void vm_object_bootstrap(void) vm_object_template.alive = TRUE; vm_object_template.lock_in_progress = FALSE; vm_object_template.lock_restart = FALSE; - vm_object_template.use_old_pageout = TRUE; /* XXX change later */ vm_object_template.last_alloc = (vm_offset_t) 0; #if MACH_PAGEMAP @@ -362,8 +360,6 @@ static void vm_object_cache_add( { assert(!object->cached); queue_enter(&vm_object_cached_list, object, vm_object_t, cached_list); - vm_object_cached_count++; - vm_object_cached_pages_update(object->resident_page_count); object->cached = TRUE; } @@ -372,8 +368,6 @@ static void vm_object_cache_remove( { assert(object->cached); queue_remove(&vm_object_cached_list, object, vm_object_t, cached_list); - vm_object_cached_count--; - vm_object_cached_pages_update(-object->resident_page_count); object->cached = FALSE; } @@ -621,6 +615,14 @@ void vm_object_terminate( assert(object->paging_in_progress == 0); assert(!object->cached); + if (!object->internal) { + assert(object->resident_page_count == 0); + + vm_page_lock_queues(); + vm_object_external_count--; + vm_page_unlock_queues(); + } + /* * Throw away port rights... note that they may * already have been thrown away (by vm_object_destroy @@ -2091,6 +2093,9 @@ restart: object->internal = FALSE; object->temporary = FALSE; + assert(object->resident_page_count == 0); + vm_object_external_count++; + /* user pager objects are not ready until marked so */ object->pager_ready = FALSE;