56 lines
1 KiB
C
56 lines
1 KiB
C
#ifndef _LINUX_LOCKS_H
|
|
#define _LINUX_LOCKS_H
|
|
|
|
/*
|
|
* Buffer cache locking - note that interrupts may only unlock, not
|
|
* lock buffers.
|
|
*/
|
|
extern void __wait_on_buffer(struct buffer_head *);
|
|
|
|
extern inline void wait_on_buffer(struct buffer_head * bh)
|
|
{
|
|
if (bh->b_lock)
|
|
__wait_on_buffer(bh);
|
|
}
|
|
|
|
extern inline void lock_buffer(struct buffer_head * bh)
|
|
{
|
|
if (bh->b_lock)
|
|
__wait_on_buffer(bh);
|
|
bh->b_lock = 1;
|
|
}
|
|
|
|
extern inline void unlock_buffer(struct buffer_head * bh)
|
|
{
|
|
bh->b_lock = 0;
|
|
wake_up(&bh->b_wait);
|
|
}
|
|
|
|
/*
|
|
* super-block locking. Again, interrupts may only unlock
|
|
* a super-block (although even this isn't done right now.
|
|
* nfs may need it).
|
|
*/
|
|
extern void __wait_on_super(struct super_block *);
|
|
|
|
extern inline void wait_on_super(struct super_block * sb)
|
|
{
|
|
if (sb->s_lock)
|
|
__wait_on_super(sb);
|
|
}
|
|
|
|
extern inline void lock_super(struct super_block * sb)
|
|
{
|
|
if (sb->s_lock)
|
|
__wait_on_super(sb);
|
|
sb->s_lock = 1;
|
|
}
|
|
|
|
extern inline void unlock_super(struct super_block * sb)
|
|
{
|
|
sb->s_lock = 0;
|
|
wake_up(&sb->s_wait);
|
|
}
|
|
|
|
#endif /* _LINUX_LOCKS_H */
|
|
|