diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2025-02-12 01:58:53 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2025-02-12 02:11:11 +0100 |
commit | ea5ef1b6706dae31b6dc7083d341fda6818d4391 (patch) | |
tree | ac840ef454118f5755ba9ccb1f10e5f04c22ed2c /vm/vm_resident.c | |
parent | b163e2a6181c805bb2369458203a6af23bf4669e (diff) |
vm: Add and use vm_object_lock_taken, vm_object_cache_locked, vm_page_locked_queues
to check locking
Diffstat (limited to 'vm/vm_resident.c')
-rw-r--r-- | vm/vm_resident.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/vm/vm_resident.c b/vm/vm_resident.c index 817e4e8c..fba2c0d9 100644 --- a/vm/vm_resident.c +++ b/vm/vm_resident.c @@ -325,6 +325,9 @@ void vm_page_insert( { vm_page_bucket_t *bucket; + assert(vm_page_locked_queues()); + assert(vm_object_lock_taken(object)); + VM_PAGE_CHECK(mem); assert(!mem->active && !mem->inactive); @@ -403,6 +406,9 @@ void vm_page_replace( { vm_page_bucket_t *bucket; + assert(vm_page_locked_queues()); + assert(vm_object_lock_taken(object)); + VM_PAGE_CHECK(mem); assert(!mem->active && !mem->inactive); @@ -502,6 +508,10 @@ void vm_page_remove( vm_page_t this; assert(mem->tabled); + + assert(vm_page_locked_queues()); + assert(vm_object_lock_taken(mem->object)); + VM_PAGE_CHECK(mem); /* @@ -564,6 +574,8 @@ vm_page_t vm_page_lookup( vm_page_t mem; vm_page_bucket_t *bucket; + assert(vm_object_lock_taken(object)); + /* * Search the hash table for this object/offset pair */ @@ -598,6 +610,8 @@ void vm_page_rename( * the pageout daemon uses that lock to get the object. */ + assert(vm_object_lock_taken(new_object)); + vm_page_lock_queues(); vm_page_remove(mem); vm_page_insert(mem, new_object, new_offset); @@ -742,6 +756,7 @@ boolean_t vm_page_convert(struct vm_page **mp) return FALSE; object = fict_m->object; + assert(vm_object_lock_taken(object)); offset = fict_m->offset; vm_page_lock_queues(); vm_page_remove(fict_m); @@ -947,6 +962,8 @@ vm_page_t vm_page_alloc( { vm_page_t mem; + assert(vm_object_lock_taken(object)); + mem = vm_page_grab(VM_PAGE_HIGHMEM); if (mem == VM_PAGE_NULL) return VM_PAGE_NULL; @@ -976,6 +993,9 @@ void vm_page_free( vm_page_remove(mem); } + assert(vm_page_locked_queues()); + assert(vm_object_lock_taken(mem->object)); + assert(!mem->active && !mem->inactive); if (mem->wire_count != 0) { |