spinlock_api_up.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:3k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef __LINUX_SPINLOCK_API_UP_H
  2. #define __LINUX_SPINLOCK_API_UP_H
  3. #ifndef __LINUX_SPINLOCK_H
  4. # error "please don't include this file directly"
  5. #endif
  6. /*
  7.  * include/linux/spinlock_api_up.h
  8.  *
  9.  * spinlock API implementation on UP-nondebug (inlined implementation)
  10.  *
  11.  * portions Copyright 2005, Red Hat, Inc., Ingo Molnar
  12.  * Released under the General Public License (GPL).
  13.  */
  14. #define in_lock_functions(ADDR) 0
  15. #define assert_spin_locked(lock) do { (void)(lock); } while (0)
  16. /*
  17.  * In the UP-nondebug case there's no real locking going on, so the
  18.  * only thing we have to do is to keep the preempt counts and irq
  19.  * flags straight, to supress compiler warnings of unused lock
  20.  * variables, and to add the proper checker annotations:
  21.  */
  22. #define __LOCK(lock) 
  23.   do { preempt_disable(); __acquire(lock); (void)(lock); } while (0)
  24. #define __LOCK_BH(lock) 
  25.   do { local_bh_disable(); __LOCK(lock); } while (0)
  26. #define __LOCK_IRQ(lock) 
  27.   do { local_irq_disable(); __LOCK(lock); } while (0)
  28. #define __LOCK_IRQSAVE(lock, flags) 
  29.   do { local_irq_save(flags); __LOCK(lock); } while (0)
  30. #define __UNLOCK(lock) 
  31.   do { preempt_enable(); __release(lock); (void)(lock); } while (0)
  32. #define __UNLOCK_BH(lock) 
  33.   do { preempt_enable_no_resched(); local_bh_enable(); __release(lock); (void)(lock); } while (0)
  34. #define __UNLOCK_IRQ(lock) 
  35.   do { local_irq_enable(); __UNLOCK(lock); } while (0)
  36. #define __UNLOCK_IRQRESTORE(lock, flags) 
  37.   do { local_irq_restore(flags); __UNLOCK(lock); } while (0)
  38. #define _spin_lock(lock) __LOCK(lock)
  39. #define _read_lock(lock) __LOCK(lock)
  40. #define _write_lock(lock) __LOCK(lock)
  41. #define _spin_lock_bh(lock) __LOCK_BH(lock)
  42. #define _read_lock_bh(lock) __LOCK_BH(lock)
  43. #define _write_lock_bh(lock) __LOCK_BH(lock)
  44. #define _spin_lock_irq(lock) __LOCK_IRQ(lock)
  45. #define _read_lock_irq(lock) __LOCK_IRQ(lock)
  46. #define _write_lock_irq(lock) __LOCK_IRQ(lock)
  47. #define _spin_lock_irqsave(lock, flags) __LOCK_IRQSAVE(lock, flags)
  48. #define _read_lock_irqsave(lock, flags) __LOCK_IRQSAVE(lock, flags)
  49. #define _write_lock_irqsave(lock, flags) __LOCK_IRQSAVE(lock, flags)
  50. #define _spin_trylock(lock) ({ __LOCK(lock); 1; })
  51. #define _read_trylock(lock) ({ __LOCK(lock); 1; })
  52. #define _write_trylock(lock) ({ __LOCK(lock); 1; })
  53. #define _spin_trylock_bh(lock) ({ __LOCK_BH(lock); 1; })
  54. #define _spin_unlock(lock) __UNLOCK(lock)
  55. #define _read_unlock(lock) __UNLOCK(lock)
  56. #define _write_unlock(lock) __UNLOCK(lock)
  57. #define _spin_unlock_bh(lock) __UNLOCK_BH(lock)
  58. #define _write_unlock_bh(lock) __UNLOCK_BH(lock)
  59. #define _read_unlock_bh(lock) __UNLOCK_BH(lock)
  60. #define _spin_unlock_irq(lock) __UNLOCK_IRQ(lock)
  61. #define _read_unlock_irq(lock) __UNLOCK_IRQ(lock)
  62. #define _write_unlock_irq(lock) __UNLOCK_IRQ(lock)
  63. #define _spin_unlock_irqrestore(lock, flags) __UNLOCK_IRQRESTORE(lock, flags)
  64. #define _read_unlock_irqrestore(lock, flags) __UNLOCK_IRQRESTORE(lock, flags)
  65. #define _write_unlock_irqrestore(lock, flags) __UNLOCK_IRQRESTORE(lock, flags)
  66. #endif /* __LINUX_SPINLOCK_API_UP_H */