pre-2.3.4..
[davej-history.git] / include / linux / locks.h
blob2094a4d19f7938ed95fd132f5d4c3bfe663ef077
1 #ifndef _LINUX_LOCKS_H
2 #define _LINUX_LOCKS_H
4 #ifndef _LINUX_MM_H
5 #include <linux/mm.h>
6 #endif
7 #ifndef _LINUX_PAGEMAP_H
8 #include <linux/pagemap.h>
9 #endif
12 * Buffer cache locking - note that interrupts may only unlock, not
13 * lock buffers.
15 extern void __wait_on_buffer(struct buffer_head *);
17 extern inline void wait_on_buffer(struct buffer_head * bh)
19 if (test_bit(BH_Lock, &bh->b_state))
20 __wait_on_buffer(bh);
23 extern inline void lock_buffer(struct buffer_head * bh)
25 while (test_and_set_bit(BH_Lock, &bh->b_state))
26 __wait_on_buffer(bh);
29 extern inline void unlock_buffer(struct buffer_head *bh)
31 clear_bit(BH_Lock, &bh->b_state);
32 wake_up(&bh->b_wait);
36 * super-block locking. Again, interrupts may only unlock
37 * a super-block (although even this isn't done right now.
38 * nfs may need it).
40 extern void __wait_on_super(struct super_block *);
42 extern inline void wait_on_super(struct super_block * sb)
44 if (sb->s_lock)
45 __wait_on_super(sb);
48 extern inline void lock_super(struct super_block * sb)
50 if (sb->s_lock)
51 __wait_on_super(sb);
52 sb->s_lock = 1;
55 extern inline void unlock_super(struct super_block * sb)
57 sb->s_lock = 0;
58 wake_up(&sb->s_wait);
61 #endif /* _LINUX_LOCKS_H */