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 */ 15extern void __wait_on_buffer(struct buffer_head *); 16 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 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 29extern 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 37static inline void lock_super(struct super_block * sb) 38{ 39 down(&sb->s_lock); 40} 41 42static inline void unlock_super(struct super_block * sb) 43{ 44 up(&sb->s_lock); 45} 46 47#endif /* _LINUX_LOCKS_H */ 48 49

