spinlock_api_smp.h 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #ifndef __LINUX_SPINLOCK_API_SMP_H
  2. #define __LINUX_SPINLOCK_API_SMP_H
  3. #ifndef __LINUX_SPINLOCK_H
  4. # error "please don't include this file directly"
  5. #endif
  6. /*
  7. * include/linux/spinlock_api_smp.h
  8. *
  9. * spinlock API declarations on SMP (and debug)
  10. * (implemented in kernel/spinlock.c)
  11. *
  12. * portions Copyright 2005, Red Hat, Inc., Ingo Molnar
  13. * Released under the General Public License (GPL).
  14. */
  15. int in_lock_functions(unsigned long addr);
  16. #define assert_spin_locked(x) BUG_ON(!spin_is_locked(x))
  17. void __lockfunc _spin_lock(spinlock_t *lock) __acquires(lock);
  18. void __lockfunc _spin_lock_nested(spinlock_t *lock, int subclass)
  19. __acquires(lock);
  20. void __lockfunc _read_lock(rwlock_t *lock) __acquires(lock);
  21. void __lockfunc _write_lock(rwlock_t *lock) __acquires(lock);
  22. void __lockfunc _spin_lock_bh(spinlock_t *lock) __acquires(lock);
  23. void __lockfunc _read_lock_bh(rwlock_t *lock) __acquires(lock);
  24. void __lockfunc _write_lock_bh(rwlock_t *lock) __acquires(lock);
  25. void __lockfunc _spin_lock_irq(spinlock_t *lock) __acquires(lock);
  26. void __lockfunc _read_lock_irq(rwlock_t *lock) __acquires(lock);
  27. void __lockfunc _write_lock_irq(rwlock_t *lock) __acquires(lock);
  28. unsigned long __lockfunc _spin_lock_irqsave(spinlock_t *lock)
  29. __acquires(lock);
  30. unsigned long __lockfunc _spin_lock_irqsave_nested(spinlock_t *lock, int subclass)
  31. __acquires(lock);
  32. unsigned long __lockfunc _read_lock_irqsave(rwlock_t *lock)
  33. __acquires(lock);
  34. unsigned long __lockfunc _write_lock_irqsave(rwlock_t *lock)
  35. __acquires(lock);
  36. int __lockfunc _spin_trylock(spinlock_t *lock);
  37. int __lockfunc _read_trylock(rwlock_t *lock);
  38. int __lockfunc _write_trylock(rwlock_t *lock);
  39. int __lockfunc _spin_trylock_bh(spinlock_t *lock);
  40. void __lockfunc _spin_unlock(spinlock_t *lock) __releases(lock);
  41. void __lockfunc _read_unlock(rwlock_t *lock) __releases(lock);
  42. void __lockfunc _write_unlock(rwlock_t *lock) __releases(lock);
  43. void __lockfunc _spin_unlock_bh(spinlock_t *lock) __releases(lock);
  44. void __lockfunc _read_unlock_bh(rwlock_t *lock) __releases(lock);
  45. void __lockfunc _write_unlock_bh(rwlock_t *lock) __releases(lock);
  46. void __lockfunc _spin_unlock_irq(spinlock_t *lock) __releases(lock);
  47. void __lockfunc _read_unlock_irq(rwlock_t *lock) __releases(lock);
  48. void __lockfunc _write_unlock_irq(rwlock_t *lock) __releases(lock);
  49. void __lockfunc _spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags)
  50. __releases(lock);
  51. void __lockfunc _read_unlock_irqrestore(rwlock_t *lock, unsigned long flags)
  52. __releases(lock);
  53. void __lockfunc _write_unlock_irqrestore(rwlock_t *lock, unsigned long flags)
  54. __releases(lock);
  55. #endif /* __LINUX_SPINLOCK_API_SMP_H */