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