diff options
Diffstat (limited to 'module/spl/spl-rwlock.c')
-rw-r--r-- | module/spl/spl-rwlock.c | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/module/spl/spl-rwlock.c b/module/spl/spl-rwlock.c index 462a6f0de..98251c011 100644 --- a/module/spl/spl-rwlock.c +++ b/module/spl/spl-rwlock.c @@ -32,65 +32,5 @@ #define DEBUG_SUBSYSTEM S_RWLOCK -#ifdef CONFIG_RWSEM_GENERIC_SPINLOCK - -/* - * From lib/rwsem-spinlock.c but modified such that the caller is - * responsible for acquiring and dropping the sem->wait_lock. - */ -struct rwsem_waiter { - struct list_head list; - struct task_struct *task; - unsigned int flags; -#define RWSEM_WAITING_FOR_READ 0x00000001 -#define RWSEM_WAITING_FOR_WRITE 0x00000002 -}; - -/* wake a single writer */ -static struct rw_semaphore * -__rwsem_wake_one_writer_locked(struct rw_semaphore *sem) -{ - struct rwsem_waiter *waiter; - struct task_struct *tsk; - - sem->activity = -1; - - waiter = list_entry(sem->wait_list.next, struct rwsem_waiter, list); - list_del(&waiter->list); - - tsk = waiter->task; - smp_mb(); - waiter->task = NULL; - wake_up_process(tsk); - put_task_struct(tsk); - return sem; -} - -/* release a read lock on the semaphore */ -void -__up_read_locked(struct rw_semaphore *sem) -{ - if (--sem->activity == 0 && !list_empty(&sem->wait_list)) - (void)__rwsem_wake_one_writer_locked(sem); -} -EXPORT_SYMBOL(__up_read_locked); - -/* trylock for writing -- returns 1 if successful, 0 if contention */ -int -__down_write_trylock_locked(struct rw_semaphore *sem) -{ - int ret = 0; - - if (sem->activity == 0 && list_empty(&sem->wait_list)) { - sem->activity = -1; - ret = 1; - } - - return ret; -} -EXPORT_SYMBOL(__down_write_trylock_locked); - -#endif - int spl_rw_init(void) { return 0; } void spl_rw_fini(void) { } |