X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=lib%2Frwsem.c;h=cdb4e3d0560733c2706a27ccd20681017da2e34a;hb=14f7d720bb6cc60be8931ea1a0f547dc1e475b88;hp=bae597284889e9ea3db078ec7c2907016655541e;hpb=c4e05116a2c4d8187127dbf77ab790aa57a47388;p=powerpc.git diff --git a/lib/rwsem.c b/lib/rwsem.c index bae5972848..cdb4e3d056 100644 --- a/lib/rwsem.c +++ b/lib/rwsem.c @@ -8,6 +8,26 @@ #include #include +/* + * Initialize an rwsem: + */ +void __init_rwsem(struct rw_semaphore *sem, const char *name, + struct lock_class_key *key) +{ +#ifdef CONFIG_DEBUG_LOCK_ALLOC + /* + * Make sure we are not reinitializing a held semaphore: + */ + debug_check_no_locks_freed((void *)sem, sizeof(*sem)); + lockdep_init_map(&sem->dep_map, name, key, 0); +#endif + sem->count = RWSEM_UNLOCKED_VALUE; + spin_lock_init(&sem->wait_lock); + INIT_LIST_HEAD(&sem->wait_list); +} + +EXPORT_SYMBOL(__init_rwsem); + struct rwsem_waiter { struct list_head list; struct task_struct *task; @@ -126,7 +146,7 @@ __rwsem_do_wake(struct rw_semaphore *sem, int downgrading) /* * wait for a lock to be granted */ -static inline struct rw_semaphore * +static struct rw_semaphore * rwsem_down_failed_common(struct rw_semaphore *sem, struct rwsem_waiter *waiter, signed long adjustment) {