From fbf8e63f2a1d2a5b515779f18afbf82f8c40d8e8 Mon Sep 17 00:00:00 2001 From: Amerigo Wang Date: Mon, 14 Dec 2009 18:00:21 -0800 Subject: [PATCH] --- yaml --- r: 176335 b: refs/heads/master c: 29671f22a8b6522db3b126a3fdfb208759ce46e3 h: refs/heads/master i: 176333: d8173de45c89df271a926da2bc83260c1b1e497a 176331: ff66d0d5d3a06501bd1d5ecc34667109e9bc5dd7 176327: 00bbe59204ff9087e8700283dcf2c71a1043878f 176319: 350c46303e91198db62b3960d10c7664a4c1258c v: v3 --- [refs] | 2 +- trunk/include/linux/rwsem-spinlock.h | 6 +----- trunk/lib/rwsem-spinlock.c | 13 +++++++++++++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 666afecf2c99..073eed4a9982 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 118d52da1816471ac875bb9f1ee51737e82b1d71 +refs/heads/master: 29671f22a8b6522db3b126a3fdfb208759ce46e3 diff --git a/trunk/include/linux/rwsem-spinlock.h b/trunk/include/linux/rwsem-spinlock.h index 6c3c0f6c261f..bdfcc2527970 100644 --- a/trunk/include/linux/rwsem-spinlock.h +++ b/trunk/include/linux/rwsem-spinlock.h @@ -68,11 +68,7 @@ extern int __down_write_trylock(struct rw_semaphore *sem); extern void __up_read(struct rw_semaphore *sem); extern void __up_write(struct rw_semaphore *sem); extern void __downgrade_write(struct rw_semaphore *sem); - -static inline int rwsem_is_locked(struct rw_semaphore *sem) -{ - return (sem->activity != 0); -} +extern int rwsem_is_locked(struct rw_semaphore *sem); #endif /* __KERNEL__ */ #endif /* _LINUX_RWSEM_SPINLOCK_H */ diff --git a/trunk/lib/rwsem-spinlock.c b/trunk/lib/rwsem-spinlock.c index 39a74110f55b..ccf95bff7984 100644 --- a/trunk/lib/rwsem-spinlock.c +++ b/trunk/lib/rwsem-spinlock.c @@ -17,6 +17,19 @@ struct rwsem_waiter { #define RWSEM_WAITING_FOR_WRITE 0x00000002 }; +int rwsem_is_locked(struct rw_semaphore *sem) +{ + int ret = 1; + unsigned long flags; + + if (spin_trylock_irqsave(&sem->wait_lock, flags)) { + ret = (sem->activity != 0); + spin_unlock_irqrestore(&sem->wait_lock, flags); + } + return ret; +} +EXPORT_SYMBOL(rwsem_is_locked); + /* * initialise the semaphore */