1 #ifndef __LINUX_SPINLOCK_TYPES_RT_H
2 #define __LINUX_SPINLOCK_TYPES_RT_H
4 #ifndef __LINUX_SPINLOCK_TYPES_H
5 #error "Do not include directly. Include spinlock_types.h instead"
8 #include <linux/cache.h>
11 * PREEMPT_RT: spinlocks - an RT mutex plus lock-break field:
13 typedef struct spinlock {
15 unsigned int break_lock;
16 #ifdef CONFIG_DEBUG_LOCK_ALLOC
17 struct lockdep_map dep_map;
21 #ifdef CONFIG_DEBUG_RT_MUTEXES
22 # define __RT_SPIN_INITIALIZER(name) \
24 .wait_lock = __RAW_SPIN_LOCK_UNLOCKED(name.wait_lock), \
30 # define __RT_SPIN_INITIALIZER(name) \
32 .wait_lock = __RAW_SPIN_LOCK_UNLOCKED(name.wait_lock), \
38 .wait_list = PLIST_HEAD_INIT_RAW((name).lock.wait_list, (name).lock.wait_lock)
41 #define __SPIN_LOCK_UNLOCKED(name) \
42 { .lock = __RT_SPIN_INITIALIZER(name.lock), \
43 SPIN_DEP_MAP_INIT(name) }
45 #define __DEFINE_SPINLOCK(name) \
46 spinlock_t name = __SPIN_LOCK_UNLOCKED(name)
48 #define DEFINE_SPINLOCK(name) \
49 spinlock_t name __cacheline_aligned_in_smp = __SPIN_LOCK_UNLOCKED(name)