percpu-rwsem.h 719 B

1234567891011121314151617181920212223242526
  1. #ifndef _LINUX_PERCPU_RWSEM_H
  2. #define _LINUX_PERCPU_RWSEM_H
  3. #include <linux/mutex.h>
  4. #include <linux/rwsem.h>
  5. #include <linux/percpu.h>
  6. #include <linux/wait.h>
  7. struct percpu_rw_semaphore {
  8. unsigned int __percpu *fast_read_ctr;
  9. struct mutex writer_mutex;
  10. struct rw_semaphore rw_sem;
  11. atomic_t slow_read_ctr;
  12. wait_queue_head_t write_waitq;
  13. };
  14. extern void percpu_down_read(struct percpu_rw_semaphore *);
  15. extern void percpu_up_read(struct percpu_rw_semaphore *);
  16. extern void percpu_down_write(struct percpu_rw_semaphore *);
  17. extern void percpu_up_write(struct percpu_rw_semaphore *);
  18. extern int percpu_init_rwsem(struct percpu_rw_semaphore *);
  19. extern void percpu_free_rwsem(struct percpu_rw_semaphore *);
  20. #endif