Blame view

include/linux/spinlock_api_up.h 3.16 KB
fb1c8f93d   Ingo Molnar   [PATCH] spinlock ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  #ifndef __LINUX_SPINLOCK_API_UP_H
  #define __LINUX_SPINLOCK_API_UP_H
  
  #ifndef __LINUX_SPINLOCK_H
  # error "please don't include this file directly"
  #endif
  
  /*
   * include/linux/spinlock_api_up.h
   *
   * spinlock API implementation on UP-nondebug (inlined implementation)
   *
   * portions Copyright 2005, Red Hat, Inc., Ingo Molnar
   * Released under the General Public License (GPL).
   */
  
  #define in_lock_functions(ADDR)		0
c2f21ce2e   Thomas Gleixner   locking: Implemen...
18
  #define assert_raw_spin_locked(lock)	do { (void)(lock); } while (0)
fb1c8f93d   Ingo Molnar   [PATCH] spinlock ...
19
20
21
22
  
  /*
   * In the UP-nondebug case there's no real locking going on, so the
   * only thing we have to do is to keep the preempt counts and irq
fd3f8984f   Joe Perches   include/linux/: S...
23
   * flags straight, to suppress compiler warnings of unused lock
fb1c8f93d   Ingo Molnar   [PATCH] spinlock ...
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
   * variables, and to add the proper checker annotations:
   */
  #define __LOCK(lock) \
    do { preempt_disable(); __acquire(lock); (void)(lock); } while (0)
  
  #define __LOCK_BH(lock) \
    do { local_bh_disable(); __LOCK(lock); } while (0)
  
  #define __LOCK_IRQ(lock) \
    do { local_irq_disable(); __LOCK(lock); } while (0)
  
  #define __LOCK_IRQSAVE(lock, flags) \
    do { local_irq_save(flags); __LOCK(lock); } while (0)
  
  #define __UNLOCK(lock) \
    do { preempt_enable(); __release(lock); (void)(lock); } while (0)
  
  #define __UNLOCK_BH(lock) \
9c1721aa4   Thomas Gleixner   locking: Cleanup ...
42
43
    do { preempt_enable_no_resched(); local_bh_enable(); \
  	  __release(lock); (void)(lock); } while (0)
fb1c8f93d   Ingo Molnar   [PATCH] spinlock ...
44
45
46
47
48
49
  
  #define __UNLOCK_IRQ(lock) \
    do { local_irq_enable(); __UNLOCK(lock); } while (0)
  
  #define __UNLOCK_IRQRESTORE(lock, flags) \
    do { local_irq_restore(flags); __UNLOCK(lock); } while (0)
9c1721aa4   Thomas Gleixner   locking: Cleanup ...
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
  #define _raw_spin_lock(lock)			__LOCK(lock)
  #define _raw_spin_lock_nested(lock, subclass)	__LOCK(lock)
  #define _raw_read_lock(lock)			__LOCK(lock)
  #define _raw_write_lock(lock)			__LOCK(lock)
  #define _raw_spin_lock_bh(lock)			__LOCK_BH(lock)
  #define _raw_read_lock_bh(lock)			__LOCK_BH(lock)
  #define _raw_write_lock_bh(lock)		__LOCK_BH(lock)
  #define _raw_spin_lock_irq(lock)		__LOCK_IRQ(lock)
  #define _raw_read_lock_irq(lock)		__LOCK_IRQ(lock)
  #define _raw_write_lock_irq(lock)		__LOCK_IRQ(lock)
  #define _raw_spin_lock_irqsave(lock, flags)	__LOCK_IRQSAVE(lock, flags)
  #define _raw_read_lock_irqsave(lock, flags)	__LOCK_IRQSAVE(lock, flags)
  #define _raw_write_lock_irqsave(lock, flags)	__LOCK_IRQSAVE(lock, flags)
  #define _raw_spin_trylock(lock)			({ __LOCK(lock); 1; })
  #define _raw_read_trylock(lock)			({ __LOCK(lock); 1; })
  #define _raw_write_trylock(lock)			({ __LOCK(lock); 1; })
  #define _raw_spin_trylock_bh(lock)		({ __LOCK_BH(lock); 1; })
  #define _raw_spin_unlock(lock)			__UNLOCK(lock)
  #define _raw_read_unlock(lock)			__UNLOCK(lock)
  #define _raw_write_unlock(lock)			__UNLOCK(lock)
  #define _raw_spin_unlock_bh(lock)		__UNLOCK_BH(lock)
  #define _raw_write_unlock_bh(lock)		__UNLOCK_BH(lock)
  #define _raw_read_unlock_bh(lock)		__UNLOCK_BH(lock)
  #define _raw_spin_unlock_irq(lock)		__UNLOCK_IRQ(lock)
  #define _raw_read_unlock_irq(lock)		__UNLOCK_IRQ(lock)
  #define _raw_write_unlock_irq(lock)		__UNLOCK_IRQ(lock)
  #define _raw_spin_unlock_irqrestore(lock, flags) \
  					__UNLOCK_IRQRESTORE(lock, flags)
  #define _raw_read_unlock_irqrestore(lock, flags) \
  					__UNLOCK_IRQRESTORE(lock, flags)
  #define _raw_write_unlock_irqrestore(lock, flags) \
  					__UNLOCK_IRQRESTORE(lock, flags)
fb1c8f93d   Ingo Molnar   [PATCH] spinlock ...
82
83
  
  #endif /* __LINUX_SPINLOCK_API_UP_H */