125 return flags;
126}
127EXPORT_SYMBOL(_read_lock_irqsave);
128
129void __lockfunc _read_lock_irq(rwlock_t *lock)
130{
131 local_irq_disable();
132 preempt_disable();
133 rwlock_acquire_read(&lock->dep_map, 0, 0, _RET_IP_);
134 LOCK_CONTENDED(lock, _raw_read_trylock, _raw_read_lock);
135}
136EXPORT_SYMBOL(_read_lock_irq);
137
138void __lockfunc _read_lock_bh(rwlock_t *lock)
139{
140 local_bh_disable();
141 preempt_disable();
142 rwlock_acquire_read(&lock->dep_map, 0, 0, _RET_IP_);
143 LOCK_CONTENDED(lock, _raw_read_trylock, _raw_read_lock);
144}
145EXPORT_SYMBOL(_read_lock_bh);
146
147unsigned long __lockfunc _write_lock_irqsave(rwlock_t *lock)
148{
149 unsigned long flags;
150
151 local_irq_save(flags);
152 preempt_disable();
153 rwlock_acquire(&lock->dep_map, 0, 0, _RET_IP_);
154 LOCK_CONTENDED(lock, _raw_write_trylock, _raw_write_lock);
155 return flags;
156}
157EXPORT_SYMBOL(_write_lock_irqsave);
158
159void __lockfunc _write_lock_irq(rwlock_t *lock)
160{
161 local_irq_disable();
162 preempt_disable();
163 rwlock_acquire(&lock->dep_map, 0, 0, _RET_IP_);
164 LOCK_CONTENDED(lock, _raw_write_trylock, _raw_write_lock);
165}