1 #ifndef _LINUX_LOCKS_H 2 #define _LINUX_LOCKS_H 3 4 #ifndef _LINUX_MM_H 5 #include <linux/mm.h> 6 #endif 7 #ifndef _LINUX_PAGEMAP_H 8 #include <linux/pagemap.h> 9 #endif 10 11 /* 12 * Buffer cache locking - note that interrupts may only unlock, not 13 * lock buffers. 14 */ 15 extern void __wait_on_buffer(struct buffer_head *); 16 wait_on_buffer(struct buffer_head * bh)17static inline void wait_on_buffer(struct buffer_head * bh) 18 { 19 if (test_bit(BH_Lock, &bh->b_state)) 20 __wait_on_buffer(bh); 21 } 22 lock_buffer(struct buffer_head * bh)23static inline void lock_buffer(struct buffer_head * bh) 24 { 25 while (test_and_set_bit(BH_Lock, &bh->b_state)) 26 __wait_on_buffer(bh); 27 } 28 29 extern void FASTCALL(unlock_buffer(struct buffer_head *bh)); 30 31 /* 32 * super-block locking. Again, interrupts may only unlock 33 * a super-block (although even this isn't done right now. 34 * nfs may need it). 35 */ 36 lock_super(struct super_block * sb)37static inline void lock_super(struct super_block * sb) 38 { 39 down(&sb->s_lock); 40 } 41 unlock_super(struct super_block * sb)42static inline void unlock_super(struct super_block * sb) 43 { 44 up(&sb->s_lock); 45 } 46 47 #endif /* _LINUX_LOCKS_H */ 48 49