1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #define RWSEM_READER_OWNED ((struct task_struct *)1UL)
- #ifdef CONFIG_RWSEM_SPIN_ON_OWNER
- static inline void rwsem_set_owner(struct rw_semaphore *sem)
- {
- WRITE_ONCE(sem->owner, current);
- }
- static inline void rwsem_clear_owner(struct rw_semaphore *sem)
- {
- WRITE_ONCE(sem->owner, NULL);
- }
- static inline void rwsem_set_reader_owned(struct rw_semaphore *sem)
- {
-
- if (sem->owner != RWSEM_READER_OWNED)
- WRITE_ONCE(sem->owner, RWSEM_READER_OWNED);
- }
- static inline bool rwsem_owner_is_writer(struct task_struct *owner)
- {
- return owner && owner != RWSEM_READER_OWNED;
- }
- static inline bool rwsem_owner_is_reader(struct task_struct *owner)
- {
- return owner == RWSEM_READER_OWNED;
- }
- #else
- static inline void rwsem_set_owner(struct rw_semaphore *sem)
- {
- }
- static inline void rwsem_clear_owner(struct rw_semaphore *sem)
- {
- }
- static inline void rwsem_set_reader_owned(struct rw_semaphore *sem)
- {
- }
- #endif
|