• Home
  • Raw
  • Download

Lines Matching refs:rw

73 static  __inline__ void arch_read_lock(arch_rwlock_t *rw)  in arch_read_lock()  argument
77 arch_spin_lock_flags(&rw->lock, flags); in arch_read_lock()
78 rw->counter++; in arch_read_lock()
79 arch_spin_unlock(&rw->lock); in arch_read_lock()
85 static __inline__ void arch_read_unlock(arch_rwlock_t *rw) in arch_read_unlock() argument
89 arch_spin_lock_flags(&rw->lock, flags); in arch_read_unlock()
90 rw->counter--; in arch_read_unlock()
91 arch_spin_unlock(&rw->lock); in arch_read_unlock()
97 static __inline__ int arch_read_trylock(arch_rwlock_t *rw) in arch_read_trylock() argument
102 if (arch_spin_trylock(&rw->lock)) { in arch_read_trylock()
103 rw->counter++; in arch_read_trylock()
104 arch_spin_unlock(&rw->lock); in arch_read_trylock()
111 if (rw->counter < 0) in arch_read_trylock()
115 while (arch_spin_is_locked(&rw->lock) && rw->counter >= 0) in arch_read_trylock()
123 static __inline__ void arch_write_lock(arch_rwlock_t *rw) in arch_write_lock() argument
128 arch_spin_lock_flags(&rw->lock, flags); in arch_write_lock()
130 if (rw->counter != 0) { in arch_write_lock()
131 arch_spin_unlock(&rw->lock); in arch_write_lock()
134 while (rw->counter != 0) in arch_write_lock()
140 rw->counter = -1; /* mark as write-locked */ in arch_write_lock()
145 static __inline__ void arch_write_unlock(arch_rwlock_t *rw) in arch_write_unlock() argument
147 rw->counter = 0; in arch_write_unlock()
148 arch_spin_unlock(&rw->lock); in arch_write_unlock()
153 static __inline__ int arch_write_trylock(arch_rwlock_t *rw) in arch_write_trylock() argument
159 if (arch_spin_trylock(&rw->lock)) { in arch_write_trylock()
160 if (rw->counter == 0) { in arch_write_trylock()
161 rw->counter = -1; in arch_write_trylock()
165 arch_spin_unlock(&rw->lock); in arch_write_trylock()