Blame view

kernel/linux-rt-4.4.41/include/linux/spinlock_api_up.h 3.38 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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
82
83
84
85
86
87
88
89
90
91
92
  #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
  
  #define assert_raw_spin_locked(lock)	do { (void)(lock); } while (0)
  
  /*
   * 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
   * flags straight, to suppress compiler warnings of unused lock
   * variables, and to add the proper checker annotations:
   */
  #define ___LOCK(lock) \
    do { __acquire(lock); (void)(lock); } while (0)
  
  #define __LOCK(lock) \
    do { preempt_disable(); ___LOCK(lock); } while (0)
  
  #define __LOCK_BH(lock) \
    do { __local_bh_disable_ip(_THIS_IP_, SOFTIRQ_LOCK_OFFSET); ___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 { __release(lock); (void)(lock); } while (0)
  
  #define __UNLOCK(lock) \
    do { preempt_enable(); ___UNLOCK(lock); } while (0)
  
  #define __UNLOCK_BH(lock) \
    do { __local_bh_enable_ip(_THIS_IP_, SOFTIRQ_LOCK_OFFSET); \
         ___UNLOCK(lock); } while (0)
  
  #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)
  
  #define _raw_spin_lock(lock)			__LOCK(lock)
  #define _raw_spin_lock_nested(lock, subclass)	__LOCK(lock)
  #define _raw_spin_lock_bh_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)
  
  #endif /* __LINUX_SPINLOCK_API_UP_H */