summaryrefslogtreecommitdiff
path: root/vm
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2015-08-16 02:17:56 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2015-08-16 02:19:38 +0200
commit03955afa0a3cc6e9dece39ec631ce3744b1b08ba (patch)
treef60616ba0e3b4bf7d59a7cda1f95f26adf878b7d /vm
parent75e34439527edaf9299da07b54c305a5068b3a1a (diff)
yyy vm: turn page queue lock into a general lock
Diffstat (limited to 'vm')
-rw-r--r--vm/vm_page.h7
-rw-r--r--vm/vm_resident.c4
2 files changed, 5 insertions, 6 deletions
diff --git a/vm/vm_page.h b/vm/vm_page.h
index c401b25..81ab3df 100644
--- a/vm/vm_page.h
+++ b/vm/vm_page.h
@@ -324,8 +324,7 @@ int vm_page_external_count; /* How many pages for external objects? */
-decl_simple_lock_data(extern,vm_page_queue_lock)/* lock on active and inactive
- page queues */
+struct lock vm_page_queue_lock; /* lock on active and inactive page queues */
decl_simple_lock_data(extern,vm_page_queue_free_lock)
/* lock on free page queue */
@@ -431,8 +430,8 @@ extern void vm_page_unwire(vm_page_t);
#define VM_PAGE_WAIT(continuation) vm_page_wait(continuation)
-#define vm_page_lock_queues() simple_lock(&vm_page_queue_lock)
-#define vm_page_unlock_queues() simple_unlock(&vm_page_queue_lock)
+#define vm_page_lock_queues() lock_write(&vm_page_queue_lock)
+#define vm_page_unlock_queues() lock_write_done(&vm_page_queue_lock)
#define VM_PAGE_QUEUES_REMOVE(mem) \
MACRO_BEGIN \
diff --git a/vm/vm_resident.c b/vm/vm_resident.c
index aa99e61..8b10e00 100644
--- a/vm/vm_resident.c
+++ b/vm/vm_resident.c
@@ -118,7 +118,7 @@ vm_offset_t vm_page_fictitious_addr = (vm_offset_t) -1;
*/
queue_head_t vm_page_queue_active;
queue_head_t vm_page_queue_inactive;
-decl_simple_lock_data(,vm_page_queue_lock)
+struct lock vm_page_queue_lock;
int vm_page_active_count;
int vm_page_inactive_count;
int vm_page_wire_count;
@@ -165,7 +165,7 @@ void vm_page_bootstrap(
*/
simple_lock_init(&vm_page_queue_free_lock);
- simple_lock_init(&vm_page_queue_lock);
+ lock_init(&vm_page_queue_lock, FALSE);
vm_page_queue_free = VM_PAGE_NULL;
vm_page_queue_fictitious = VM_PAGE_NULL;