Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / include / linux / spinlock_types_raw.h
1 #ifndef __LINUX_SPINLOCK_TYPES_RAW_H
2 #define __LINUX_SPINLOCK_TYPES_RAW_H
3
4 #if defined(CONFIG_SMP)
5 # include <asm/spinlock_types.h>
6 #else
7 # include <linux/spinlock_types_up.h>
8 #endif
9
10 #include <linux/lockdep.h>
11
12 typedef struct raw_spinlock {
13         arch_spinlock_t raw_lock;
14 #ifdef CONFIG_GENERIC_LOCKBREAK
15         unsigned int break_lock;
16 #endif
17 #ifdef CONFIG_DEBUG_SPINLOCK
18         unsigned int magic, owner_cpu;
19         void *owner;
20 #endif
21 #ifdef CONFIG_DEBUG_LOCK_ALLOC
22         struct lockdep_map dep_map;
23 #endif
24 } raw_spinlock_t;
25
26 #define SPINLOCK_MAGIC          0xdead4ead
27
28 #define SPINLOCK_OWNER_INIT     ((void *)-1L)
29
30 #ifdef CONFIG_DEBUG_LOCK_ALLOC
31 # define SPIN_DEP_MAP_INIT(lockname)    .dep_map = { .name = #lockname }
32 #else
33 # define SPIN_DEP_MAP_INIT(lockname)
34 #endif
35
36 #ifdef CONFIG_DEBUG_SPINLOCK
37 # define SPIN_DEBUG_INIT(lockname)              \
38         .magic = SPINLOCK_MAGIC,                \
39         .owner_cpu = -1,                        \
40         .owner = SPINLOCK_OWNER_INIT,
41 #else
42 # define SPIN_DEBUG_INIT(lockname)
43 #endif
44
45 #define __RAW_SPIN_LOCK_INITIALIZER(lockname)   \
46         {                                       \
47         .raw_lock = __ARCH_SPIN_LOCK_UNLOCKED,  \
48         SPIN_DEBUG_INIT(lockname)               \
49         SPIN_DEP_MAP_INIT(lockname) }
50
51 #define __RAW_SPIN_LOCK_UNLOCKED(lockname)      \
52         (raw_spinlock_t) __RAW_SPIN_LOCK_INITIALIZER(lockname)
53
54 #define DEFINE_RAW_SPINLOCK(x)  raw_spinlock_t x = __RAW_SPIN_LOCK_UNLOCKED(x)
55
56 #endif