]> rtime.felk.cvut.cz Git - hercules2020/nv-tegra/linux-4.4.git/blob - rt-patches/0121-spinlock-Split-the-lock-types-header.patch
Fix memguard and related syscalls
[hercules2020/nv-tegra/linux-4.4.git] / rt-patches / 0121-spinlock-Split-the-lock-types-header.patch
1 From 24141c0e59b1e9150f7f80670c6f33f8e80faffc Mon Sep 17 00:00:00 2001
2 From: Thomas Gleixner <tglx@linutronix.de>
3 Date: Wed, 29 Jun 2011 19:34:01 +0200
4 Subject: [PATCH 121/366] spinlock: Split the lock types header
5
6 Split raw_spinlock into its own file and the remaining spinlock_t into
7 its own non-RT header. The non-RT header will be replaced later by sleeping
8 spinlocks.
9
10 Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
11 ---
12  include/linux/rwlock_types.h        |  4 ++
13  include/linux/spinlock_types.h      | 74 +------------------------------------
14  include/linux/spinlock_types_nort.h | 33 +++++++++++++++++
15  include/linux/spinlock_types_raw.h  | 56 ++++++++++++++++++++++++++++
16  4 files changed, 95 insertions(+), 72 deletions(-)
17  create mode 100644 include/linux/spinlock_types_nort.h
18  create mode 100644 include/linux/spinlock_types_raw.h
19
20 diff --git a/include/linux/rwlock_types.h b/include/linux/rwlock_types.h
21 index cc0072e..5317cd9 100644
22 --- a/include/linux/rwlock_types.h
23 +++ b/include/linux/rwlock_types.h
24 @@ -1,6 +1,10 @@
25  #ifndef __LINUX_RWLOCK_TYPES_H
26  #define __LINUX_RWLOCK_TYPES_H
27  
28 +#if !defined(__LINUX_SPINLOCK_TYPES_H)
29 +# error "Do not include directly, include spinlock_types.h"
30 +#endif
31 +
32  /*
33   * include/linux/rwlock_types.h - generic rwlock type definitions
34   *                               and initializers
35 diff --git a/include/linux/spinlock_types.h b/include/linux/spinlock_types.h
36 index 73548eb..5c8664d 100644
37 --- a/include/linux/spinlock_types.h
38 +++ b/include/linux/spinlock_types.h
39 @@ -9,79 +9,9 @@
40   * Released under the General Public License (GPL).
41   */
42  
43 -#if defined(CONFIG_SMP)
44 -# include <asm/spinlock_types.h>
45 -#else
46 -# include <linux/spinlock_types_up.h>
47 -#endif
48 +#include <linux/spinlock_types_raw.h>
49  
50 -#include <linux/lockdep.h>
51 -
52 -typedef struct raw_spinlock {
53 -       arch_spinlock_t raw_lock;
54 -#ifdef CONFIG_GENERIC_LOCKBREAK
55 -       unsigned int break_lock;
56 -#endif
57 -#ifdef CONFIG_DEBUG_SPINLOCK
58 -       unsigned int magic, owner_cpu;
59 -       void *owner;
60 -#endif
61 -#ifdef CONFIG_DEBUG_LOCK_ALLOC
62 -       struct lockdep_map dep_map;
63 -#endif
64 -} raw_spinlock_t;
65 -
66 -#define SPINLOCK_MAGIC         0xdead4ead
67 -
68 -#define SPINLOCK_OWNER_INIT    ((void *)-1L)
69 -
70 -#ifdef CONFIG_DEBUG_LOCK_ALLOC
71 -# define SPIN_DEP_MAP_INIT(lockname)   .dep_map = { .name = #lockname }
72 -#else
73 -# define SPIN_DEP_MAP_INIT(lockname)
74 -#endif
75 -
76 -#ifdef CONFIG_DEBUG_SPINLOCK
77 -# define SPIN_DEBUG_INIT(lockname)             \
78 -       .magic = SPINLOCK_MAGIC,                \
79 -       .owner_cpu = -1,                        \
80 -       .owner = SPINLOCK_OWNER_INIT,
81 -#else
82 -# define SPIN_DEBUG_INIT(lockname)
83 -#endif
84 -
85 -#define __RAW_SPIN_LOCK_INITIALIZER(lockname)  \
86 -       {                                       \
87 -       .raw_lock = __ARCH_SPIN_LOCK_UNLOCKED,  \
88 -       SPIN_DEBUG_INIT(lockname)               \
89 -       SPIN_DEP_MAP_INIT(lockname) }
90 -
91 -#define __RAW_SPIN_LOCK_UNLOCKED(lockname)     \
92 -       (raw_spinlock_t) __RAW_SPIN_LOCK_INITIALIZER(lockname)
93 -
94 -#define DEFINE_RAW_SPINLOCK(x) raw_spinlock_t x = __RAW_SPIN_LOCK_UNLOCKED(x)
95 -
96 -typedef struct spinlock {
97 -       union {
98 -               struct raw_spinlock rlock;
99 -
100 -#ifdef CONFIG_DEBUG_LOCK_ALLOC
101 -# define LOCK_PADSIZE (offsetof(struct raw_spinlock, dep_map))
102 -               struct {
103 -                       u8 __padding[LOCK_PADSIZE];
104 -                       struct lockdep_map dep_map;
105 -               };
106 -#endif
107 -       };
108 -} spinlock_t;
109 -
110 -#define __SPIN_LOCK_INITIALIZER(lockname) \
111 -       { { .rlock = __RAW_SPIN_LOCK_INITIALIZER(lockname) } }
112 -
113 -#define __SPIN_LOCK_UNLOCKED(lockname) \
114 -       (spinlock_t ) __SPIN_LOCK_INITIALIZER(lockname)
115 -
116 -#define DEFINE_SPINLOCK(x)     spinlock_t x = __SPIN_LOCK_UNLOCKED(x)
117 +#include <linux/spinlock_types_nort.h>
118  
119  #include <linux/rwlock_types.h>
120  
121 diff --git a/include/linux/spinlock_types_nort.h b/include/linux/spinlock_types_nort.h
122 new file mode 100644
123 index 0000000..f1dac1f
124 --- /dev/null
125 +++ b/include/linux/spinlock_types_nort.h
126 @@ -0,0 +1,33 @@
127 +#ifndef __LINUX_SPINLOCK_TYPES_NORT_H
128 +#define __LINUX_SPINLOCK_TYPES_NORT_H
129 +
130 +#ifndef __LINUX_SPINLOCK_TYPES_H
131 +#error "Do not include directly. Include spinlock_types.h instead"
132 +#endif
133 +
134 +/*
135 + * The non RT version maps spinlocks to raw_spinlocks
136 + */
137 +typedef struct spinlock {
138 +       union {
139 +               struct raw_spinlock rlock;
140 +
141 +#ifdef CONFIG_DEBUG_LOCK_ALLOC
142 +# define LOCK_PADSIZE (offsetof(struct raw_spinlock, dep_map))
143 +               struct {
144 +                       u8 __padding[LOCK_PADSIZE];
145 +                       struct lockdep_map dep_map;
146 +               };
147 +#endif
148 +       };
149 +} spinlock_t;
150 +
151 +#define __SPIN_LOCK_INITIALIZER(lockname) \
152 +       { { .rlock = __RAW_SPIN_LOCK_INITIALIZER(lockname) } }
153 +
154 +#define __SPIN_LOCK_UNLOCKED(lockname) \
155 +       (spinlock_t ) __SPIN_LOCK_INITIALIZER(lockname)
156 +
157 +#define DEFINE_SPINLOCK(x)     spinlock_t x = __SPIN_LOCK_UNLOCKED(x)
158 +
159 +#endif
160 diff --git a/include/linux/spinlock_types_raw.h b/include/linux/spinlock_types_raw.h
161 new file mode 100644
162 index 0000000..edffc4d
163 --- /dev/null
164 +++ b/include/linux/spinlock_types_raw.h
165 @@ -0,0 +1,56 @@
166 +#ifndef __LINUX_SPINLOCK_TYPES_RAW_H
167 +#define __LINUX_SPINLOCK_TYPES_RAW_H
168 +
169 +#if defined(CONFIG_SMP)
170 +# include <asm/spinlock_types.h>
171 +#else
172 +# include <linux/spinlock_types_up.h>
173 +#endif
174 +
175 +#include <linux/lockdep.h>
176 +
177 +typedef struct raw_spinlock {
178 +       arch_spinlock_t raw_lock;
179 +#ifdef CONFIG_GENERIC_LOCKBREAK
180 +       unsigned int break_lock;
181 +#endif
182 +#ifdef CONFIG_DEBUG_SPINLOCK
183 +       unsigned int magic, owner_cpu;
184 +       void *owner;
185 +#endif
186 +#ifdef CONFIG_DEBUG_LOCK_ALLOC
187 +       struct lockdep_map dep_map;
188 +#endif
189 +} raw_spinlock_t;
190 +
191 +#define SPINLOCK_MAGIC         0xdead4ead
192 +
193 +#define SPINLOCK_OWNER_INIT    ((void *)-1L)
194 +
195 +#ifdef CONFIG_DEBUG_LOCK_ALLOC
196 +# define SPIN_DEP_MAP_INIT(lockname)   .dep_map = { .name = #lockname }
197 +#else
198 +# define SPIN_DEP_MAP_INIT(lockname)
199 +#endif
200 +
201 +#ifdef CONFIG_DEBUG_SPINLOCK
202 +# define SPIN_DEBUG_INIT(lockname)             \
203 +       .magic = SPINLOCK_MAGIC,                \
204 +       .owner_cpu = -1,                        \
205 +       .owner = SPINLOCK_OWNER_INIT,
206 +#else
207 +# define SPIN_DEBUG_INIT(lockname)
208 +#endif
209 +
210 +#define __RAW_SPIN_LOCK_INITIALIZER(lockname)  \
211 +       {                                       \
212 +       .raw_lock = __ARCH_SPIN_LOCK_UNLOCKED,  \
213 +       SPIN_DEBUG_INIT(lockname)               \
214 +       SPIN_DEP_MAP_INIT(lockname) }
215 +
216 +#define __RAW_SPIN_LOCK_UNLOCKED(lockname)     \
217 +       (raw_spinlock_t) __RAW_SPIN_LOCK_INITIALIZER(lockname)
218 +
219 +#define DEFINE_RAW_SPINLOCK(x) raw_spinlock_t x = __RAW_SPIN_LOCK_UNLOCKED(x)
220 +
221 +#endif
222 -- 
223 1.9.1
224