1197383Sdelphij#ifndef __LINUX_SPINLOCK_TYPES_RAW_H 2197571Sdelphij#define __LINUX_SPINLOCK_TYPES_RAW_H 3197571Sdelphij 4197383Sdelphij#include <linux/types.h> 5197571Sdelphij 6197571Sdelphij#if defined(CONFIG_SMP) 7197571Sdelphij# include <asm/spinlock_types.h> 8197571Sdelphij#else 9197571Sdelphij# include <linux/spinlock_types_up.h> 10197571Sdelphij#endif 11197571Sdelphij 12197571Sdelphij#include <linux/lockdep_types.h> 13197571Sdelphij 14197571Sdelphijtypedef struct raw_spinlock { 15197571Sdelphij arch_spinlock_t raw_lock; 16197571Sdelphij#ifdef CONFIG_DEBUG_SPINLOCK 17197571Sdelphij unsigned int magic, owner_cpu; 18197571Sdelphij void *owner; 19197571Sdelphij#endif 20197571Sdelphij#ifdef CONFIG_DEBUG_LOCK_ALLOC 21197571Sdelphij struct lockdep_map dep_map; 22197571Sdelphij#endif 23197571Sdelphij} raw_spinlock_t; 24197571Sdelphij 25197571Sdelphij#define SPINLOCK_MAGIC 0xdead4ead 26198251Sjkim 27197571Sdelphij#define SPINLOCK_OWNER_INIT ((void *)-1L) 28197571Sdelphij 29197383Sdelphij#ifdef CONFIG_DEBUG_LOCK_ALLOC 30197383Sdelphij# define RAW_SPIN_DEP_MAP_INIT(lockname) \ 31197383Sdelphij .dep_map = { \ 32197383Sdelphij .name = #lockname, \ 33197383Sdelphij .wait_type_inner = LD_WAIT_SPIN, \ 34198251Sjkim } 35197383Sdelphij# define SPIN_DEP_MAP_INIT(lockname) \ 36197383Sdelphij .dep_map = { \ 37197383Sdelphij .name = #lockname, \ 38198251Sjkim .wait_type_inner = LD_WAIT_CONFIG, \ 39197383Sdelphij } 40197383Sdelphij 41197383Sdelphij# define LOCAL_SPIN_DEP_MAP_INIT(lockname) \ 42197383Sdelphij .dep_map = { \ 43198251Sjkim .name = #lockname, \ 44197383Sdelphij .wait_type_inner = LD_WAIT_CONFIG, \ 45197383Sdelphij .lock_type = LD_LOCK_PERCPU, \ 46197383Sdelphij } 47198251Sjkim#else 48198251Sjkim# define RAW_SPIN_DEP_MAP_INIT(lockname) 49197383Sdelphij# define SPIN_DEP_MAP_INIT(lockname) 50197383Sdelphij# define LOCAL_SPIN_DEP_MAP_INIT(lockname) 51197383Sdelphij#endif 52198251Sjkim 53198251Sjkim#ifdef CONFIG_DEBUG_SPINLOCK 54198251Sjkim# define SPIN_DEBUG_INIT(lockname) \ 55198251Sjkim .magic = SPINLOCK_MAGIC, \ 56197383Sdelphij .owner_cpu = -1, \ 57197383Sdelphij .owner = SPINLOCK_OWNER_INIT, 58197383Sdelphij#else 59197383Sdelphij# define SPIN_DEBUG_INIT(lockname) 60197383Sdelphij#endif 61198251Sjkim 62197383Sdelphij#define __RAW_SPIN_LOCK_INITIALIZER(lockname) \ 63197383Sdelphij{ \ 64197383Sdelphij .raw_lock = __ARCH_SPIN_LOCK_UNLOCKED, \ 65198251Sjkim SPIN_DEBUG_INIT(lockname) \ 66197383Sdelphij RAW_SPIN_DEP_MAP_INIT(lockname) } 67197383Sdelphij 68197383Sdelphij#define __RAW_SPIN_LOCK_UNLOCKED(lockname) \ 69198251Sjkim (raw_spinlock_t) __RAW_SPIN_LOCK_INITIALIZER(lockname) 70198251Sjkim 71197383Sdelphij#define DEFINE_RAW_SPINLOCK(x) raw_spinlock_t x = __RAW_SPIN_LOCK_UNLOCKED(x) 72197383Sdelphij 73197383Sdelphij#endif /* __LINUX_SPINLOCK_TYPES_RAW_H */ 74197383Sdelphij