9 #include <linux/sched.h>
10 #include <linux/export.h>
16 #define RWSEM_WAITING_FOR_READ 0x00000001
17 #define RWSEM_WAITING_FOR_WRITE 0x00000002
26 ret = (sem->activity != 0);
39 #ifdef CONFIG_DEBUG_LOCK_ALLOC
73 goto dont_wake_writers;
104 put_task_struct(tsk);
111 sem->activity += woken;
135 put_task_struct(tsk);
150 if (sem->activity >= 0 && list_empty(&sem->
wait_list)) {
194 if (sem->activity >= 0 && list_empty(&sem->
wait_list)) {
217 if (sem->activity == 0 && list_empty(&sem->
wait_list)) {
265 if (sem->activity == 0 && list_empty(&sem->
wait_list)) {
285 if (--sem->activity == 0 && !list_empty(&sem->
wait_list))
286 sem = __rwsem_wake_one_writer(sem);
302 sem = __rwsem_do_wake(sem, 1);
319 sem = __rwsem_do_wake(sem, 0);