summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2015-07-25 02:21:33 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2015-07-26 12:14:18 +0200
commit78dd8fcc0678f7afbcecd4138ea260432e329de2 (patch)
tree5003c77e7d37e95d6fba4a5c4bf7b8b771d83faa
parenta90aee22ba86b78850e784dbc789b70bd7c5087f (diff)
vm/object: use a general lock to protect the object cache
* vm/vm_object.c: Use a general lock to protect the object cache.
-rw-r--r--vm/vm_object.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/vm/vm_object.c b/vm/vm_object.c
index deac0c2..b403d30 100644
--- a/vm/vm_object.c
+++ b/vm/vm_object.c
@@ -178,14 +178,16 @@ queue_head_t vm_object_cached_list;
int vm_object_cached_count;
int vm_object_cached_max = 4000; /* may be patched*/
-decl_simple_lock_data(,vm_object_cached_lock_data)
+struct lock vm_object_cache_lock_data;
+#define vm_object_cache_lock_init() \
+ lock_init(&vm_object_cache_lock_data, FALSE)
#define vm_object_cache_lock() \
- simple_lock(&vm_object_cached_lock_data)
+ lock_write(&vm_object_cache_lock_data)
#define vm_object_cache_lock_try() \
- simple_lock_try(&vm_object_cached_lock_data)
+ lock_try_write(&vm_object_cache_lock_data)
#define vm_object_cache_unlock() \
- simple_unlock(&vm_object_cached_lock_data)
+ lock_write_done(&vm_object_cache_lock_data)
/*
* Number of physical pages referenced by cached objects.
@@ -261,7 +263,7 @@ void vm_object_bootstrap(void)
sizeof(struct vm_object), 0, NULL, NULL, NULL, 0);
queue_init(&vm_object_cached_list);
- simple_lock_init(&vm_object_cached_lock_data);
+ vm_object_cache_lock_init();
/*
* Fill in a template object, for quick initialization