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_page.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_page.c')
-rw-r--r-- | vm/vm_page.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/vm/vm_page.c b/vm/vm_page.c index 44573b10..4fde0759 100644 --- a/vm/vm_page.c +++ b/vm/vm_page.c @@ -755,6 +755,7 @@ vm_page_seg_free(struct vm_page_seg *seg, struct vm_page *page, static void vm_page_seg_add_active_page(struct vm_page_seg *seg, struct vm_page *page) { + assert(simple_lock_taken(&seg->lock)); assert(page->object != NULL); assert(page->seg_index == vm_page_seg_index(seg)); assert(page->type != VM_PT_FREE); @@ -770,6 +771,7 @@ vm_page_seg_add_active_page(struct vm_page_seg *seg, struct vm_page *page) static void vm_page_seg_remove_active_page(struct vm_page_seg *seg, struct vm_page *page) { + assert(simple_lock_taken(&seg->lock)); assert(page->object != NULL); assert(page->seg_index == vm_page_seg_index(seg)); assert(page->type != VM_PT_FREE); @@ -784,6 +786,7 @@ vm_page_seg_remove_active_page(struct vm_page_seg *seg, struct vm_page *page) static void vm_page_seg_add_inactive_page(struct vm_page_seg *seg, struct vm_page *page) { + assert(simple_lock_taken(&seg->lock)); assert(page->object != NULL); assert(page->seg_index == vm_page_seg_index(seg)); assert(page->type != VM_PT_FREE); @@ -798,6 +801,7 @@ vm_page_seg_add_inactive_page(struct vm_page_seg *seg, struct vm_page *page) static void vm_page_seg_remove_inactive_page(struct vm_page_seg *seg, struct vm_page *page) { + assert(simple_lock_taken(&seg->lock)); assert(page->object != NULL); assert(page->seg_index == vm_page_seg_index(seg)); assert(page->type != VM_PT_FREE); @@ -1726,6 +1730,9 @@ vm_page_mem_free(void) void vm_page_wire(struct vm_page *page) { + assert(vm_page_locked_queues()); + assert(vm_object_lock_taken(page->object)); + VM_PAGE_CHECK(page); if (page->wire_count == 0) { @@ -1749,6 +1756,9 @@ vm_page_unwire(struct vm_page *page) { struct vm_page_seg *seg; + assert(vm_page_locked_queues()); + assert(vm_object_lock_taken(page->object)); + VM_PAGE_CHECK(page); assert(page->wire_count != 0); @@ -1781,6 +1791,8 @@ vm_page_deactivate(struct vm_page *page) { struct vm_page_seg *seg; + assert(vm_page_locked_queues()); + VM_PAGE_CHECK(page); /* @@ -1820,6 +1832,8 @@ vm_page_activate(struct vm_page *page) { struct vm_page_seg *seg; + assert(vm_page_locked_queues()); + VM_PAGE_CHECK(page); /* @@ -1845,6 +1859,8 @@ vm_page_queues_remove(struct vm_page *page) { struct vm_page_seg *seg; + assert(vm_page_locked_queues()); + assert(!page->active || !page->inactive); if (!page->active && !page->inactive) { |