hc
2023-12-09 958e46acc8e900e8569dd467c1af9b8d2d019394
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
#ifndef __LINUX_SPINLOCK_TYPES_RAW_H
#define __LINUX_SPINLOCK_TYPES_RAW_H
 
#include <linux/types.h>
 
#if defined(CONFIG_SMP)
# include <asm/spinlock_types.h>
#else
# include <linux/spinlock_types_up.h>
#endif
 
#include <linux/lockdep_types.h>
 
typedef struct raw_spinlock {
   arch_spinlock_t raw_lock;
#ifdef CONFIG_DEBUG_SPINLOCK
   unsigned int magic, owner_cpu;
   void *owner;
#endif
#ifdef CONFIG_DEBUG_LOCK_ALLOC
   struct lockdep_map dep_map;
#endif
} raw_spinlock_t;
 
#define SPINLOCK_MAGIC        0xdead4ead
 
#define SPINLOCK_OWNER_INIT    ((void *)-1L)
 
#ifdef CONFIG_DEBUG_LOCK_ALLOC
# define RAW_SPIN_DEP_MAP_INIT(lockname)        \
   .dep_map = {                    \
       .name = #lockname,            \
       .wait_type_inner = LD_WAIT_SPIN,    \
   }
# define SPIN_DEP_MAP_INIT(lockname)            \
   .dep_map = {                    \
       .name = #lockname,            \
       .wait_type_inner = LD_WAIT_CONFIG,    \
   }
#else
# define RAW_SPIN_DEP_MAP_INIT(lockname)
# define SPIN_DEP_MAP_INIT(lockname)
#endif
 
#ifdef CONFIG_DEBUG_SPINLOCK
# define SPIN_DEBUG_INIT(lockname)        \
   .magic = SPINLOCK_MAGIC,        \
   .owner_cpu = -1,            \
   .owner = SPINLOCK_OWNER_INIT,
#else
# define SPIN_DEBUG_INIT(lockname)
#endif
 
#define __RAW_SPIN_LOCK_INITIALIZER(lockname)    \
{                        \
   .raw_lock = __ARCH_SPIN_LOCK_UNLOCKED,    \
   SPIN_DEBUG_INIT(lockname)        \
   RAW_SPIN_DEP_MAP_INIT(lockname) }
 
#define __RAW_SPIN_LOCK_UNLOCKED(lockname)    \
   (raw_spinlock_t) __RAW_SPIN_LOCK_INITIALIZER(lockname)
 
#define DEFINE_RAW_SPINLOCK(x)  raw_spinlock_t x = __RAW_SPIN_LOCK_UNLOCKED(x)
 
#endif