diff options
Diffstat (limited to 'lib/rwsem.c')
-rw-r--r-- | lib/rwsem.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/rwsem.c b/lib/rwsem.c index bae597284889..b322421c2969 100644 --- a/lib/rwsem.c +++ b/lib/rwsem.c | |||
@@ -8,6 +8,26 @@ | |||
8 | #include <linux/init.h> | 8 | #include <linux/init.h> |
9 | #include <linux/module.h> | 9 | #include <linux/module.h> |
10 | 10 | ||
11 | /* | ||
12 | * Initialize an rwsem: | ||
13 | */ | ||
14 | void __init_rwsem(struct rw_semaphore *sem, const char *name, | ||
15 | struct lock_class_key *key) | ||
16 | { | ||
17 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | ||
18 | /* | ||
19 | * Make sure we are not reinitializing a held semaphore: | ||
20 | */ | ||
21 | debug_check_no_locks_freed((void *)sem, sizeof(*sem)); | ||
22 | lockdep_init_map(&sem->dep_map, name, key); | ||
23 | #endif | ||
24 | sem->count = RWSEM_UNLOCKED_VALUE; | ||
25 | spin_lock_init(&sem->wait_lock); | ||
26 | INIT_LIST_HEAD(&sem->wait_list); | ||
27 | } | ||
28 | |||
29 | EXPORT_SYMBOL(__init_rwsem); | ||
30 | |||
11 | struct rwsem_waiter { | 31 | struct rwsem_waiter { |
12 | struct list_head list; | 32 | struct list_head list; |
13 | struct task_struct *task; | 33 | struct task_struct *task; |