locks.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

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