History

asm-generic, atomic-instrumented: Use generic instrumented.h

This switches atomic-instrumented.h to use the generic instrumentation wrappers provided by instrumented.h. No functional change intended.

Marco Elver committed 6 years ago

Commit ed8af2e1 parent 36e4d4d2 files · +194 −220Browse files

Unified · Split

2 files
  1. include/asm-generic/atomic-instrumented.h +191 −204
  2. scripts/atomic/gen-atomic-instrumented.sh +3 −16
include/asm-generic/atomic-instrumented.h+191−204
@@ -19,25 +19,12 @@ · 18 unmodified lines
19 19
20#include <linux/build_bug.h>20#include <linux/build_bug.h>
21#include <linux/compiler.h>21#include <linux/compiler.h>
22#include <linux/kasan-checks.h>22#include <linux/instrumented.h>
23#include <linux/kcsan-checks.h>
24
25static __always_inline void __atomic_check_read(const volatile void *v, size_t size)
26{
27 kasan_check_read(v, size);
28 kcsan_check_atomic_read(v, size);
29}
30
31static __always_inline void __atomic_check_write(const volatile void *v, size_t size)
32{
33 kasan_check_write(v, size);
34 kcsan_check_atomic_write(v, size);
35}
36 23
37static __always_inline int24static __always_inline int
38atomic_read(const atomic_t *v)25atomic_read(const atomic_t *v)
39{26{
40 __atomic_check_read(v, sizeof(*v));27 instrument_atomic_read(v, sizeof(*v));
41 return arch_atomic_read(v);28 return arch_atomic_read(v);
42}29}
43#define atomic_read atomic_read30#define atomic_read atomic_read
@@ -46,7 +33,7 @@ atomic_read(const atomic_t *v) · 2 unmodified lines
46static __always_inline int33static __always_inline int
47atomic_read_acquire(const atomic_t *v)34atomic_read_acquire(const atomic_t *v)
48{35{
49 __atomic_check_read(v, sizeof(*v));36 instrument_atomic_read(v, sizeof(*v));
50 return arch_atomic_read_acquire(v);37 return arch_atomic_read_acquire(v);
51}38}
52#define atomic_read_acquire atomic_read_acquire39#define atomic_read_acquire atomic_read_acquire
@@ -55,7 +42,7 @@ atomic_read_acquire(const atomic_t *v) · 2 unmodified lines
55static __always_inline void42static __always_inline void
56atomic_set(atomic_t *v, int i)43atomic_set(atomic_t *v, int i)
57{44{
58 __atomic_check_write(v, sizeof(*v));45 instrument_atomic_write(v, sizeof(*v));
59 arch_atomic_set(v, i);46 arch_atomic_set(v, i);
60}47}
61#define atomic_set atomic_set48#define atomic_set atomic_set
@@ -64,7 +51,7 @@ atomic_set(atomic_t *v, int i) · 2 unmodified lines
64static __always_inline void51static __always_inline void
65atomic_set_release(atomic_t *v, int i)52atomic_set_release(atomic_t *v, int i)
66{53{
67 __atomic_check_write(v, sizeof(*v));54 instrument_atomic_write(v, sizeof(*v));
68 arch_atomic_set_release(v, i);55 arch_atomic_set_release(v, i);
69}56}
70#define atomic_set_release atomic_set_release57#define atomic_set_release atomic_set_release
@@ -73,7 +60,7 @@ atomic_set_release(atomic_t *v, int i) · 2 unmodified lines
73static __always_inline void60static __always_inline void
74atomic_add(int i, atomic_t *v)61atomic_add(int i, atomic_t *v)
75{62{
76 __atomic_check_write(v, sizeof(*v));63 instrument_atomic_write(v, sizeof(*v));
77 arch_atomic_add(i, v);64 arch_atomic_add(i, v);
78}65}
79#define atomic_add atomic_add66#define atomic_add atomic_add
@@ -82,7 +69,7 @@ atomic_add(int i, atomic_t *v) · 2 unmodified lines
82static __always_inline int69static __always_inline int
83atomic_add_return(int i, atomic_t *v)70atomic_add_return(int i, atomic_t *v)
84{71{
85 __atomic_check_write(v, sizeof(*v));72 instrument_atomic_write(v, sizeof(*v));
86 return arch_atomic_add_return(i, v);73 return arch_atomic_add_return(i, v);
87}74}
88#define atomic_add_return atomic_add_return75#define atomic_add_return atomic_add_return
@@ -92,7 +79,7 @@ atomic_add_return(int i, atomic_t *v) · 3 unmodified lines
92static __always_inline int79static __always_inline int
93atomic_add_return_acquire(int i, atomic_t *v)80atomic_add_return_acquire(int i, atomic_t *v)
94{81{
95 __atomic_check_write(v, sizeof(*v));82 instrument_atomic_write(v, sizeof(*v));
96 return arch_atomic_add_return_acquire(i, v);83 return arch_atomic_add_return_acquire(i, v);
97}84}
98#define atomic_add_return_acquire atomic_add_return_acquire85#define atomic_add_return_acquire atomic_add_return_acquire
@@ -102,7 +89,7 @@ atomic_add_return_acquire(int i, atomic_t *v) · 3 unmodified lines
102static __always_inline int89static __always_inline int
103atomic_add_return_release(int i, atomic_t *v)90atomic_add_return_release(int i, atomic_t *v)
104{91{
105 __atomic_check_write(v, sizeof(*v));92 instrument_atomic_write(v, sizeof(*v));
106 return arch_atomic_add_return_release(i, v);93 return arch_atomic_add_return_release(i, v);
107}94}
108#define atomic_add_return_release atomic_add_return_release95#define atomic_add_return_release atomic_add_return_release
@@ -112,7 +99,7 @@ atomic_add_return_release(int i, atomic_t *v) · 3 unmodified lines
112static __always_inline int99static __always_inline int
113atomic_add_return_relaxed(int i, atomic_t *v)100atomic_add_return_relaxed(int i, atomic_t *v)
114{101{
115 __atomic_check_write(v, sizeof(*v));102 instrument_atomic_write(v, sizeof(*v));
116 return arch_atomic_add_return_relaxed(i, v);103 return arch_atomic_add_return_relaxed(i, v);
117}104}
118#define atomic_add_return_relaxed atomic_add_return_relaxed105#define atomic_add_return_relaxed atomic_add_return_relaxed
@@ -122,7 +109,7 @@ atomic_add_return_relaxed(int i, atomic_t *v) · 3 unmodified lines
122static __always_inline int109static __always_inline int
123atomic_fetch_add(int i, atomic_t *v)110atomic_fetch_add(int i, atomic_t *v)
124{111{
125 __atomic_check_write(v, sizeof(*v));112 instrument_atomic_write(v, sizeof(*v));
126 return arch_atomic_fetch_add(i, v);113 return arch_atomic_fetch_add(i, v);
127}114}
128#define atomic_fetch_add atomic_fetch_add115#define atomic_fetch_add atomic_fetch_add
@@ -132,7 +119,7 @@ atomic_fetch_add(int i, atomic_t *v) · 3 unmodified lines
132static __always_inline int119static __always_inline int
133atomic_fetch_add_acquire(int i, atomic_t *v)120atomic_fetch_add_acquire(int i, atomic_t *v)
134{121{
135 __atomic_check_write(v, sizeof(*v));122 instrument_atomic_write(v, sizeof(*v));
136 return arch_atomic_fetch_add_acquire(i, v);123 return arch_atomic_fetch_add_acquire(i, v);
137}124}
138#define atomic_fetch_add_acquire atomic_fetch_add_acquire125#define atomic_fetch_add_acquire atomic_fetch_add_acquire
@@ -142,7 +129,7 @@ atomic_fetch_add_acquire(int i, atomic_t *v) · 3 unmodified lines
142static __always_inline int129static __always_inline int
143atomic_fetch_add_release(int i, atomic_t *v)130atomic_fetch_add_release(int i, atomic_t *v)
144{131{
145 __atomic_check_write(v, sizeof(*v));132 instrument_atomic_write(v, sizeof(*v));
146 return arch_atomic_fetch_add_release(i, v);133 return arch_atomic_fetch_add_release(i, v);
147}134}
148#define atomic_fetch_add_release atomic_fetch_add_release135#define atomic_fetch_add_release atomic_fetch_add_release
@@ -152,7 +139,7 @@ atomic_fetch_add_release(int i, atomic_t *v) · 3 unmodified lines
152static __always_inline int139static __always_inline int
153atomic_fetch_add_relaxed(int i, atomic_t *v)140atomic_fetch_add_relaxed(int i, atomic_t *v)
154{141{
155 __atomic_check_write(v, sizeof(*v));142 instrument_atomic_write(v, sizeof(*v));
156 return arch_atomic_fetch_add_relaxed(i, v);143 return arch_atomic_fetch_add_relaxed(i, v);
157}144}
158#define atomic_fetch_add_relaxed atomic_fetch_add_relaxed145#define atomic_fetch_add_relaxed atomic_fetch_add_relaxed
@@ -161,7 +148,7 @@ atomic_fetch_add_relaxed(int i, atomic_t *v) · 2 unmodified lines
161static __always_inline void148static __always_inline void
162atomic_sub(int i, atomic_t *v)149atomic_sub(int i, atomic_t *v)
163{150{
164 __atomic_check_write(v, sizeof(*v));151 instrument_atomic_write(v, sizeof(*v));
165 arch_atomic_sub(i, v);152 arch_atomic_sub(i, v);
166}153}
167#define atomic_sub atomic_sub154#define atomic_sub atomic_sub
@@ -170,7 +157,7 @@ atomic_sub(int i, atomic_t *v) · 2 unmodified lines
170static __always_inline int157static __always_inline int
171atomic_sub_return(int i, atomic_t *v)158atomic_sub_return(int i, atomic_t *v)
172{159{
173 __atomic_check_write(v, sizeof(*v));160 instrument_atomic_write(v, sizeof(*v));
174 return arch_atomic_sub_return(i, v);161 return arch_atomic_sub_return(i, v);
175}162}
176#define atomic_sub_return atomic_sub_return163#define atomic_sub_return atomic_sub_return
@@ -180,7 +167,7 @@ atomic_sub_return(int i, atomic_t *v) · 3 unmodified lines
180static __always_inline int167static __always_inline int
181atomic_sub_return_acquire(int i, atomic_t *v)168atomic_sub_return_acquire(int i, atomic_t *v)
182{169{
183 __atomic_check_write(v, sizeof(*v));170 instrument_atomic_write(v, sizeof(*v));
184 return arch_atomic_sub_return_acquire(i, v);171 return arch_atomic_sub_return_acquire(i, v);
185}172}
186#define atomic_sub_return_acquire atomic_sub_return_acquire173#define atomic_sub_return_acquire atomic_sub_return_acquire
@@ -190,7 +177,7 @@ atomic_sub_return_acquire(int i, atomic_t *v) · 3 unmodified lines
190static __always_inline int177static __always_inline int
191atomic_sub_return_release(int i, atomic_t *v)178atomic_sub_return_release(int i, atomic_t *v)
192{179{
193 __atomic_check_write(v, sizeof(*v));180 instrument_atomic_write(v, sizeof(*v));
194 return arch_atomic_sub_return_release(i, v);181 return arch_atomic_sub_return_release(i, v);
195}182}
196#define atomic_sub_return_release atomic_sub_return_release183#define atomic_sub_return_release atomic_sub_return_release
@@ -200,7 +187,7 @@ atomic_sub_return_release(int i, atomic_t *v) · 3 unmodified lines
200static __always_inline int187static __always_inline int
201atomic_sub_return_relaxed(int i, atomic_t *v)188atomic_sub_return_relaxed(int i, atomic_t *v)
202{189{
203 __atomic_check_write(v, sizeof(*v));190 instrument_atomic_write(v, sizeof(*v));
204 return arch_atomic_sub_return_relaxed(i, v);191 return arch_atomic_sub_return_relaxed(i, v);
205}192}
206#define atomic_sub_return_relaxed atomic_sub_return_relaxed193#define atomic_sub_return_relaxed atomic_sub_return_relaxed
@@ -210,7 +197,7 @@ atomic_sub_return_relaxed(int i, atomic_t *v) · 3 unmodified lines
210static __always_inline int197static __always_inline int
211atomic_fetch_sub(int i, atomic_t *v)198atomic_fetch_sub(int i, atomic_t *v)
212{199{
213 __atomic_check_write(v, sizeof(*v));200 instrument_atomic_write(v, sizeof(*v));
214 return arch_atomic_fetch_sub(i, v);201 return arch_atomic_fetch_sub(i, v);
215}202}
216#define atomic_fetch_sub atomic_fetch_sub203#define atomic_fetch_sub atomic_fetch_sub
@@ -220,7 +207,7 @@ atomic_fetch_sub(int i, atomic_t *v) · 3 unmodified lines
220static __always_inline int207static __always_inline int
221atomic_fetch_sub_acquire(int i, atomic_t *v)208atomic_fetch_sub_acquire(int i, atomic_t *v)
222{209{
223 __atomic_check_write(v, sizeof(*v));210 instrument_atomic_write(v, sizeof(*v));
224 return arch_atomic_fetch_sub_acquire(i, v);211 return arch_atomic_fetch_sub_acquire(i, v);
225}212}
226#define atomic_fetch_sub_acquire atomic_fetch_sub_acquire213#define atomic_fetch_sub_acquire atomic_fetch_sub_acquire
@@ -230,7 +217,7 @@ atomic_fetch_sub_acquire(int i, atomic_t *v) · 3 unmodified lines
230static __always_inline int217static __always_inline int
231atomic_fetch_sub_release(int i, atomic_t *v)218atomic_fetch_sub_release(int i, atomic_t *v)
232{219{
233 __atomic_check_write(v, sizeof(*v));220 instrument_atomic_write(v, sizeof(*v));
234 return arch_atomic_fetch_sub_release(i, v);221 return arch_atomic_fetch_sub_release(i, v);
235}222}
236#define atomic_fetch_sub_release atomic_fetch_sub_release223#define atomic_fetch_sub_release atomic_fetch_sub_release
@@ -240,7 +227,7 @@ atomic_fetch_sub_release(int i, atomic_t *v) · 3 unmodified lines
240static __always_inline int227static __always_inline int
241atomic_fetch_sub_relaxed(int i, atomic_t *v)228atomic_fetch_sub_relaxed(int i, atomic_t *v)
242{229{
243 __atomic_check_write(v, sizeof(*v));230 instrument_atomic_write(v, sizeof(*v));
244 return arch_atomic_fetch_sub_relaxed(i, v);231 return arch_atomic_fetch_sub_relaxed(i, v);
245}232}
246#define atomic_fetch_sub_relaxed atomic_fetch_sub_relaxed233#define atomic_fetch_sub_relaxed atomic_fetch_sub_relaxed
@@ -250,7 +237,7 @@ atomic_fetch_sub_relaxed(int i, atomic_t *v) · 3 unmodified lines
250static __always_inline void237static __always_inline void
251atomic_inc(atomic_t *v)238atomic_inc(atomic_t *v)
252{239{
253 __atomic_check_write(v, sizeof(*v));240 instrument_atomic_write(v, sizeof(*v));
254 arch_atomic_inc(v);241 arch_atomic_inc(v);
255}242}
256#define atomic_inc atomic_inc243#define atomic_inc atomic_inc
@@ -260,7 +247,7 @@ atomic_inc(atomic_t *v) · 3 unmodified lines
260static __always_inline int247static __always_inline int
261atomic_inc_return(atomic_t *v)248atomic_inc_return(atomic_t *v)
262{249{
263 __atomic_check_write(v, sizeof(*v));250 instrument_atomic_write(v, sizeof(*v));
264 return arch_atomic_inc_return(v);251 return arch_atomic_inc_return(v);
265}252}
266#define atomic_inc_return atomic_inc_return253#define atomic_inc_return atomic_inc_return
@@ -270,7 +257,7 @@ atomic_inc_return(atomic_t *v) · 3 unmodified lines
270static __always_inline int257static __always_inline int
271atomic_inc_return_acquire(atomic_t *v)258atomic_inc_return_acquire(atomic_t *v)
272{259{
273 __atomic_check_write(v, sizeof(*v));260 instrument_atomic_write(v, sizeof(*v));
274 return arch_atomic_inc_return_acquire(v);261 return arch_atomic_inc_return_acquire(v);
275}262}
276#define atomic_inc_return_acquire atomic_inc_return_acquire263#define atomic_inc_return_acquire atomic_inc_return_acquire
@@ -280,7 +267,7 @@ atomic_inc_return_acquire(atomic_t *v) · 3 unmodified lines
280static __always_inline int267static __always_inline int
281atomic_inc_return_release(atomic_t *v)268atomic_inc_return_release(atomic_t *v)
282{269{
283 __atomic_check_write(v, sizeof(*v));270 instrument_atomic_write(v, sizeof(*v));
284 return arch_atomic_inc_return_release(v);271 return arch_atomic_inc_return_release(v);
285}272}
286#define atomic_inc_return_release atomic_inc_return_release273#define atomic_inc_return_release atomic_inc_return_release
@@ -290,7 +277,7 @@ atomic_inc_return_release(atomic_t *v) · 3 unmodified lines
290static __always_inline int277static __always_inline int
291atomic_inc_return_relaxed(atomic_t *v)278atomic_inc_return_relaxed(atomic_t *v)
292{279{
293 __atomic_check_write(v, sizeof(*v));280 instrument_atomic_write(v, sizeof(*v));
294 return arch_atomic_inc_return_relaxed(v);281 return arch_atomic_inc_return_relaxed(v);
295}282}
296#define atomic_inc_return_relaxed atomic_inc_return_relaxed283#define atomic_inc_return_relaxed atomic_inc_return_relaxed
@@ -300,7 +287,7 @@ atomic_inc_return_relaxed(atomic_t *v) · 3 unmodified lines
300static __always_inline int287static __always_inline int
301atomic_fetch_inc(atomic_t *v)288atomic_fetch_inc(atomic_t *v)
302{289{
303 __atomic_check_write(v, sizeof(*v));290 instrument_atomic_write(v, sizeof(*v));
304 return arch_atomic_fetch_inc(v);291 return arch_atomic_fetch_inc(v);
305}292}
306#define atomic_fetch_inc atomic_fetch_inc293#define atomic_fetch_inc atomic_fetch_inc
@@ -310,7 +297,7 @@ atomic_fetch_inc(atomic_t *v) · 3 unmodified lines
310static __always_inline int297static __always_inline int
311atomic_fetch_inc_acquire(atomic_t *v)298atomic_fetch_inc_acquire(atomic_t *v)
312{299{
313 __atomic_check_write(v, sizeof(*v));300 instrument_atomic_write(v, sizeof(*v));
314 return arch_atomic_fetch_inc_acquire(v);301 return arch_atomic_fetch_inc_acquire(v);
315}302}
316#define atomic_fetch_inc_acquire atomic_fetch_inc_acquire303#define atomic_fetch_inc_acquire atomic_fetch_inc_acquire
@@ -320,7 +307,7 @@ atomic_fetch_inc_acquire(atomic_t *v) · 3 unmodified lines
320static __always_inline int307static __always_inline int
321atomic_fetch_inc_release(atomic_t *v)308atomic_fetch_inc_release(atomic_t *v)
322{309{
323 __atomic_check_write(v, sizeof(*v));310 instrument_atomic_write(v, sizeof(*v));
324 return arch_atomic_fetch_inc_release(v);311 return arch_atomic_fetch_inc_release(v);
325}312}
326#define atomic_fetch_inc_release atomic_fetch_inc_release313#define atomic_fetch_inc_release atomic_fetch_inc_release
@@ -330,7 +317,7 @@ atomic_fetch_inc_release(atomic_t *v) · 3 unmodified lines
330static __always_inline int317static __always_inline int
331atomic_fetch_inc_relaxed(atomic_t *v)318atomic_fetch_inc_relaxed(atomic_t *v)
332{319{
333 __atomic_check_write(v, sizeof(*v));320 instrument_atomic_write(v, sizeof(*v));
334 return arch_atomic_fetch_inc_relaxed(v);321 return arch_atomic_fetch_inc_relaxed(v);
335}322}
336#define atomic_fetch_inc_relaxed atomic_fetch_inc_relaxed323#define atomic_fetch_inc_relaxed atomic_fetch_inc_relaxed
@@ -340,7 +327,7 @@ atomic_fetch_inc_relaxed(atomic_t *v) · 3 unmodified lines
340static __always_inline void327static __always_inline void
341atomic_dec(atomic_t *v)328atomic_dec(atomic_t *v)
342{329{
343 __atomic_check_write(v, sizeof(*v));330 instrument_atomic_write(v, sizeof(*v));
344 arch_atomic_dec(v);331 arch_atomic_dec(v);
345}332}
346#define atomic_dec atomic_dec333#define atomic_dec atomic_dec
@@ -350,7 +337,7 @@ atomic_dec(atomic_t *v) · 3 unmodified lines
350static __always_inline int337static __always_inline int
351atomic_dec_return(atomic_t *v)338atomic_dec_return(atomic_t *v)
352{339{
353 __atomic_check_write(v, sizeof(*v));340 instrument_atomic_write(v, sizeof(*v));
354 return arch_atomic_dec_return(v);341 return arch_atomic_dec_return(v);
355}342}
356#define atomic_dec_return atomic_dec_return343#define atomic_dec_return atomic_dec_return
@@ -360,7 +347,7 @@ atomic_dec_return(atomic_t *v) · 3 unmodified lines
360static __always_inline int347static __always_inline int
361atomic_dec_return_acquire(atomic_t *v)348atomic_dec_return_acquire(atomic_t *v)
362{349{
363 __atomic_check_write(v, sizeof(*v));350 instrument_atomic_write(v, sizeof(*v));
364 return arch_atomic_dec_return_acquire(v);351 return arch_atomic_dec_return_acquire(v);
365}352}
366#define atomic_dec_return_acquire atomic_dec_return_acquire353#define atomic_dec_return_acquire atomic_dec_return_acquire
@@ -370,7 +357,7 @@ atomic_dec_return_acquire(atomic_t *v) · 3 unmodified lines
370static __always_inline int357static __always_inline int
371atomic_dec_return_release(atomic_t *v)358atomic_dec_return_release(atomic_t *v)
372{359{
373 __atomic_check_write(v, sizeof(*v));360 instrument_atomic_write(v, sizeof(*v));
374 return arch_atomic_dec_return_release(v);361 return arch_atomic_dec_return_release(v);
375}362}
376#define atomic_dec_return_release atomic_dec_return_release363#define atomic_dec_return_release atomic_dec_return_release
@@ -380,7 +367,7 @@ atomic_dec_return_release(atomic_t *v) · 3 unmodified lines
380static __always_inline int367static __always_inline int
381atomic_dec_return_relaxed(atomic_t *v)368atomic_dec_return_relaxed(atomic_t *v)
382{369{
383 __atomic_check_write(v, sizeof(*v));370 instrument_atomic_write(v, sizeof(*v));
384 return arch_atomic_dec_return_relaxed(v);371 return arch_atomic_dec_return_relaxed(v);
385}372}
386#define atomic_dec_return_relaxed atomic_dec_return_relaxed373#define atomic_dec_return_relaxed atomic_dec_return_relaxed
@@ -390,7 +377,7 @@ atomic_dec_return_relaxed(atomic_t *v) · 3 unmodified lines
390static __always_inline int377static __always_inline int
391atomic_fetch_dec(atomic_t *v)378atomic_fetch_dec(atomic_t *v)
392{379{
393 __atomic_check_write(v, sizeof(*v));380 instrument_atomic_write(v, sizeof(*v));
394 return arch_atomic_fetch_dec(v);381 return arch_atomic_fetch_dec(v);
395}382}
396#define atomic_fetch_dec atomic_fetch_dec383#define atomic_fetch_dec atomic_fetch_dec
@@ -400,7 +387,7 @@ atomic_fetch_dec(atomic_t *v) · 3 unmodified lines
400static __always_inline int387static __always_inline int
401atomic_fetch_dec_acquire(atomic_t *v)388atomic_fetch_dec_acquire(atomic_t *v)
402{389{
403 __atomic_check_write(v, sizeof(*v));390 instrument_atomic_write(v, sizeof(*v));
404 return arch_atomic_fetch_dec_acquire(v);391 return arch_atomic_fetch_dec_acquire(v);
405}392}
406#define atomic_fetch_dec_acquire atomic_fetch_dec_acquire393#define atomic_fetch_dec_acquire atomic_fetch_dec_acquire
@@ -410,7 +397,7 @@ atomic_fetch_dec_acquire(atomic_t *v) · 3 unmodified lines
410static __always_inline int397static __always_inline int
411atomic_fetch_dec_release(atomic_t *v)398atomic_fetch_dec_release(atomic_t *v)
412{399{
413 __atomic_check_write(v, sizeof(*v));400 instrument_atomic_write(v, sizeof(*v));
414 return arch_atomic_fetch_dec_release(v);401 return arch_atomic_fetch_dec_release(v);
415}402}
416#define atomic_fetch_dec_release atomic_fetch_dec_release403#define atomic_fetch_dec_release atomic_fetch_dec_release
@@ -420,7 +407,7 @@ atomic_fetch_dec_release(atomic_t *v) · 3 unmodified lines
420static __always_inline int407static __always_inline int
421atomic_fetch_dec_relaxed(atomic_t *v)408atomic_fetch_dec_relaxed(atomic_t *v)
422{409{
423 __atomic_check_write(v, sizeof(*v));410 instrument_atomic_write(v, sizeof(*v));
424 return arch_atomic_fetch_dec_relaxed(v);411 return arch_atomic_fetch_dec_relaxed(v);
425}412}
426#define atomic_fetch_dec_relaxed atomic_fetch_dec_relaxed413#define atomic_fetch_dec_relaxed atomic_fetch_dec_relaxed
@@ -429,7 +416,7 @@ atomic_fetch_dec_relaxed(atomic_t *v) · 2 unmodified lines
429static __always_inline void416static __always_inline void
430atomic_and(int i, atomic_t *v)417atomic_and(int i, atomic_t *v)
431{418{
432 __atomic_check_write(v, sizeof(*v));419 instrument_atomic_write(v, sizeof(*v));
433 arch_atomic_and(i, v);420 arch_atomic_and(i, v);
434}421}
435#define atomic_and atomic_and422#define atomic_and atomic_and
@@ -438,7 +425,7 @@ atomic_and(int i, atomic_t *v) · 2 unmodified lines
438static __always_inline int425static __always_inline int
439atomic_fetch_and(int i, atomic_t *v)426atomic_fetch_and(int i, atomic_t *v)
440{427{
441 __atomic_check_write(v, sizeof(*v));428 instrument_atomic_write(v, sizeof(*v));
442 return arch_atomic_fetch_and(i, v);429 return arch_atomic_fetch_and(i, v);
443}430}
444#define atomic_fetch_and atomic_fetch_and431#define atomic_fetch_and atomic_fetch_and
@@ -448,7 +435,7 @@ atomic_fetch_and(int i, atomic_t *v) · 3 unmodified lines
448static __always_inline int435static __always_inline int
449atomic_fetch_and_acquire(int i, atomic_t *v)436atomic_fetch_and_acquire(int i, atomic_t *v)
450{437{
451 __atomic_check_write(v, sizeof(*v));438 instrument_atomic_write(v, sizeof(*v));
452 return arch_atomic_fetch_and_acquire(i, v);439 return arch_atomic_fetch_and_acquire(i, v);
453}440}
454#define atomic_fetch_and_acquire atomic_fetch_and_acquire441#define atomic_fetch_and_acquire atomic_fetch_and_acquire
@@ -458,7 +445,7 @@ atomic_fetch_and_acquire(int i, atomic_t *v) · 3 unmodified lines
458static __always_inline int445static __always_inline int
459atomic_fetch_and_release(int i, atomic_t *v)446atomic_fetch_and_release(int i, atomic_t *v)
460{447{
461 __atomic_check_write(v, sizeof(*v));448 instrument_atomic_write(v, sizeof(*v));
462 return arch_atomic_fetch_and_release(i, v);449 return arch_atomic_fetch_and_release(i, v);
463}450}
464#define atomic_fetch_and_release atomic_fetch_and_release451#define atomic_fetch_and_release atomic_fetch_and_release
@@ -468,7 +455,7 @@ atomic_fetch_and_release(int i, atomic_t *v) · 3 unmodified lines
468static __always_inline int455static __always_inline int
469atomic_fetch_and_relaxed(int i, atomic_t *v)456atomic_fetch_and_relaxed(int i, atomic_t *v)
470{457{
471 __atomic_check_write(v, sizeof(*v));458 instrument_atomic_write(v, sizeof(*v));
472 return arch_atomic_fetch_and_relaxed(i, v);459 return arch_atomic_fetch_and_relaxed(i, v);
473}460}
474#define atomic_fetch_and_relaxed atomic_fetch_and_relaxed461#define atomic_fetch_and_relaxed atomic_fetch_and_relaxed
@@ -478,7 +465,7 @@ atomic_fetch_and_relaxed(int i, atomic_t *v) · 3 unmodified lines
478static __always_inline void465static __always_inline void
479atomic_andnot(int i, atomic_t *v)466atomic_andnot(int i, atomic_t *v)
480{467{
481 __atomic_check_write(v, sizeof(*v));468 instrument_atomic_write(v, sizeof(*v));
482 arch_atomic_andnot(i, v);469 arch_atomic_andnot(i, v);
483}470}
484#define atomic_andnot atomic_andnot471#define atomic_andnot atomic_andnot
@@ -488,7 +475,7 @@ atomic_andnot(int i, atomic_t *v) · 3 unmodified lines
488static __always_inline int475static __always_inline int
489atomic_fetch_andnot(int i, atomic_t *v)476atomic_fetch_andnot(int i, atomic_t *v)
490{477{
491 __atomic_check_write(v, sizeof(*v));478 instrument_atomic_write(v, sizeof(*v));
492 return arch_atomic_fetch_andnot(i, v);479 return arch_atomic_fetch_andnot(i, v);
493}480}
494#define atomic_fetch_andnot atomic_fetch_andnot481#define atomic_fetch_andnot atomic_fetch_andnot
@@ -498,7 +485,7 @@ atomic_fetch_andnot(int i, atomic_t *v) · 3 unmodified lines
498static __always_inline int485static __always_inline int
499atomic_fetch_andnot_acquire(int i, atomic_t *v)486atomic_fetch_andnot_acquire(int i, atomic_t *v)
500{487{
501 __atomic_check_write(v, sizeof(*v));488 instrument_atomic_write(v, sizeof(*v));
502 return arch_atomic_fetch_andnot_acquire(i, v);489 return arch_atomic_fetch_andnot_acquire(i, v);
503}490}
504#define atomic_fetch_andnot_acquire atomic_fetch_andnot_acquire491#define atomic_fetch_andnot_acquire atomic_fetch_andnot_acquire
@@ -508,7 +495,7 @@ atomic_fetch_andnot_acquire(int i, atomic_t *v) · 3 unmodified lines
508static __always_inline int495static __always_inline int
509atomic_fetch_andnot_release(int i, atomic_t *v)496atomic_fetch_andnot_release(int i, atomic_t *v)
510{497{
511 __atomic_check_write(v, sizeof(*v));498 instrument_atomic_write(v, sizeof(*v));
512 return arch_atomic_fetch_andnot_release(i, v);499 return arch_atomic_fetch_andnot_release(i, v);
513}500}
514#define atomic_fetch_andnot_release atomic_fetch_andnot_release501#define atomic_fetch_andnot_release atomic_fetch_andnot_release
@@ -518,7 +505,7 @@ atomic_fetch_andnot_release(int i, atomic_t *v) · 3 unmodified lines
518static __always_inline int505static __always_inline int
519atomic_fetch_andnot_relaxed(int i, atomic_t *v)506atomic_fetch_andnot_relaxed(int i, atomic_t *v)
520{507{
521 __atomic_check_write(v, sizeof(*v));508 instrument_atomic_write(v, sizeof(*v));
522 return arch_atomic_fetch_andnot_relaxed(i, v);509 return arch_atomic_fetch_andnot_relaxed(i, v);
523}510}
524#define atomic_fetch_andnot_relaxed atomic_fetch_andnot_relaxed511#define atomic_fetch_andnot_relaxed atomic_fetch_andnot_relaxed
@@ -527,7 +514,7 @@ atomic_fetch_andnot_relaxed(int i, atomic_t *v) · 2 unmodified lines
527static __always_inline void514static __always_inline void
528atomic_or(int i, atomic_t *v)515atomic_or(int i, atomic_t *v)
529{516{
530 __atomic_check_write(v, sizeof(*v));517 instrument_atomic_write(v, sizeof(*v));
531 arch_atomic_or(i, v);518 arch_atomic_or(i, v);
532}519}
533#define atomic_or atomic_or520#define atomic_or atomic_or
@@ -536,7 +523,7 @@ atomic_or(int i, atomic_t *v) · 2 unmodified lines
536static __always_inline int523static __always_inline int
537atomic_fetch_or(int i, atomic_t *v)524atomic_fetch_or(int i, atomic_t *v)
538{525{
539 __atomic_check_write(v, sizeof(*v));526 instrument_atomic_write(v, sizeof(*v));
540 return arch_atomic_fetch_or(i, v);527 return arch_atomic_fetch_or(i, v);
541}528}
542#define atomic_fetch_or atomic_fetch_or529#define atomic_fetch_or atomic_fetch_or
@@ -546,7 +533,7 @@ atomic_fetch_or(int i, atomic_t *v) · 3 unmodified lines
546static __always_inline int533static __always_inline int
547atomic_fetch_or_acquire(int i, atomic_t *v)534atomic_fetch_or_acquire(int i, atomic_t *v)
548{535{
549 __atomic_check_write(v, sizeof(*v));536 instrument_atomic_write(v, sizeof(*v));
550 return arch_atomic_fetch_or_acquire(i, v);537 return arch_atomic_fetch_or_acquire(i, v);
551}538}
552#define atomic_fetch_or_acquire atomic_fetch_or_acquire539#define atomic_fetch_or_acquire atomic_fetch_or_acquire
@@ -556,7 +543,7 @@ atomic_fetch_or_acquire(int i, atomic_t *v) · 3 unmodified lines
556static __always_inline int543static __always_inline int
557atomic_fetch_or_release(int i, atomic_t *v)544atomic_fetch_or_release(int i, atomic_t *v)
558{545{
559 __atomic_check_write(v, sizeof(*v));546 instrument_atomic_write(v, sizeof(*v));
560 return arch_atomic_fetch_or_release(i, v);547 return arch_atomic_fetch_or_release(i, v);
561}548}
562#define atomic_fetch_or_release atomic_fetch_or_release549#define atomic_fetch_or_release atomic_fetch_or_release
@@ -566,7 +553,7 @@ atomic_fetch_or_release(int i, atomic_t *v) · 3 unmodified lines
566static __always_inline int553static __always_inline int
567atomic_fetch_or_relaxed(int i, atomic_t *v)554atomic_fetch_or_relaxed(int i, atomic_t *v)
568{555{
569 __atomic_check_write(v, sizeof(*v));556 instrument_atomic_write(v, sizeof(*v));
570 return arch_atomic_fetch_or_relaxed(i, v);557 return arch_atomic_fetch_or_relaxed(i, v);
571}558}
572#define atomic_fetch_or_relaxed atomic_fetch_or_relaxed559#define atomic_fetch_or_relaxed atomic_fetch_or_relaxed
@@ -575,7 +562,7 @@ atomic_fetch_or_relaxed(int i, atomic_t *v) · 2 unmodified lines
575static __always_inline void562static __always_inline void
576atomic_xor(int i, atomic_t *v)563atomic_xor(int i, atomic_t *v)
577{564{
578 __atomic_check_write(v, sizeof(*v));565 instrument_atomic_write(v, sizeof(*v));
579 arch_atomic_xor(i, v);566 arch_atomic_xor(i, v);
580}567}
581#define atomic_xor atomic_xor568#define atomic_xor atomic_xor
@@ -584,7 +571,7 @@ atomic_xor(int i, atomic_t *v) · 2 unmodified lines
584static __always_inline int571static __always_inline int
585atomic_fetch_xor(int i, atomic_t *v)572atomic_fetch_xor(int i, atomic_t *v)
586{573{
587 __atomic_check_write(v, sizeof(*v));574 instrument_atomic_write(v, sizeof(*v));
588 return arch_atomic_fetch_xor(i, v);575 return arch_atomic_fetch_xor(i, v);
589}576}
590#define atomic_fetch_xor atomic_fetch_xor577#define atomic_fetch_xor atomic_fetch_xor
@@ -594,7 +581,7 @@ atomic_fetch_xor(int i, atomic_t *v) · 3 unmodified lines
594static __always_inline int581static __always_inline int
595atomic_fetch_xor_acquire(int i, atomic_t *v)582atomic_fetch_xor_acquire(int i, atomic_t *v)
596{583{
597 __atomic_check_write(v, sizeof(*v));584 instrument_atomic_write(v, sizeof(*v));
598 return arch_atomic_fetch_xor_acquire(i, v);585 return arch_atomic_fetch_xor_acquire(i, v);
599}586}
600#define atomic_fetch_xor_acquire atomic_fetch_xor_acquire587#define atomic_fetch_xor_acquire atomic_fetch_xor_acquire
@@ -604,7 +591,7 @@ atomic_fetch_xor_acquire(int i, atomic_t *v) · 3 unmodified lines
604static __always_inline int591static __always_inline int
605atomic_fetch_xor_release(int i, atomic_t *v)592atomic_fetch_xor_release(int i, atomic_t *v)
606{593{
607 __atomic_check_write(v, sizeof(*v));594 instrument_atomic_write(v, sizeof(*v));
608 return arch_atomic_fetch_xor_release(i, v);595 return arch_atomic_fetch_xor_release(i, v);
609}596}
610#define atomic_fetch_xor_release atomic_fetch_xor_release597#define atomic_fetch_xor_release atomic_fetch_xor_release
@@ -614,7 +601,7 @@ atomic_fetch_xor_release(int i, atomic_t *v) · 3 unmodified lines
614static __always_inline int601static __always_inline int
615atomic_fetch_xor_relaxed(int i, atomic_t *v)602atomic_fetch_xor_relaxed(int i, atomic_t *v)
616{603{
617 __atomic_check_write(v, sizeof(*v));604 instrument_atomic_write(v, sizeof(*v));
618 return arch_atomic_fetch_xor_relaxed(i, v);605 return arch_atomic_fetch_xor_relaxed(i, v);
619}606}
620#define atomic_fetch_xor_relaxed atomic_fetch_xor_relaxed607#define atomic_fetch_xor_relaxed atomic_fetch_xor_relaxed
@@ -624,7 +611,7 @@ atomic_fetch_xor_relaxed(int i, atomic_t *v) · 3 unmodified lines
624static __always_inline int611static __always_inline int
625atomic_xchg(atomic_t *v, int i)612atomic_xchg(atomic_t *v, int i)
626{613{
627 __atomic_check_write(v, sizeof(*v));614 instrument_atomic_write(v, sizeof(*v));
628 return arch_atomic_xchg(v, i);615 return arch_atomic_xchg(v, i);
629}616}
630#define atomic_xchg atomic_xchg617#define atomic_xchg atomic_xchg
@@ -634,7 +621,7 @@ atomic_xchg(atomic_t *v, int i) · 3 unmodified lines
634static __always_inline int621static __always_inline int
635atomic_xchg_acquire(atomic_t *v, int i)622atomic_xchg_acquire(atomic_t *v, int i)
636{623{
637 __atomic_check_write(v, sizeof(*v));624 instrument_atomic_write(v, sizeof(*v));
638 return arch_atomic_xchg_acquire(v, i);625 return arch_atomic_xchg_acquire(v, i);
639}626}
640#define atomic_xchg_acquire atomic_xchg_acquire627#define atomic_xchg_acquire atomic_xchg_acquire
@@ -644,7 +631,7 @@ atomic_xchg_acquire(atomic_t *v, int i) · 3 unmodified lines
644static __always_inline int631static __always_inline int
645atomic_xchg_release(atomic_t *v, int i)632atomic_xchg_release(atomic_t *v, int i)
646{633{
647 __atomic_check_write(v, sizeof(*v));634 instrument_atomic_write(v, sizeof(*v));
648 return arch_atomic_xchg_release(v, i);635 return arch_atomic_xchg_release(v, i);
649}636}
650#define atomic_xchg_release atomic_xchg_release637#define atomic_xchg_release atomic_xchg_release
@@ -654,7 +641,7 @@ atomic_xchg_release(atomic_t *v, int i) · 3 unmodified lines
654static __always_inline int641static __always_inline int
655atomic_xchg_relaxed(atomic_t *v, int i)642atomic_xchg_relaxed(atomic_t *v, int i)
656{643{
657 __atomic_check_write(v, sizeof(*v));644 instrument_atomic_write(v, sizeof(*v));
658 return arch_atomic_xchg_relaxed(v, i);645 return arch_atomic_xchg_relaxed(v, i);
659}646}
660#define atomic_xchg_relaxed atomic_xchg_relaxed647#define atomic_xchg_relaxed atomic_xchg_relaxed
@@ -664,7 +651,7 @@ atomic_xchg_relaxed(atomic_t *v, int i) · 3 unmodified lines
664static __always_inline int651static __always_inline int
665atomic_cmpxchg(atomic_t *v, int old, int new)652atomic_cmpxchg(atomic_t *v, int old, int new)
666{653{
667 __atomic_check_write(v, sizeof(*v));654 instrument_atomic_write(v, sizeof(*v));
668 return arch_atomic_cmpxchg(v, old, new);655 return arch_atomic_cmpxchg(v, old, new);
669}656}
670#define atomic_cmpxchg atomic_cmpxchg657#define atomic_cmpxchg atomic_cmpxchg
@@ -674,7 +661,7 @@ atomic_cmpxchg(atomic_t *v, int old, int new) · 3 unmodified lines
674static __always_inline int661static __always_inline int
675atomic_cmpxchg_acquire(atomic_t *v, int old, int new)662atomic_cmpxchg_acquire(atomic_t *v, int old, int new)
676{663{
677 __atomic_check_write(v, sizeof(*v));664 instrument_atomic_write(v, sizeof(*v));
678 return arch_atomic_cmpxchg_acquire(v, old, new);665 return arch_atomic_cmpxchg_acquire(v, old, new);
679}666}
680#define atomic_cmpxchg_acquire atomic_cmpxchg_acquire667#define atomic_cmpxchg_acquire atomic_cmpxchg_acquire
@@ -684,7 +671,7 @@ atomic_cmpxchg_acquire(atomic_t *v, int old, int new) · 3 unmodified lines
684static __always_inline int671static __always_inline int
685atomic_cmpxchg_release(atomic_t *v, int old, int new)672atomic_cmpxchg_release(atomic_t *v, int old, int new)
686{673{
687 __atomic_check_write(v, sizeof(*v));674 instrument_atomic_write(v, sizeof(*v));
688 return arch_atomic_cmpxchg_release(v, old, new);675 return arch_atomic_cmpxchg_release(v, old, new);
689}676}
690#define atomic_cmpxchg_release atomic_cmpxchg_release677#define atomic_cmpxchg_release atomic_cmpxchg_release
@@ -694,7 +681,7 @@ atomic_cmpxchg_release(atomic_t *v, int old, int new) · 3 unmodified lines
694static __always_inline int681static __always_inline int
695atomic_cmpxchg_relaxed(atomic_t *v, int old, int new)682atomic_cmpxchg_relaxed(atomic_t *v, int old, int new)
696{683{
697 __atomic_check_write(v, sizeof(*v));684 instrument_atomic_write(v, sizeof(*v));
698 return arch_atomic_cmpxchg_relaxed(v, old, new);685 return arch_atomic_cmpxchg_relaxed(v, old, new);
699}686}
700#define atomic_cmpxchg_relaxed atomic_cmpxchg_relaxed687#define atomic_cmpxchg_relaxed atomic_cmpxchg_relaxed
@@ -704,8 +691,8 @@ atomic_cmpxchg_relaxed(atomic_t *v, int old, int new) · 3 unmodified lines
704static __always_inline bool691static __always_inline bool
705atomic_try_cmpxchg(atomic_t *v, int *old, int new)692atomic_try_cmpxchg(atomic_t *v, int *old, int new)
706{693{
707 __atomic_check_write(v, sizeof(*v));694 instrument_atomic_write(v, sizeof(*v));
708 __atomic_check_write(old, sizeof(*old));695 instrument_atomic_write(old, sizeof(*old));
709 return arch_atomic_try_cmpxchg(v, old, new);696 return arch_atomic_try_cmpxchg(v, old, new);
710}697}
711#define atomic_try_cmpxchg atomic_try_cmpxchg698#define atomic_try_cmpxchg atomic_try_cmpxchg
@@ -715,8 +702,8 @@ atomic_try_cmpxchg(atomic_t *v, int *old, int new) · 3 unmodified lines
715static __always_inline bool702static __always_inline bool
716atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new)703atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new)
717{704{
718 __atomic_check_write(v, sizeof(*v));705 instrument_atomic_write(v, sizeof(*v));
719 __atomic_check_write(old, sizeof(*old));706 instrument_atomic_write(old, sizeof(*old));
720 return arch_atomic_try_cmpxchg_acquire(v, old, new);707 return arch_atomic_try_cmpxchg_acquire(v, old, new);
721}708}
722#define atomic_try_cmpxchg_acquire atomic_try_cmpxchg_acquire709#define atomic_try_cmpxchg_acquire atomic_try_cmpxchg_acquire
@@ -726,8 +713,8 @@ atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new) · 3 unmodified lines
726static __always_inline bool713static __always_inline bool
727atomic_try_cmpxchg_release(atomic_t *v, int *old, int new)714atomic_try_cmpxchg_release(atomic_t *v, int *old, int new)
728{715{
729 __atomic_check_write(v, sizeof(*v));716 instrument_atomic_write(v, sizeof(*v));
730 __atomic_check_write(old, sizeof(*old));717 instrument_atomic_write(old, sizeof(*old));
731 return arch_atomic_try_cmpxchg_release(v, old, new);718 return arch_atomic_try_cmpxchg_release(v, old, new);
732}719}
733#define atomic_try_cmpxchg_release atomic_try_cmpxchg_release720#define atomic_try_cmpxchg_release atomic_try_cmpxchg_release
@@ -737,8 +724,8 @@ atomic_try_cmpxchg_release(atomic_t *v, int *old, int new) · 3 unmodified lines
737static __always_inline bool724static __always_inline bool
738atomic_try_cmpxchg_relaxed(atomic_t *v, int *old, int new)725atomic_try_cmpxchg_relaxed(atomic_t *v, int *old, int new)
739{726{
740 __atomic_check_write(v, sizeof(*v));727 instrument_atomic_write(v, sizeof(*v));
741 __atomic_check_write(old, sizeof(*old));728 instrument_atomic_write(old, sizeof(*old));
742 return arch_atomic_try_cmpxchg_relaxed(v, old, new);729 return arch_atomic_try_cmpxchg_relaxed(v, old, new);
743}730}
744#define atomic_try_cmpxchg_relaxed atomic_try_cmpxchg_relaxed731#define atomic_try_cmpxchg_relaxed atomic_try_cmpxchg_relaxed
@@ -748,7 +735,7 @@ atomic_try_cmpxchg_relaxed(atomic_t *v, int *old, int new) · 3 unmodified lines
748static __always_inline bool735static __always_inline bool
749atomic_sub_and_test(int i, atomic_t *v)736atomic_sub_and_test(int i, atomic_t *v)
750{737{
751 __atomic_check_write(v, sizeof(*v));738 instrument_atomic_write(v, sizeof(*v));
752 return arch_atomic_sub_and_test(i, v);739 return arch_atomic_sub_and_test(i, v);
753}740}
754#define atomic_sub_and_test atomic_sub_and_test741#define atomic_sub_and_test atomic_sub_and_test
@@ -758,7 +745,7 @@ atomic_sub_and_test(int i, atomic_t *v) · 3 unmodified lines
758static __always_inline bool745static __always_inline bool
759atomic_dec_and_test(atomic_t *v)746atomic_dec_and_test(atomic_t *v)
760{747{
761 __atomic_check_write(v, sizeof(*v));748 instrument_atomic_write(v, sizeof(*v));
762 return arch_atomic_dec_and_test(v);749 return arch_atomic_dec_and_test(v);
763}750}
764#define atomic_dec_and_test atomic_dec_and_test751#define atomic_dec_and_test atomic_dec_and_test
@@ -768,7 +755,7 @@ atomic_dec_and_test(atomic_t *v) · 3 unmodified lines
768static __always_inline bool755static __always_inline bool
769atomic_inc_and_test(atomic_t *v)756atomic_inc_and_test(atomic_t *v)
770{757{
771 __atomic_check_write(v, sizeof(*v));758 instrument_atomic_write(v, sizeof(*v));
772 return arch_atomic_inc_and_test(v);759 return arch_atomic_inc_and_test(v);
773}760}
774#define atomic_inc_and_test atomic_inc_and_test761#define atomic_inc_and_test atomic_inc_and_test
@@ -778,7 +765,7 @@ atomic_inc_and_test(atomic_t *v) · 3 unmodified lines
778static __always_inline bool765static __always_inline bool
779atomic_add_negative(int i, atomic_t *v)766atomic_add_negative(int i, atomic_t *v)
780{767{
781 __atomic_check_write(v, sizeof(*v));768 instrument_atomic_write(v, sizeof(*v));
782 return arch_atomic_add_negative(i, v);769 return arch_atomic_add_negative(i, v);
783}770}
784#define atomic_add_negative atomic_add_negative771#define atomic_add_negative atomic_add_negative
@@ -788,7 +775,7 @@ atomic_add_negative(int i, atomic_t *v) · 3 unmodified lines
788static __always_inline int775static __always_inline int
789atomic_fetch_add_unless(atomic_t *v, int a, int u)776atomic_fetch_add_unless(atomic_t *v, int a, int u)
790{777{
791 __atomic_check_write(v, sizeof(*v));778 instrument_atomic_write(v, sizeof(*v));
792 return arch_atomic_fetch_add_unless(v, a, u);779 return arch_atomic_fetch_add_unless(v, a, u);
793}780}
794#define atomic_fetch_add_unless atomic_fetch_add_unless781#define atomic_fetch_add_unless atomic_fetch_add_unless
@@ -798,7 +785,7 @@ atomic_fetch_add_unless(atomic_t *v, int a, int u) · 3 unmodified lines
798static __always_inline bool785static __always_inline bool
799atomic_add_unless(atomic_t *v, int a, int u)786atomic_add_unless(atomic_t *v, int a, int u)
800{787{
801 __atomic_check_write(v, sizeof(*v));788 instrument_atomic_write(v, sizeof(*v));
802 return arch_atomic_add_unless(v, a, u);789 return arch_atomic_add_unless(v, a, u);
803}790}
804#define atomic_add_unless atomic_add_unless791#define atomic_add_unless atomic_add_unless
@@ -808,7 +795,7 @@ atomic_add_unless(atomic_t *v, int a, int u) · 3 unmodified lines
808static __always_inline bool795static __always_inline bool
809atomic_inc_not_zero(atomic_t *v)796atomic_inc_not_zero(atomic_t *v)
810{797{
811 __atomic_check_write(v, sizeof(*v));798 instrument_atomic_write(v, sizeof(*v));
812 return arch_atomic_inc_not_zero(v);799 return arch_atomic_inc_not_zero(v);
813}800}
814#define atomic_inc_not_zero atomic_inc_not_zero801#define atomic_inc_not_zero atomic_inc_not_zero
@@ -818,7 +805,7 @@ atomic_inc_not_zero(atomic_t *v) · 3 unmodified lines
818static __always_inline bool805static __always_inline bool
819atomic_inc_unless_negative(atomic_t *v)806atomic_inc_unless_negative(atomic_t *v)
820{807{
821 __atomic_check_write(v, sizeof(*v));808 instrument_atomic_write(v, sizeof(*v));
822 return arch_atomic_inc_unless_negative(v);809 return arch_atomic_inc_unless_negative(v);
823}810}
824#define atomic_inc_unless_negative atomic_inc_unless_negative811#define atomic_inc_unless_negative atomic_inc_unless_negative
@@ -828,7 +815,7 @@ atomic_inc_unless_negative(atomic_t *v) · 3 unmodified lines
828static __always_inline bool815static __always_inline bool
829atomic_dec_unless_positive(atomic_t *v)816atomic_dec_unless_positive(atomic_t *v)
830{817{
831 __atomic_check_write(v, sizeof(*v));818 instrument_atomic_write(v, sizeof(*v));
832 return arch_atomic_dec_unless_positive(v);819 return arch_atomic_dec_unless_positive(v);
833}820}
834#define atomic_dec_unless_positive atomic_dec_unless_positive821#define atomic_dec_unless_positive atomic_dec_unless_positive
@@ -838,7 +825,7 @@ atomic_dec_unless_positive(atomic_t *v) · 3 unmodified lines
838static __always_inline int825static __always_inline int
839atomic_dec_if_positive(atomic_t *v)826atomic_dec_if_positive(atomic_t *v)
840{827{
841 __atomic_check_write(v, sizeof(*v));828 instrument_atomic_write(v, sizeof(*v));
842 return arch_atomic_dec_if_positive(v);829 return arch_atomic_dec_if_positive(v);
843}830}
844#define atomic_dec_if_positive atomic_dec_if_positive831#define atomic_dec_if_positive atomic_dec_if_positive
@@ -847,7 +834,7 @@ atomic_dec_if_positive(atomic_t *v) · 2 unmodified lines
847static __always_inline s64834static __always_inline s64
848atomic64_read(const atomic64_t *v)835atomic64_read(const atomic64_t *v)
849{836{
850 __atomic_check_read(v, sizeof(*v));837 instrument_atomic_read(v, sizeof(*v));
851 return arch_atomic64_read(v);838 return arch_atomic64_read(v);
852}839}
853#define atomic64_read atomic64_read840#define atomic64_read atomic64_read
@@ -856,7 +843,7 @@ atomic64_read(const atomic64_t *v) · 2 unmodified lines
856static __always_inline s64843static __always_inline s64
857atomic64_read_acquire(const atomic64_t *v)844atomic64_read_acquire(const atomic64_t *v)
858{845{
859 __atomic_check_read(v, sizeof(*v));846 instrument_atomic_read(v, sizeof(*v));
860 return arch_atomic64_read_acquire(v);847 return arch_atomic64_read_acquire(v);
861}848}
862#define atomic64_read_acquire atomic64_read_acquire849#define atomic64_read_acquire atomic64_read_acquire
@@ -865,7 +852,7 @@ atomic64_read_acquire(const atomic64_t *v) · 2 unmodified lines
865static __always_inline void852static __always_inline void
866atomic64_set(atomic64_t *v, s64 i)853atomic64_set(atomic64_t *v, s64 i)
867{854{
868 __atomic_check_write(v, sizeof(*v));855 instrument_atomic_write(v, sizeof(*v));
869 arch_atomic64_set(v, i);856 arch_atomic64_set(v, i);
870}857}
871#define atomic64_set atomic64_set858#define atomic64_set atomic64_set
@@ -874,7 +861,7 @@ atomic64_set(atomic64_t *v, s64 i) · 2 unmodified lines
874static __always_inline void861static __always_inline void
875atomic64_set_release(atomic64_t *v, s64 i)862atomic64_set_release(atomic64_t *v, s64 i)
876{863{
877 __atomic_check_write(v, sizeof(*v));864 instrument_atomic_write(v, sizeof(*v));
878 arch_atomic64_set_release(v, i);865 arch_atomic64_set_release(v, i);
879}866}
880#define atomic64_set_release atomic64_set_release867#define atomic64_set_release atomic64_set_release
@@ -883,7 +870,7 @@ atomic64_set_release(atomic64_t *v, s64 i) · 2 unmodified lines
883static __always_inline void870static __always_inline void
884atomic64_add(s64 i, atomic64_t *v)871atomic64_add(s64 i, atomic64_t *v)
885{872{
886 __atomic_check_write(v, sizeof(*v));873 instrument_atomic_write(v, sizeof(*v));
887 arch_atomic64_add(i, v);874 arch_atomic64_add(i, v);
888}875}
889#define atomic64_add atomic64_add876#define atomic64_add atomic64_add
@@ -892,7 +879,7 @@ atomic64_add(s64 i, atomic64_t *v) · 2 unmodified lines
892static __always_inline s64879static __always_inline s64
893atomic64_add_return(s64 i, atomic64_t *v)880atomic64_add_return(s64 i, atomic64_t *v)
894{881{
895 __atomic_check_write(v, sizeof(*v));882 instrument_atomic_write(v, sizeof(*v));
896 return arch_atomic64_add_return(i, v);883 return arch_atomic64_add_return(i, v);
897}884}
898#define atomic64_add_return atomic64_add_return885#define atomic64_add_return atomic64_add_return
@@ -902,7 +889,7 @@ atomic64_add_return(s64 i, atomic64_t *v) · 3 unmodified lines
902static __always_inline s64889static __always_inline s64
903atomic64_add_return_acquire(s64 i, atomic64_t *v)890atomic64_add_return_acquire(s64 i, atomic64_t *v)
904{891{
905 __atomic_check_write(v, sizeof(*v));892 instrument_atomic_write(v, sizeof(*v));
906 return arch_atomic64_add_return_acquire(i, v);893 return arch_atomic64_add_return_acquire(i, v);
907}894}
908#define atomic64_add_return_acquire atomic64_add_return_acquire895#define atomic64_add_return_acquire atomic64_add_return_acquire
@@ -912,7 +899,7 @@ atomic64_add_return_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
912static __always_inline s64899static __always_inline s64
913atomic64_add_return_release(s64 i, atomic64_t *v)900atomic64_add_return_release(s64 i, atomic64_t *v)
914{901{
915 __atomic_check_write(v, sizeof(*v));902 instrument_atomic_write(v, sizeof(*v));
916 return arch_atomic64_add_return_release(i, v);903 return arch_atomic64_add_return_release(i, v);
917}904}
918#define atomic64_add_return_release atomic64_add_return_release905#define atomic64_add_return_release atomic64_add_return_release
@@ -922,7 +909,7 @@ atomic64_add_return_release(s64 i, atomic64_t *v) · 3 unmodified lines
922static __always_inline s64909static __always_inline s64
923atomic64_add_return_relaxed(s64 i, atomic64_t *v)910atomic64_add_return_relaxed(s64 i, atomic64_t *v)
924{911{
925 __atomic_check_write(v, sizeof(*v));912 instrument_atomic_write(v, sizeof(*v));
926 return arch_atomic64_add_return_relaxed(i, v);913 return arch_atomic64_add_return_relaxed(i, v);
927}914}
928#define atomic64_add_return_relaxed atomic64_add_return_relaxed915#define atomic64_add_return_relaxed atomic64_add_return_relaxed
@@ -932,7 +919,7 @@ atomic64_add_return_relaxed(s64 i, atomic64_t *v) · 3 unmodified lines
932static __always_inline s64919static __always_inline s64
933atomic64_fetch_add(s64 i, atomic64_t *v)920atomic64_fetch_add(s64 i, atomic64_t *v)
934{921{
935 __atomic_check_write(v, sizeof(*v));922 instrument_atomic_write(v, sizeof(*v));
936 return arch_atomic64_fetch_add(i, v);923 return arch_atomic64_fetch_add(i, v);
937}924}
938#define atomic64_fetch_add atomic64_fetch_add925#define atomic64_fetch_add atomic64_fetch_add
@@ -942,7 +929,7 @@ atomic64_fetch_add(s64 i, atomic64_t *v) · 3 unmodified lines
942static __always_inline s64929static __always_inline s64
943atomic64_fetch_add_acquire(s64 i, atomic64_t *v)930atomic64_fetch_add_acquire(s64 i, atomic64_t *v)
944{931{
945 __atomic_check_write(v, sizeof(*v));932 instrument_atomic_write(v, sizeof(*v));
946 return arch_atomic64_fetch_add_acquire(i, v);933 return arch_atomic64_fetch_add_acquire(i, v);
947}934}
948#define atomic64_fetch_add_acquire atomic64_fetch_add_acquire935#define atomic64_fetch_add_acquire atomic64_fetch_add_acquire
@@ -952,7 +939,7 @@ atomic64_fetch_add_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
952static __always_inline s64939static __always_inline s64
953atomic64_fetch_add_release(s64 i, atomic64_t *v)940atomic64_fetch_add_release(s64 i, atomic64_t *v)
954{941{
955 __atomic_check_write(v, sizeof(*v));942 instrument_atomic_write(v, sizeof(*v));
956 return arch_atomic64_fetch_add_release(i, v);943 return arch_atomic64_fetch_add_release(i, v);
957}944}
958#define atomic64_fetch_add_release atomic64_fetch_add_release945#define atomic64_fetch_add_release atomic64_fetch_add_release
@@ -962,7 +949,7 @@ atomic64_fetch_add_release(s64 i, atomic64_t *v) · 3 unmodified lines
962static __always_inline s64949static __always_inline s64
963atomic64_fetch_add_relaxed(s64 i, atomic64_t *v)950atomic64_fetch_add_relaxed(s64 i, atomic64_t *v)
964{951{
965 __atomic_check_write(v, sizeof(*v));952 instrument_atomic_write(v, sizeof(*v));
966 return arch_atomic64_fetch_add_relaxed(i, v);953 return arch_atomic64_fetch_add_relaxed(i, v);
967}954}
968#define atomic64_fetch_add_relaxed atomic64_fetch_add_relaxed955#define atomic64_fetch_add_relaxed atomic64_fetch_add_relaxed
@@ -971,7 +958,7 @@ atomic64_fetch_add_relaxed(s64 i, atomic64_t *v) · 2 unmodified lines
971static __always_inline void958static __always_inline void
972atomic64_sub(s64 i, atomic64_t *v)959atomic64_sub(s64 i, atomic64_t *v)
973{960{
974 __atomic_check_write(v, sizeof(*v));961 instrument_atomic_write(v, sizeof(*v));
975 arch_atomic64_sub(i, v);962 arch_atomic64_sub(i, v);
976}963}
977#define atomic64_sub atomic64_sub964#define atomic64_sub atomic64_sub
@@ -980,7 +967,7 @@ atomic64_sub(s64 i, atomic64_t *v) · 2 unmodified lines
980static __always_inline s64967static __always_inline s64
981atomic64_sub_return(s64 i, atomic64_t *v)968atomic64_sub_return(s64 i, atomic64_t *v)
982{969{
983 __atomic_check_write(v, sizeof(*v));970 instrument_atomic_write(v, sizeof(*v));
984 return arch_atomic64_sub_return(i, v);971 return arch_atomic64_sub_return(i, v);
985}972}
986#define atomic64_sub_return atomic64_sub_return973#define atomic64_sub_return atomic64_sub_return
@@ -990,7 +977,7 @@ atomic64_sub_return(s64 i, atomic64_t *v) · 3 unmodified lines
990static __always_inline s64977static __always_inline s64
991atomic64_sub_return_acquire(s64 i, atomic64_t *v)978atomic64_sub_return_acquire(s64 i, atomic64_t *v)
992{979{
993 __atomic_check_write(v, sizeof(*v));980 instrument_atomic_write(v, sizeof(*v));
994 return arch_atomic64_sub_return_acquire(i, v);981 return arch_atomic64_sub_return_acquire(i, v);
995}982}
996#define atomic64_sub_return_acquire atomic64_sub_return_acquire983#define atomic64_sub_return_acquire atomic64_sub_return_acquire
@@ -1000,7 +987,7 @@ atomic64_sub_return_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
1000static __always_inline s64987static __always_inline s64
1001atomic64_sub_return_release(s64 i, atomic64_t *v)988atomic64_sub_return_release(s64 i, atomic64_t *v)
1002{989{
1003 __atomic_check_write(v, sizeof(*v));990 instrument_atomic_write(v, sizeof(*v));
1004 return arch_atomic64_sub_return_release(i, v);991 return arch_atomic64_sub_return_release(i, v);
1005}992}
1006#define atomic64_sub_return_release atomic64_sub_return_release993#define atomic64_sub_return_release atomic64_sub_return_release
@@ -1010,7 +997,7 @@ atomic64_sub_return_release(s64 i, atomic64_t *v) · 3 unmodified lines
1010static __always_inline s64997static __always_inline s64
1011atomic64_sub_return_relaxed(s64 i, atomic64_t *v)998atomic64_sub_return_relaxed(s64 i, atomic64_t *v)
1012{999{
1013 __atomic_check_write(v, sizeof(*v));1000 instrument_atomic_write(v, sizeof(*v));
1014 return arch_atomic64_sub_return_relaxed(i, v);1001 return arch_atomic64_sub_return_relaxed(i, v);
1015}1002}
1016#define atomic64_sub_return_relaxed atomic64_sub_return_relaxed1003#define atomic64_sub_return_relaxed atomic64_sub_return_relaxed
@@ -1020,7 +1007,7 @@ atomic64_sub_return_relaxed(s64 i, atomic64_t *v) · 3 unmodified lines
1020static __always_inline s641007static __always_inline s64
1021atomic64_fetch_sub(s64 i, atomic64_t *v)1008atomic64_fetch_sub(s64 i, atomic64_t *v)
1022{1009{
1023 __atomic_check_write(v, sizeof(*v));1010 instrument_atomic_write(v, sizeof(*v));
1024 return arch_atomic64_fetch_sub(i, v);1011 return arch_atomic64_fetch_sub(i, v);
1025}1012}
1026#define atomic64_fetch_sub atomic64_fetch_sub1013#define atomic64_fetch_sub atomic64_fetch_sub
@@ -1030,7 +1017,7 @@ atomic64_fetch_sub(s64 i, atomic64_t *v) · 3 unmodified lines
1030static __always_inline s641017static __always_inline s64
1031atomic64_fetch_sub_acquire(s64 i, atomic64_t *v)1018atomic64_fetch_sub_acquire(s64 i, atomic64_t *v)
1032{1019{
1033 __atomic_check_write(v, sizeof(*v));1020 instrument_atomic_write(v, sizeof(*v));
1034 return arch_atomic64_fetch_sub_acquire(i, v);1021 return arch_atomic64_fetch_sub_acquire(i, v);
1035}1022}
1036#define atomic64_fetch_sub_acquire atomic64_fetch_sub_acquire1023#define atomic64_fetch_sub_acquire atomic64_fetch_sub_acquire
@@ -1040,7 +1027,7 @@ atomic64_fetch_sub_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
1040static __always_inline s641027static __always_inline s64
1041atomic64_fetch_sub_release(s64 i, atomic64_t *v)1028atomic64_fetch_sub_release(s64 i, atomic64_t *v)
1042{1029{
1043 __atomic_check_write(v, sizeof(*v));1030 instrument_atomic_write(v, sizeof(*v));
1044 return arch_atomic64_fetch_sub_release(i, v);1031 return arch_atomic64_fetch_sub_release(i, v);
1045}1032}
1046#define atomic64_fetch_sub_release atomic64_fetch_sub_release1033#define atomic64_fetch_sub_release atomic64_fetch_sub_release
@@ -1050,7 +1037,7 @@ atomic64_fetch_sub_release(s64 i, atomic64_t *v) · 3 unmodified lines
1050static __always_inline s641037static __always_inline s64
1051atomic64_fetch_sub_relaxed(s64 i, atomic64_t *v)1038atomic64_fetch_sub_relaxed(s64 i, atomic64_t *v)
1052{1039{
1053 __atomic_check_write(v, sizeof(*v));1040 instrument_atomic_write(v, sizeof(*v));
1054 return arch_atomic64_fetch_sub_relaxed(i, v);1041 return arch_atomic64_fetch_sub_relaxed(i, v);
1055}1042}
1056#define atomic64_fetch_sub_relaxed atomic64_fetch_sub_relaxed1043#define atomic64_fetch_sub_relaxed atomic64_fetch_sub_relaxed
@@ -1060,7 +1047,7 @@ atomic64_fetch_sub_relaxed(s64 i, atomic64_t *v) · 3 unmodified lines
1060static __always_inline void1047static __always_inline void
1061atomic64_inc(atomic64_t *v)1048atomic64_inc(atomic64_t *v)
1062{1049{
1063 __atomic_check_write(v, sizeof(*v));1050 instrument_atomic_write(v, sizeof(*v));
1064 arch_atomic64_inc(v);1051 arch_atomic64_inc(v);
1065}1052}
1066#define atomic64_inc atomic64_inc1053#define atomic64_inc atomic64_inc
@@ -1070,7 +1057,7 @@ atomic64_inc(atomic64_t *v) · 3 unmodified lines
1070static __always_inline s641057static __always_inline s64
1071atomic64_inc_return(atomic64_t *v)1058atomic64_inc_return(atomic64_t *v)
1072{1059{
1073 __atomic_check_write(v, sizeof(*v));1060 instrument_atomic_write(v, sizeof(*v));
1074 return arch_atomic64_inc_return(v);1061 return arch_atomic64_inc_return(v);
1075}1062}
1076#define atomic64_inc_return atomic64_inc_return1063#define atomic64_inc_return atomic64_inc_return
@@ -1080,7 +1067,7 @@ atomic64_inc_return(atomic64_t *v) · 3 unmodified lines
1080static __always_inline s641067static __always_inline s64
1081atomic64_inc_return_acquire(atomic64_t *v)1068atomic64_inc_return_acquire(atomic64_t *v)
1082{1069{
1083 __atomic_check_write(v, sizeof(*v));1070 instrument_atomic_write(v, sizeof(*v));
1084 return arch_atomic64_inc_return_acquire(v);1071 return arch_atomic64_inc_return_acquire(v);
1085}1072}
1086#define atomic64_inc_return_acquire atomic64_inc_return_acquire1073#define atomic64_inc_return_acquire atomic64_inc_return_acquire
@@ -1090,7 +1077,7 @@ atomic64_inc_return_acquire(atomic64_t *v) · 3 unmodified lines
1090static __always_inline s641077static __always_inline s64
1091atomic64_inc_return_release(atomic64_t *v)1078atomic64_inc_return_release(atomic64_t *v)
1092{1079{
1093 __atomic_check_write(v, sizeof(*v));1080 instrument_atomic_write(v, sizeof(*v));
1094 return arch_atomic64_inc_return_release(v);1081 return arch_atomic64_inc_return_release(v);
1095}1082}
1096#define atomic64_inc_return_release atomic64_inc_return_release1083#define atomic64_inc_return_release atomic64_inc_return_release
@@ -1100,7 +1087,7 @@ atomic64_inc_return_release(atomic64_t *v) · 3 unmodified lines
1100static __always_inline s641087static __always_inline s64
1101atomic64_inc_return_relaxed(atomic64_t *v)1088atomic64_inc_return_relaxed(atomic64_t *v)
1102{1089{
1103 __atomic_check_write(v, sizeof(*v));1090 instrument_atomic_write(v, sizeof(*v));
1104 return arch_atomic64_inc_return_relaxed(v);1091 return arch_atomic64_inc_return_relaxed(v);
1105}1092}
1106#define atomic64_inc_return_relaxed atomic64_inc_return_relaxed1093#define atomic64_inc_return_relaxed atomic64_inc_return_relaxed
@@ -1110,7 +1097,7 @@ atomic64_inc_return_relaxed(atomic64_t *v) · 3 unmodified lines
1110static __always_inline s641097static __always_inline s64
1111atomic64_fetch_inc(atomic64_t *v)1098atomic64_fetch_inc(atomic64_t *v)
1112{1099{
1113 __atomic_check_write(v, sizeof(*v));1100 instrument_atomic_write(v, sizeof(*v));
1114 return arch_atomic64_fetch_inc(v);1101 return arch_atomic64_fetch_inc(v);
1115}1102}
1116#define atomic64_fetch_inc atomic64_fetch_inc1103#define atomic64_fetch_inc atomic64_fetch_inc
@@ -1120,7 +1107,7 @@ atomic64_fetch_inc(atomic64_t *v) · 3 unmodified lines
1120static __always_inline s641107static __always_inline s64
1121atomic64_fetch_inc_acquire(atomic64_t *v)1108atomic64_fetch_inc_acquire(atomic64_t *v)
1122{1109{
1123 __atomic_check_write(v, sizeof(*v));1110 instrument_atomic_write(v, sizeof(*v));
1124 return arch_atomic64_fetch_inc_acquire(v);1111 return arch_atomic64_fetch_inc_acquire(v);
1125}1112}
1126#define atomic64_fetch_inc_acquire atomic64_fetch_inc_acquire1113#define atomic64_fetch_inc_acquire atomic64_fetch_inc_acquire
@@ -1130,7 +1117,7 @@ atomic64_fetch_inc_acquire(atomic64_t *v) · 3 unmodified lines
1130static __always_inline s641117static __always_inline s64
1131atomic64_fetch_inc_release(atomic64_t *v)1118atomic64_fetch_inc_release(atomic64_t *v)
1132{1119{
1133 __atomic_check_write(v, sizeof(*v));1120 instrument_atomic_write(v, sizeof(*v));
1134 return arch_atomic64_fetch_inc_release(v);1121 return arch_atomic64_fetch_inc_release(v);
1135}1122}
1136#define atomic64_fetch_inc_release atomic64_fetch_inc_release1123#define atomic64_fetch_inc_release atomic64_fetch_inc_release
@@ -1140,7 +1127,7 @@ atomic64_fetch_inc_release(atomic64_t *v) · 3 unmodified lines
1140static __always_inline s641127static __always_inline s64
1141atomic64_fetch_inc_relaxed(atomic64_t *v)1128atomic64_fetch_inc_relaxed(atomic64_t *v)
1142{1129{
1143 __atomic_check_write(v, sizeof(*v));1130 instrument_atomic_write(v, sizeof(*v));
1144 return arch_atomic64_fetch_inc_relaxed(v);1131 return arch_atomic64_fetch_inc_relaxed(v);
1145}1132}
1146#define atomic64_fetch_inc_relaxed atomic64_fetch_inc_relaxed1133#define atomic64_fetch_inc_relaxed atomic64_fetch_inc_relaxed
@@ -1150,7 +1137,7 @@ atomic64_fetch_inc_relaxed(atomic64_t *v) · 3 unmodified lines
1150static __always_inline void1137static __always_inline void
1151atomic64_dec(atomic64_t *v)1138atomic64_dec(atomic64_t *v)
1152{1139{
1153 __atomic_check_write(v, sizeof(*v));1140 instrument_atomic_write(v, sizeof(*v));
1154 arch_atomic64_dec(v);1141 arch_atomic64_dec(v);
1155}1142}
1156#define atomic64_dec atomic64_dec1143#define atomic64_dec atomic64_dec
@@ -1160,7 +1147,7 @@ atomic64_dec(atomic64_t *v) · 3 unmodified lines
1160static __always_inline s641147static __always_inline s64
1161atomic64_dec_return(atomic64_t *v)1148atomic64_dec_return(atomic64_t *v)
1162{1149{
1163 __atomic_check_write(v, sizeof(*v));1150 instrument_atomic_write(v, sizeof(*v));
1164 return arch_atomic64_dec_return(v);1151 return arch_atomic64_dec_return(v);
1165}1152}
1166#define atomic64_dec_return atomic64_dec_return1153#define atomic64_dec_return atomic64_dec_return
@@ -1170,7 +1157,7 @@ atomic64_dec_return(atomic64_t *v) · 3 unmodified lines
1170static __always_inline s641157static __always_inline s64
1171atomic64_dec_return_acquire(atomic64_t *v)1158atomic64_dec_return_acquire(atomic64_t *v)
1172{1159{
1173 __atomic_check_write(v, sizeof(*v));1160 instrument_atomic_write(v, sizeof(*v));
1174 return arch_atomic64_dec_return_acquire(v);1161 return arch_atomic64_dec_return_acquire(v);
1175}1162}
1176#define atomic64_dec_return_acquire atomic64_dec_return_acquire1163#define atomic64_dec_return_acquire atomic64_dec_return_acquire
@@ -1180,7 +1167,7 @@ atomic64_dec_return_acquire(atomic64_t *v) · 3 unmodified lines
1180static __always_inline s641167static __always_inline s64
1181atomic64_dec_return_release(atomic64_t *v)1168atomic64_dec_return_release(atomic64_t *v)
1182{1169{
1183 __atomic_check_write(v, sizeof(*v));1170 instrument_atomic_write(v, sizeof(*v));
1184 return arch_atomic64_dec_return_release(v);1171 return arch_atomic64_dec_return_release(v);
1185}1172}
1186#define atomic64_dec_return_release atomic64_dec_return_release1173#define atomic64_dec_return_release atomic64_dec_return_release
@@ -1190,7 +1177,7 @@ atomic64_dec_return_release(atomic64_t *v) · 3 unmodified lines
1190static __always_inline s641177static __always_inline s64
1191atomic64_dec_return_relaxed(atomic64_t *v)1178atomic64_dec_return_relaxed(atomic64_t *v)
1192{1179{
1193 __atomic_check_write(v, sizeof(*v));1180 instrument_atomic_write(v, sizeof(*v));
1194 return arch_atomic64_dec_return_relaxed(v);1181 return arch_atomic64_dec_return_relaxed(v);
1195}1182}
1196#define atomic64_dec_return_relaxed atomic64_dec_return_relaxed1183#define atomic64_dec_return_relaxed atomic64_dec_return_relaxed
@@ -1200,7 +1187,7 @@ atomic64_dec_return_relaxed(atomic64_t *v) · 3 unmodified lines
1200static __always_inline s641187static __always_inline s64
1201atomic64_fetch_dec(atomic64_t *v)1188atomic64_fetch_dec(atomic64_t *v)
1202{1189{
1203 __atomic_check_write(v, sizeof(*v));1190 instrument_atomic_write(v, sizeof(*v));
1204 return arch_atomic64_fetch_dec(v);1191 return arch_atomic64_fetch_dec(v);
1205}1192}
1206#define atomic64_fetch_dec atomic64_fetch_dec1193#define atomic64_fetch_dec atomic64_fetch_dec
@@ -1210,7 +1197,7 @@ atomic64_fetch_dec(atomic64_t *v) · 3 unmodified lines
1210static __always_inline s641197static __always_inline s64
1211atomic64_fetch_dec_acquire(atomic64_t *v)1198atomic64_fetch_dec_acquire(atomic64_t *v)
1212{1199{
1213 __atomic_check_write(v, sizeof(*v));1200 instrument_atomic_write(v, sizeof(*v));
1214 return arch_atomic64_fetch_dec_acquire(v);1201 return arch_atomic64_fetch_dec_acquire(v);
1215}1202}
1216#define atomic64_fetch_dec_acquire atomic64_fetch_dec_acquire1203#define atomic64_fetch_dec_acquire atomic64_fetch_dec_acquire
@@ -1220,7 +1207,7 @@ atomic64_fetch_dec_acquire(atomic64_t *v) · 3 unmodified lines
1220static __always_inline s641207static __always_inline s64
1221atomic64_fetch_dec_release(atomic64_t *v)1208atomic64_fetch_dec_release(atomic64_t *v)
1222{1209{
1223 __atomic_check_write(v, sizeof(*v));1210 instrument_atomic_write(v, sizeof(*v));
1224 return arch_atomic64_fetch_dec_release(v);1211 return arch_atomic64_fetch_dec_release(v);
1225}1212}
1226#define atomic64_fetch_dec_release atomic64_fetch_dec_release1213#define atomic64_fetch_dec_release atomic64_fetch_dec_release
@@ -1230,7 +1217,7 @@ atomic64_fetch_dec_release(atomic64_t *v) · 3 unmodified lines
1230static __always_inline s641217static __always_inline s64
1231atomic64_fetch_dec_relaxed(atomic64_t *v)1218atomic64_fetch_dec_relaxed(atomic64_t *v)
1232{1219{
1233 __atomic_check_write(v, sizeof(*v));1220 instrument_atomic_write(v, sizeof(*v));
1234 return arch_atomic64_fetch_dec_relaxed(v);1221 return arch_atomic64_fetch_dec_relaxed(v);
1235}1222}
1236#define atomic64_fetch_dec_relaxed atomic64_fetch_dec_relaxed1223#define atomic64_fetch_dec_relaxed atomic64_fetch_dec_relaxed
@@ -1239,7 +1226,7 @@ atomic64_fetch_dec_relaxed(atomic64_t *v) · 2 unmodified lines
1239static __always_inline void1226static __always_inline void
1240atomic64_and(s64 i, atomic64_t *v)1227atomic64_and(s64 i, atomic64_t *v)
1241{1228{
1242 __atomic_check_write(v, sizeof(*v));1229 instrument_atomic_write(v, sizeof(*v));
1243 arch_atomic64_and(i, v);1230 arch_atomic64_and(i, v);
1244}1231}
1245#define atomic64_and atomic64_and1232#define atomic64_and atomic64_and
@@ -1248,7 +1235,7 @@ atomic64_and(s64 i, atomic64_t *v) · 2 unmodified lines
1248static __always_inline s641235static __always_inline s64
1249atomic64_fetch_and(s64 i, atomic64_t *v)1236atomic64_fetch_and(s64 i, atomic64_t *v)
1250{1237{
1251 __atomic_check_write(v, sizeof(*v));1238 instrument_atomic_write(v, sizeof(*v));
1252 return arch_atomic64_fetch_and(i, v);1239 return arch_atomic64_fetch_and(i, v);
1253}1240}
1254#define atomic64_fetch_and atomic64_fetch_and1241#define atomic64_fetch_and atomic64_fetch_and
@@ -1258,7 +1245,7 @@ atomic64_fetch_and(s64 i, atomic64_t *v) · 3 unmodified lines
1258static __always_inline s641245static __always_inline s64
1259atomic64_fetch_and_acquire(s64 i, atomic64_t *v)1246atomic64_fetch_and_acquire(s64 i, atomic64_t *v)
1260{1247{
1261 __atomic_check_write(v, sizeof(*v));1248 instrument_atomic_write(v, sizeof(*v));
1262 return arch_atomic64_fetch_and_acquire(i, v);1249 return arch_atomic64_fetch_and_acquire(i, v);
1263}1250}
1264#define atomic64_fetch_and_acquire atomic64_fetch_and_acquire1251#define atomic64_fetch_and_acquire atomic64_fetch_and_acquire
@@ -1268,7 +1255,7 @@ atomic64_fetch_and_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
1268static __always_inline s641255static __always_inline s64
1269atomic64_fetch_and_release(s64 i, atomic64_t *v)1256atomic64_fetch_and_release(s64 i, atomic64_t *v)
1270{1257{
1271 __atomic_check_write(v, sizeof(*v));1258 instrument_atomic_write(v, sizeof(*v));
1272 return arch_atomic64_fetch_and_release(i, v);1259 return arch_atomic64_fetch_and_release(i, v);
1273}1260}
1274#define atomic64_fetch_and_release atomic64_fetch_and_release1261#define atomic64_fetch_and_release atomic64_fetch_and_release
@@ -1278,7 +1265,7 @@ atomic64_fetch_and_release(s64 i, atomic64_t *v) · 3 unmodified lines
1278static __always_inline s641265static __always_inline s64
1279atomic64_fetch_and_relaxed(s64 i, atomic64_t *v)1266atomic64_fetch_and_relaxed(s64 i, atomic64_t *v)
1280{1267{
1281 __atomic_check_write(v, sizeof(*v));1268 instrument_atomic_write(v, sizeof(*v));
1282 return arch_atomic64_fetch_and_relaxed(i, v);1269 return arch_atomic64_fetch_and_relaxed(i, v);
1283}1270}
1284#define atomic64_fetch_and_relaxed atomic64_fetch_and_relaxed1271#define atomic64_fetch_and_relaxed atomic64_fetch_and_relaxed
@@ -1288,7 +1275,7 @@ atomic64_fetch_and_relaxed(s64 i, atomic64_t *v) · 3 unmodified lines
1288static __always_inline void1275static __always_inline void
1289atomic64_andnot(s64 i, atomic64_t *v)1276atomic64_andnot(s64 i, atomic64_t *v)
1290{1277{
1291 __atomic_check_write(v, sizeof(*v));1278 instrument_atomic_write(v, sizeof(*v));
1292 arch_atomic64_andnot(i, v);1279 arch_atomic64_andnot(i, v);
1293}1280}
1294#define atomic64_andnot atomic64_andnot1281#define atomic64_andnot atomic64_andnot
@@ -1298,7 +1285,7 @@ atomic64_andnot(s64 i, atomic64_t *v) · 3 unmodified lines
1298static __always_inline s641285static __always_inline s64
1299atomic64_fetch_andnot(s64 i, atomic64_t *v)1286atomic64_fetch_andnot(s64 i, atomic64_t *v)
1300{1287{
1301 __atomic_check_write(v, sizeof(*v));1288 instrument_atomic_write(v, sizeof(*v));
1302 return arch_atomic64_fetch_andnot(i, v);1289 return arch_atomic64_fetch_andnot(i, v);
1303}1290}
1304#define atomic64_fetch_andnot atomic64_fetch_andnot1291#define atomic64_fetch_andnot atomic64_fetch_andnot
@@ -1308,7 +1295,7 @@ atomic64_fetch_andnot(s64 i, atomic64_t *v) · 3 unmodified lines
1308static __always_inline s641295static __always_inline s64
1309atomic64_fetch_andnot_acquire(s64 i, atomic64_t *v)1296atomic64_fetch_andnot_acquire(s64 i, atomic64_t *v)
1310{1297{
1311 __atomic_check_write(v, sizeof(*v));1298 instrument_atomic_write(v, sizeof(*v));
1312 return arch_atomic64_fetch_andnot_acquire(i, v);1299 return arch_atomic64_fetch_andnot_acquire(i, v);
1313}1300}
1314#define atomic64_fetch_andnot_acquire atomic64_fetch_andnot_acquire1301#define atomic64_fetch_andnot_acquire atomic64_fetch_andnot_acquire
@@ -1318,7 +1305,7 @@ atomic64_fetch_andnot_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
1318static __always_inline s641305static __always_inline s64
1319atomic64_fetch_andnot_release(s64 i, atomic64_t *v)1306atomic64_fetch_andnot_release(s64 i, atomic64_t *v)
1320{1307{
1321 __atomic_check_write(v, sizeof(*v));1308 instrument_atomic_write(v, sizeof(*v));
1322 return arch_atomic64_fetch_andnot_release(i, v);1309 return arch_atomic64_fetch_andnot_release(i, v);
1323}1310}
1324#define atomic64_fetch_andnot_release atomic64_fetch_andnot_release1311#define atomic64_fetch_andnot_release atomic64_fetch_andnot_release
@@ -1328,7 +1315,7 @@ atomic64_fetch_andnot_release(s64 i, atomic64_t *v) · 3 unmodified lines
1328static __always_inline s641315static __always_inline s64
1329atomic64_fetch_andnot_relaxed(s64 i, atomic64_t *v)1316atomic64_fetch_andnot_relaxed(s64 i, atomic64_t *v)
1330{1317{
1331 __atomic_check_write(v, sizeof(*v));1318 instrument_atomic_write(v, sizeof(*v));
1332 return arch_atomic64_fetch_andnot_relaxed(i, v);1319 return arch_atomic64_fetch_andnot_relaxed(i, v);
1333}1320}
1334#define atomic64_fetch_andnot_relaxed atomic64_fetch_andnot_relaxed1321#define atomic64_fetch_andnot_relaxed atomic64_fetch_andnot_relaxed
@@ -1337,7 +1324,7 @@ atomic64_fetch_andnot_relaxed(s64 i, atomic64_t *v) · 2 unmodified lines
1337static __always_inline void1324static __always_inline void
1338atomic64_or(s64 i, atomic64_t *v)1325atomic64_or(s64 i, atomic64_t *v)
1339{1326{
1340 __atomic_check_write(v, sizeof(*v));1327 instrument_atomic_write(v, sizeof(*v));
1341 arch_atomic64_or(i, v);1328 arch_atomic64_or(i, v);
1342}1329}
1343#define atomic64_or atomic64_or1330#define atomic64_or atomic64_or
@@ -1346,7 +1333,7 @@ atomic64_or(s64 i, atomic64_t *v) · 2 unmodified lines
1346static __always_inline s641333static __always_inline s64
1347atomic64_fetch_or(s64 i, atomic64_t *v)1334atomic64_fetch_or(s64 i, atomic64_t *v)
1348{1335{
1349 __atomic_check_write(v, sizeof(*v));1336 instrument_atomic_write(v, sizeof(*v));
1350 return arch_atomic64_fetch_or(i, v);1337 return arch_atomic64_fetch_or(i, v);
1351}1338}
1352#define atomic64_fetch_or atomic64_fetch_or1339#define atomic64_fetch_or atomic64_fetch_or
@@ -1356,7 +1343,7 @@ atomic64_fetch_or(s64 i, atomic64_t *v) · 3 unmodified lines
1356static __always_inline s641343static __always_inline s64
1357atomic64_fetch_or_acquire(s64 i, atomic64_t *v)1344atomic64_fetch_or_acquire(s64 i, atomic64_t *v)
1358{1345{
1359 __atomic_check_write(v, sizeof(*v));1346 instrument_atomic_write(v, sizeof(*v));
1360 return arch_atomic64_fetch_or_acquire(i, v);1347 return arch_atomic64_fetch_or_acquire(i, v);
1361}1348}
1362#define atomic64_fetch_or_acquire atomic64_fetch_or_acquire1349#define atomic64_fetch_or_acquire atomic64_fetch_or_acquire
@@ -1366,7 +1353,7 @@ atomic64_fetch_or_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
1366static __always_inline s641353static __always_inline s64
1367atomic64_fetch_or_release(s64 i, atomic64_t *v)1354atomic64_fetch_or_release(s64 i, atomic64_t *v)
1368{1355{
1369 __atomic_check_write(v, sizeof(*v));1356 instrument_atomic_write(v, sizeof(*v));
1370 return arch_atomic64_fetch_or_release(i, v);1357 return arch_atomic64_fetch_or_release(i, v);
1371}1358}
1372#define atomic64_fetch_or_release atomic64_fetch_or_release1359#define atomic64_fetch_or_release atomic64_fetch_or_release
@@ -1376,7 +1363,7 @@ atomic64_fetch_or_release(s64 i, atomic64_t *v) · 3 unmodified lines
1376static __always_inline s641363static __always_inline s64
1377atomic64_fetch_or_relaxed(s64 i, atomic64_t *v)1364atomic64_fetch_or_relaxed(s64 i, atomic64_t *v)
1378{1365{
1379 __atomic_check_write(v, sizeof(*v));1366 instrument_atomic_write(v, sizeof(*v));
1380 return arch_atomic64_fetch_or_relaxed(i, v);1367 return arch_atomic64_fetch_or_relaxed(i, v);
1381}1368}
1382#define atomic64_fetch_or_relaxed atomic64_fetch_or_relaxed1369#define atomic64_fetch_or_relaxed atomic64_fetch_or_relaxed
@@ -1385,7 +1372,7 @@ atomic64_fetch_or_relaxed(s64 i, atomic64_t *v) · 2 unmodified lines
1385static __always_inline void1372static __always_inline void
1386atomic64_xor(s64 i, atomic64_t *v)1373atomic64_xor(s64 i, atomic64_t *v)
1387{1374{
1388 __atomic_check_write(v, sizeof(*v));1375 instrument_atomic_write(v, sizeof(*v));
1389 arch_atomic64_xor(i, v);1376 arch_atomic64_xor(i, v);
1390}1377}
1391#define atomic64_xor atomic64_xor1378#define atomic64_xor atomic64_xor
@@ -1394,7 +1381,7 @@ atomic64_xor(s64 i, atomic64_t *v) · 2 unmodified lines
1394static __always_inline s641381static __always_inline s64
1395atomic64_fetch_xor(s64 i, atomic64_t *v)1382atomic64_fetch_xor(s64 i, atomic64_t *v)
1396{1383{
1397 __atomic_check_write(v, sizeof(*v));1384 instrument_atomic_write(v, sizeof(*v));
1398 return arch_atomic64_fetch_xor(i, v);1385 return arch_atomic64_fetch_xor(i, v);
1399}1386}
1400#define atomic64_fetch_xor atomic64_fetch_xor1387#define atomic64_fetch_xor atomic64_fetch_xor
@@ -1404,7 +1391,7 @@ atomic64_fetch_xor(s64 i, atomic64_t *v) · 3 unmodified lines
1404static __always_inline s641391static __always_inline s64
1405atomic64_fetch_xor_acquire(s64 i, atomic64_t *v)1392atomic64_fetch_xor_acquire(s64 i, atomic64_t *v)
1406{1393{
1407 __atomic_check_write(v, sizeof(*v));1394 instrument_atomic_write(v, sizeof(*v));
1408 return arch_atomic64_fetch_xor_acquire(i, v);1395 return arch_atomic64_fetch_xor_acquire(i, v);
1409}1396}
1410#define atomic64_fetch_xor_acquire atomic64_fetch_xor_acquire1397#define atomic64_fetch_xor_acquire atomic64_fetch_xor_acquire
@@ -1414,7 +1401,7 @@ atomic64_fetch_xor_acquire(s64 i, atomic64_t *v) · 3 unmodified lines
1414static __always_inline s641401static __always_inline s64
1415atomic64_fetch_xor_release(s64 i, atomic64_t *v)1402atomic64_fetch_xor_release(s64 i, atomic64_t *v)
1416{1403{
1417 __atomic_check_write(v, sizeof(*v));1404 instrument_atomic_write(v, sizeof(*v));
1418 return arch_atomic64_fetch_xor_release(i, v);1405 return arch_atomic64_fetch_xor_release(i, v);
1419}1406}
1420#define atomic64_fetch_xor_release atomic64_fetch_xor_release1407#define atomic64_fetch_xor_release atomic64_fetch_xor_release
@@ -1424,7 +1411,7 @@ atomic64_fetch_xor_release(s64 i, atomic64_t *v) · 3 unmodified lines
1424static __always_inline s641411static __always_inline s64
1425atomic64_fetch_xor_relaxed(s64 i, atomic64_t *v)1412atomic64_fetch_xor_relaxed(s64 i, atomic64_t *v)
1426{1413{
1427 __atomic_check_write(v, sizeof(*v));1414 instrument_atomic_write(v, sizeof(*v));
1428 return arch_atomic64_fetch_xor_relaxed(i, v);1415 return arch_atomic64_fetch_xor_relaxed(i, v);
1429}1416}
1430#define atomic64_fetch_xor_relaxed atomic64_fetch_xor_relaxed1417#define atomic64_fetch_xor_relaxed atomic64_fetch_xor_relaxed
@@ -1434,7 +1421,7 @@ atomic64_fetch_xor_relaxed(s64 i, atomic64_t *v) · 3 unmodified lines
1434static __always_inline s641421static __always_inline s64
1435atomic64_xchg(atomic64_t *v, s64 i)1422atomic64_xchg(atomic64_t *v, s64 i)
1436{1423{
1437 __atomic_check_write(v, sizeof(*v));1424 instrument_atomic_write(v, sizeof(*v));
1438 return arch_atomic64_xchg(v, i);1425 return arch_atomic64_xchg(v, i);
1439}1426}
1440#define atomic64_xchg atomic64_xchg1427#define atomic64_xchg atomic64_xchg
@@ -1444,7 +1431,7 @@ atomic64_xchg(atomic64_t *v, s64 i) · 3 unmodified lines
1444static __always_inline s641431static __always_inline s64
1445atomic64_xchg_acquire(atomic64_t *v, s64 i)1432atomic64_xchg_acquire(atomic64_t *v, s64 i)
1446{1433{
1447 __atomic_check_write(v, sizeof(*v));1434 instrument_atomic_write(v, sizeof(*v));
1448 return arch_atomic64_xchg_acquire(v, i);1435 return arch_atomic64_xchg_acquire(v, i);
1449}1436}
1450#define atomic64_xchg_acquire atomic64_xchg_acquire1437#define atomic64_xchg_acquire atomic64_xchg_acquire
@@ -1454,7 +1441,7 @@ atomic64_xchg_acquire(atomic64_t *v, s64 i) · 3 unmodified lines
1454static __always_inline s641441static __always_inline s64
1455atomic64_xchg_release(atomic64_t *v, s64 i)1442atomic64_xchg_release(atomic64_t *v, s64 i)
1456{1443{
1457 __atomic_check_write(v, sizeof(*v));1444 instrument_atomic_write(v, sizeof(*v));
1458 return arch_atomic64_xchg_release(v, i);1445 return arch_atomic64_xchg_release(v, i);
1459}1446}
1460#define atomic64_xchg_release atomic64_xchg_release1447#define atomic64_xchg_release atomic64_xchg_release
@@ -1464,7 +1451,7 @@ atomic64_xchg_release(atomic64_t *v, s64 i) · 3 unmodified lines
1464static __always_inline s641451static __always_inline s64
1465atomic64_xchg_relaxed(atomic64_t *v, s64 i)1452atomic64_xchg_relaxed(atomic64_t *v, s64 i)
1466{1453{
1467 __atomic_check_write(v, sizeof(*v));1454 instrument_atomic_write(v, sizeof(*v));
1468 return arch_atomic64_xchg_relaxed(v, i);1455 return arch_atomic64_xchg_relaxed(v, i);
1469}1456}
1470#define atomic64_xchg_relaxed atomic64_xchg_relaxed1457#define atomic64_xchg_relaxed atomic64_xchg_relaxed
@@ -1474,7 +1461,7 @@ atomic64_xchg_relaxed(atomic64_t *v, s64 i) · 3 unmodified lines
1474static __always_inline s641461static __always_inline s64
1475atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new)1462atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new)
1476{1463{
1477 __atomic_check_write(v, sizeof(*v));1464 instrument_atomic_write(v, sizeof(*v));
1478 return arch_atomic64_cmpxchg(v, old, new);1465 return arch_atomic64_cmpxchg(v, old, new);
1479}1466}
1480#define atomic64_cmpxchg atomic64_cmpxchg1467#define atomic64_cmpxchg atomic64_cmpxchg
@@ -1484,7 +1471,7 @@ atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new) · 3 unmodified lines
1484static __always_inline s641471static __always_inline s64
1485atomic64_cmpxchg_acquire(atomic64_t *v, s64 old, s64 new)1472atomic64_cmpxchg_acquire(atomic64_t *v, s64 old, s64 new)
1486{1473{
1487 __atomic_check_write(v, sizeof(*v));1474 instrument_atomic_write(v, sizeof(*v));
1488 return arch_atomic64_cmpxchg_acquire(v, old, new);1475 return arch_atomic64_cmpxchg_acquire(v, old, new);
1489}1476}
1490#define atomic64_cmpxchg_acquire atomic64_cmpxchg_acquire1477#define atomic64_cmpxchg_acquire atomic64_cmpxchg_acquire
@@ -1494,7 +1481,7 @@ atomic64_cmpxchg_acquire(atomic64_t *v, s64 old, s64 new) · 3 unmodified lines
1494static __always_inline s641481static __always_inline s64
1495atomic64_cmpxchg_release(atomic64_t *v, s64 old, s64 new)1482atomic64_cmpxchg_release(atomic64_t *v, s64 old, s64 new)
1496{1483{
1497 __atomic_check_write(v, sizeof(*v));1484 instrument_atomic_write(v, sizeof(*v));
1498 return arch_atomic64_cmpxchg_release(v, old, new);1485 return arch_atomic64_cmpxchg_release(v, old, new);
1499}1486}
1500#define atomic64_cmpxchg_release atomic64_cmpxchg_release1487#define atomic64_cmpxchg_release atomic64_cmpxchg_release
@@ -1504,7 +1491,7 @@ atomic64_cmpxchg_release(atomic64_t *v, s64 old, s64 new) · 3 unmodified lines
1504static __always_inline s641491static __always_inline s64
1505atomic64_cmpxchg_relaxed(atomic64_t *v, s64 old, s64 new)1492atomic64_cmpxchg_relaxed(atomic64_t *v, s64 old, s64 new)
1506{1493{
1507 __atomic_check_write(v, sizeof(*v));1494 instrument_atomic_write(v, sizeof(*v));
1508 return arch_atomic64_cmpxchg_relaxed(v, old, new);1495 return arch_atomic64_cmpxchg_relaxed(v, old, new);
1509}1496}
1510#define atomic64_cmpxchg_relaxed atomic64_cmpxchg_relaxed1497#define atomic64_cmpxchg_relaxed atomic64_cmpxchg_relaxed
@@ -1514,8 +1501,8 @@ atomic64_cmpxchg_relaxed(atomic64_t *v, s64 old, s64 new) · 3 unmodified lines
1514static __always_inline bool1501static __always_inline bool
1515atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new)1502atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new)
1516{1503{
1517 __atomic_check_write(v, sizeof(*v));1504 instrument_atomic_write(v, sizeof(*v));
1518 __atomic_check_write(old, sizeof(*old));1505 instrument_atomic_write(old, sizeof(*old));
1519 return arch_atomic64_try_cmpxchg(v, old, new);1506 return arch_atomic64_try_cmpxchg(v, old, new);
1520}1507}
1521#define atomic64_try_cmpxchg atomic64_try_cmpxchg1508#define atomic64_try_cmpxchg atomic64_try_cmpxchg
@@ -1525,8 +1512,8 @@ atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new) · 3 unmodified lines
1525static __always_inline bool1512static __always_inline bool
1526atomic64_try_cmpxchg_acquire(atomic64_t *v, s64 *old, s64 new)1513atomic64_try_cmpxchg_acquire(atomic64_t *v, s64 *old, s64 new)
1527{1514{
1528 __atomic_check_write(v, sizeof(*v));1515 instrument_atomic_write(v, sizeof(*v));
1529 __atomic_check_write(old, sizeof(*old));1516 instrument_atomic_write(old, sizeof(*old));
1530 return arch_atomic64_try_cmpxchg_acquire(v, old, new);1517 return arch_atomic64_try_cmpxchg_acquire(v, old, new);
1531}1518}
1532#define atomic64_try_cmpxchg_acquire atomic64_try_cmpxchg_acquire1519#define atomic64_try_cmpxchg_acquire atomic64_try_cmpxchg_acquire
@@ -1536,8 +1523,8 @@ atomic64_try_cmpxchg_acquire(atomic64_t *v, s64 *old, s64 new) · 3 unmodified lines
1536static __always_inline bool1523static __always_inline bool
1537atomic64_try_cmpxchg_release(atomic64_t *v, s64 *old, s64 new)1524atomic64_try_cmpxchg_release(atomic64_t *v, s64 *old, s64 new)
1538{1525{
1539 __atomic_check_write(v, sizeof(*v));1526 instrument_atomic_write(v, sizeof(*v));
1540 __atomic_check_write(old, sizeof(*old));1527 instrument_atomic_write(old, sizeof(*old));
1541 return arch_atomic64_try_cmpxchg_release(v, old, new);1528 return arch_atomic64_try_cmpxchg_release(v, old, new);
1542}1529}
1543#define atomic64_try_cmpxchg_release atomic64_try_cmpxchg_release1530#define atomic64_try_cmpxchg_release atomic64_try_cmpxchg_release
@@ -1547,8 +1534,8 @@ atomic64_try_cmpxchg_release(atomic64_t *v, s64 *old, s64 new) · 3 unmodified lines
1547static __always_inline bool1534static __always_inline bool
1548atomic64_try_cmpxchg_relaxed(atomic64_t *v, s64 *old, s64 new)1535atomic64_try_cmpxchg_relaxed(atomic64_t *v, s64 *old, s64 new)
1549{1536{
1550 __atomic_check_write(v, sizeof(*v));1537 instrument_atomic_write(v, sizeof(*v));
1551 __atomic_check_write(old, sizeof(*old));1538 instrument_atomic_write(old, sizeof(*old));
1552 return arch_atomic64_try_cmpxchg_relaxed(v, old, new);1539 return arch_atomic64_try_cmpxchg_relaxed(v, old, new);
1553}1540}
1554#define atomic64_try_cmpxchg_relaxed atomic64_try_cmpxchg_relaxed1541#define atomic64_try_cmpxchg_relaxed atomic64_try_cmpxchg_relaxed
@@ -1558,7 +1545,7 @@ atomic64_try_cmpxchg_relaxed(atomic64_t *v, s64 *old, s64 new) · 3 unmodified lines
1558static __always_inline bool1545static __always_inline bool
1559atomic64_sub_and_test(s64 i, atomic64_t *v)1546atomic64_sub_and_test(s64 i, atomic64_t *v)
1560{1547{
1561 __atomic_check_write(v, sizeof(*v));1548 instrument_atomic_write(v, sizeof(*v));
1562 return arch_atomic64_sub_and_test(i, v);1549 return arch_atomic64_sub_and_test(i, v);
1563}1550}
1564#define atomic64_sub_and_test atomic64_sub_and_test1551#define atomic64_sub_and_test atomic64_sub_and_test
@@ -1568,7 +1555,7 @@ atomic64_sub_and_test(s64 i, atomic64_t *v) · 3 unmodified lines
1568static __always_inline bool1555static __always_inline bool
1569atomic64_dec_and_test(atomic64_t *v)1556atomic64_dec_and_test(atomic64_t *v)
1570{1557{
1571 __atomic_check_write(v, sizeof(*v));1558 instrument_atomic_write(v, sizeof(*v));
1572 return arch_atomic64_dec_and_test(v);1559 return arch_atomic64_dec_and_test(v);
1573}1560}
1574#define atomic64_dec_and_test atomic64_dec_and_test1561#define atomic64_dec_and_test atomic64_dec_and_test
@@ -1578,7 +1565,7 @@ atomic64_dec_and_test(atomic64_t *v) · 3 unmodified lines
1578static __always_inline bool1565static __always_inline bool
1579atomic64_inc_and_test(atomic64_t *v)1566atomic64_inc_and_test(atomic64_t *v)
1580{1567{
1581 __atomic_check_write(v, sizeof(*v));1568 instrument_atomic_write(v, sizeof(*v));
1582 return arch_atomic64_inc_and_test(v);1569 return arch_atomic64_inc_and_test(v);
1583}1570}
1584#define atomic64_inc_and_test atomic64_inc_and_test1571#define atomic64_inc_and_test atomic64_inc_and_test
@@ -1588,7 +1575,7 @@ atomic64_inc_and_test(atomic64_t *v) · 3 unmodified lines
1588static __always_inline bool1575static __always_inline bool
1589atomic64_add_negative(s64 i, atomic64_t *v)1576atomic64_add_negative(s64 i, atomic64_t *v)
1590{1577{
1591 __atomic_check_write(v, sizeof(*v));1578 instrument_atomic_write(v, sizeof(*v));
1592 return arch_atomic64_add_negative(i, v);1579 return arch_atomic64_add_negative(i, v);
1593}1580}
1594#define atomic64_add_negative atomic64_add_negative1581#define atomic64_add_negative atomic64_add_negative
@@ -1598,7 +1585,7 @@ atomic64_add_negative(s64 i, atomic64_t *v) · 3 unmodified lines
1598static __always_inline s641585static __always_inline s64
1599atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u)1586atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u)
1600{1587{
1601 __atomic_check_write(v, sizeof(*v));1588 instrument_atomic_write(v, sizeof(*v));
1602 return arch_atomic64_fetch_add_unless(v, a, u);1589 return arch_atomic64_fetch_add_unless(v, a, u);
1603}1590}
1604#define atomic64_fetch_add_unless atomic64_fetch_add_unless1591#define atomic64_fetch_add_unless atomic64_fetch_add_unless
@@ -1608,7 +1595,7 @@ atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u) · 3 unmodified lines
1608static __always_inline bool1595static __always_inline bool
1609atomic64_add_unless(atomic64_t *v, s64 a, s64 u)1596atomic64_add_unless(atomic64_t *v, s64 a, s64 u)
1610{1597{
1611 __atomic_check_write(v, sizeof(*v));1598 instrument_atomic_write(v, sizeof(*v));
1612 return arch_atomic64_add_unless(v, a, u);1599 return arch_atomic64_add_unless(v, a, u);
1613}1600}
1614#define atomic64_add_unless atomic64_add_unless1601#define atomic64_add_unless atomic64_add_unless
@@ -1618,7 +1605,7 @@ atomic64_add_unless(atomic64_t *v, s64 a, s64 u) · 3 unmodified lines
1618static __always_inline bool1605static __always_inline bool
1619atomic64_inc_not_zero(atomic64_t *v)1606atomic64_inc_not_zero(atomic64_t *v)
1620{1607{
1621 __atomic_check_write(v, sizeof(*v));1608 instrument_atomic_write(v, sizeof(*v));
1622 return arch_atomic64_inc_not_zero(v);1609 return arch_atomic64_inc_not_zero(v);
1623}1610}
1624#define atomic64_inc_not_zero atomic64_inc_not_zero1611#define atomic64_inc_not_zero atomic64_inc_not_zero
@@ -1628,7 +1615,7 @@ atomic64_inc_not_zero(atomic64_t *v) · 3 unmodified lines
1628static __always_inline bool1615static __always_inline bool
1629atomic64_inc_unless_negative(atomic64_t *v)1616atomic64_inc_unless_negative(atomic64_t *v)
1630{1617{
1631 __atomic_check_write(v, sizeof(*v));1618 instrument_atomic_write(v, sizeof(*v));
1632 return arch_atomic64_inc_unless_negative(v);1619 return arch_atomic64_inc_unless_negative(v);
1633}1620}
1634#define atomic64_inc_unless_negative atomic64_inc_unless_negative1621#define atomic64_inc_unless_negative atomic64_inc_unless_negative
@@ -1638,7 +1625,7 @@ atomic64_inc_unless_negative(atomic64_t *v) · 3 unmodified lines
1638static __always_inline bool1625static __always_inline bool
1639atomic64_dec_unless_positive(atomic64_t *v)1626atomic64_dec_unless_positive(atomic64_t *v)
1640{1627{
1641 __atomic_check_write(v, sizeof(*v));1628 instrument_atomic_write(v, sizeof(*v));
1642 return arch_atomic64_dec_unless_positive(v);1629 return arch_atomic64_dec_unless_positive(v);
1643}1630}
1644#define atomic64_dec_unless_positive atomic64_dec_unless_positive1631#define atomic64_dec_unless_positive atomic64_dec_unless_positive
@@ -1648,7 +1635,7 @@ atomic64_dec_unless_positive(atomic64_t *v) · 3 unmodified lines
1648static __always_inline s641635static __always_inline s64
1649atomic64_dec_if_positive(atomic64_t *v)1636atomic64_dec_if_positive(atomic64_t *v)
1650{1637{
1651 __atomic_check_write(v, sizeof(*v));1638 instrument_atomic_write(v, sizeof(*v));
1652 return arch_atomic64_dec_if_positive(v);1639 return arch_atomic64_dec_if_positive(v);
1653}1640}
1654#define atomic64_dec_if_positive atomic64_dec_if_positive1641#define atomic64_dec_if_positive atomic64_dec_if_positive
@@ -1658,7 +1645,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 3 unmodified lines
1658#define xchg(ptr, ...) \1645#define xchg(ptr, ...) \
1659({ \1646({ \
1660 typeof(ptr) __ai_ptr = (ptr); \1647 typeof(ptr) __ai_ptr = (ptr); \
1661 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1648 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1662 arch_xchg(__ai_ptr, __VA_ARGS__); \1649 arch_xchg(__ai_ptr, __VA_ARGS__); \
1663})1650})
1664#endif1651#endif
@@ -1667,7 +1654,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
1667#define xchg_acquire(ptr, ...) \1654#define xchg_acquire(ptr, ...) \
1668({ \1655({ \
1669 typeof(ptr) __ai_ptr = (ptr); \1656 typeof(ptr) __ai_ptr = (ptr); \
1670 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1657 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1671 arch_xchg_acquire(__ai_ptr, __VA_ARGS__); \1658 arch_xchg_acquire(__ai_ptr, __VA_ARGS__); \
1672})1659})
1673#endif1660#endif
@@ -1676,7 +1663,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
1676#define xchg_release(ptr, ...) \1663#define xchg_release(ptr, ...) \
1677({ \1664({ \
1678 typeof(ptr) __ai_ptr = (ptr); \1665 typeof(ptr) __ai_ptr = (ptr); \
1679 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1666 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1680 arch_xchg_release(__ai_ptr, __VA_ARGS__); \1667 arch_xchg_release(__ai_ptr, __VA_ARGS__); \
1681})1668})
1682#endif1669#endif
@@ -1685,7 +1672,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
1685#define xchg_relaxed(ptr, ...) \1672#define xchg_relaxed(ptr, ...) \
1686({ \1673({ \
1687 typeof(ptr) __ai_ptr = (ptr); \1674 typeof(ptr) __ai_ptr = (ptr); \
1688 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1675 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1689 arch_xchg_relaxed(__ai_ptr, __VA_ARGS__); \1676 arch_xchg_relaxed(__ai_ptr, __VA_ARGS__); \
1690})1677})
1691#endif1678#endif
@@ -1694,7 +1681,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
1694#define cmpxchg(ptr, ...) \1681#define cmpxchg(ptr, ...) \
1695({ \1682({ \
1696 typeof(ptr) __ai_ptr = (ptr); \1683 typeof(ptr) __ai_ptr = (ptr); \
1697 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1684 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1698 arch_cmpxchg(__ai_ptr, __VA_ARGS__); \1685 arch_cmpxchg(__ai_ptr, __VA_ARGS__); \
1699})1686})
1700#endif1687#endif
@@ -1703,7 +1690,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
1703#define cmpxchg_acquire(ptr, ...) \1690#define cmpxchg_acquire(ptr, ...) \
1704({ \1691({ \
1705 typeof(ptr) __ai_ptr = (ptr); \1692 typeof(ptr) __ai_ptr = (ptr); \
1706 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1693 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1707 arch_cmpxchg_acquire(__ai_ptr, __VA_ARGS__); \1694 arch_cmpxchg_acquire(__ai_ptr, __VA_ARGS__); \
1708})1695})
1709#endif1696#endif
@@ -1712,7 +1699,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
1712#define cmpxchg_release(ptr, ...) \1699#define cmpxchg_release(ptr, ...) \
1713({ \1700({ \
1714 typeof(ptr) __ai_ptr = (ptr); \1701 typeof(ptr) __ai_ptr = (ptr); \
1715 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1702 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1716 arch_cmpxchg_release(__ai_ptr, __VA_ARGS__); \1703 arch_cmpxchg_release(__ai_ptr, __VA_ARGS__); \
1717})1704})
1718#endif1705#endif
@@ -1721,7 +1708,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
1721#define cmpxchg_relaxed(ptr, ...) \1708#define cmpxchg_relaxed(ptr, ...) \
1722({ \1709({ \
1723 typeof(ptr) __ai_ptr = (ptr); \1710 typeof(ptr) __ai_ptr = (ptr); \
1724 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1711 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1725 arch_cmpxchg_relaxed(__ai_ptr, __VA_ARGS__); \1712 arch_cmpxchg_relaxed(__ai_ptr, __VA_ARGS__); \
1726})1713})
1727#endif1714#endif
@@ -1730,7 +1717,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
1730#define cmpxchg64(ptr, ...) \1717#define cmpxchg64(ptr, ...) \
1731({ \1718({ \
1732 typeof(ptr) __ai_ptr = (ptr); \1719 typeof(ptr) __ai_ptr = (ptr); \
1733 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1720 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1734 arch_cmpxchg64(__ai_ptr, __VA_ARGS__); \1721 arch_cmpxchg64(__ai_ptr, __VA_ARGS__); \
1735})1722})
1736#endif1723#endif
@@ -1739,7 +1726,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
1739#define cmpxchg64_acquire(ptr, ...) \1726#define cmpxchg64_acquire(ptr, ...) \
1740({ \1727({ \
1741 typeof(ptr) __ai_ptr = (ptr); \1728 typeof(ptr) __ai_ptr = (ptr); \
1742 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1729 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1743 arch_cmpxchg64_acquire(__ai_ptr, __VA_ARGS__); \1730 arch_cmpxchg64_acquire(__ai_ptr, __VA_ARGS__); \
1744})1731})
1745#endif1732#endif
@@ -1748,7 +1735,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
1748#define cmpxchg64_release(ptr, ...) \1735#define cmpxchg64_release(ptr, ...) \
1749({ \1736({ \
1750 typeof(ptr) __ai_ptr = (ptr); \1737 typeof(ptr) __ai_ptr = (ptr); \
1751 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1738 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1752 arch_cmpxchg64_release(__ai_ptr, __VA_ARGS__); \1739 arch_cmpxchg64_release(__ai_ptr, __VA_ARGS__); \
1753})1740})
1754#endif1741#endif
@@ -1757,7 +1744,7 @@ atomic64_dec_if_positive(atomic64_t *v) · 2 unmodified lines
1757#define cmpxchg64_relaxed(ptr, ...) \1744#define cmpxchg64_relaxed(ptr, ...) \
1758({ \1745({ \
1759 typeof(ptr) __ai_ptr = (ptr); \1746 typeof(ptr) __ai_ptr = (ptr); \
1760 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1747 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1761 arch_cmpxchg64_relaxed(__ai_ptr, __VA_ARGS__); \1748 arch_cmpxchg64_relaxed(__ai_ptr, __VA_ARGS__); \
1762})1749})
1763#endif1750#endif
@@ -1765,28 +1752,28 @@ atomic64_dec_if_positive(atomic64_t *v) · 1 unmodified line
1765#define cmpxchg_local(ptr, ...) \1752#define cmpxchg_local(ptr, ...) \
1766({ \1753({ \
1767 typeof(ptr) __ai_ptr = (ptr); \1754 typeof(ptr) __ai_ptr = (ptr); \
1768 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1755 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1769 arch_cmpxchg_local(__ai_ptr, __VA_ARGS__); \1756 arch_cmpxchg_local(__ai_ptr, __VA_ARGS__); \
1770})1757})
1771 1758
1772#define cmpxchg64_local(ptr, ...) \1759#define cmpxchg64_local(ptr, ...) \
1773({ \1760({ \
1774 typeof(ptr) __ai_ptr = (ptr); \1761 typeof(ptr) __ai_ptr = (ptr); \
1775 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1762 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1776 arch_cmpxchg64_local(__ai_ptr, __VA_ARGS__); \1763 arch_cmpxchg64_local(__ai_ptr, __VA_ARGS__); \
1777})1764})
1778 1765
1779#define sync_cmpxchg(ptr, ...) \1766#define sync_cmpxchg(ptr, ...) \
1780({ \1767({ \
1781 typeof(ptr) __ai_ptr = (ptr); \1768 typeof(ptr) __ai_ptr = (ptr); \
1782 __atomic_check_write(__ai_ptr, sizeof(*__ai_ptr)); \1769 instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \
1783 arch_sync_cmpxchg(__ai_ptr, __VA_ARGS__); \1770 arch_sync_cmpxchg(__ai_ptr, __VA_ARGS__); \
1784})1771})
1785 1772
1786#define cmpxchg_double(ptr, ...) \1773#define cmpxchg_double(ptr, ...) \
1787({ \1774({ \
1788 typeof(ptr) __ai_ptr = (ptr); \1775 typeof(ptr) __ai_ptr = (ptr); \
1789 __atomic_check_write(__ai_ptr, 2 * sizeof(*__ai_ptr)); \1776 instrument_atomic_write(__ai_ptr, 2 * sizeof(*__ai_ptr)); \
1790 arch_cmpxchg_double(__ai_ptr, __VA_ARGS__); \1777 arch_cmpxchg_double(__ai_ptr, __VA_ARGS__); \
1791})1778})
1792 1779
@@ -1794,9 +1781,9 @@ atomic64_dec_if_positive(atomic64_t *v) · 1 unmodified line
1794#define cmpxchg_double_local(ptr, ...) \1781#define cmpxchg_double_local(ptr, ...) \
1795({ \1782({ \
1796 typeof(ptr) __ai_ptr = (ptr); \1783 typeof(ptr) __ai_ptr = (ptr); \
1797 __atomic_check_write(__ai_ptr, 2 * sizeof(*__ai_ptr)); \1784 instrument_atomic_write(__ai_ptr, 2 * sizeof(*__ai_ptr)); \
1798 arch_cmpxchg_double_local(__ai_ptr, __VA_ARGS__); \1785 arch_cmpxchg_double_local(__ai_ptr, __VA_ARGS__); \
1799})1786})
1800 1787
1801#endif /* _ASM_GENERIC_ATOMIC_INSTRUMENTED_H */1788#endif /* _ASM_GENERIC_ATOMIC_INSTRUMENTED_H */
1802// 7b7e2af0e75c8ecb6f02298a7075f503f30d244c1789// 89bf97f3a7509b740845e51ddf31055b48a81f40
scripts/atomic/gen-atomic-instrumented.sh+3−16
@@ -20,7 +20,7 @@ gen_param_check() · 19 unmodified lines
20 # We don't write to constant parameters20 # We don't write to constant parameters
21 [ ${type#c} != ${type} ] && rw="read"21 [ ${type#c} != ${type} ] && rw="read"
22 22
23 printf "\t__atomic_check_${rw}(${name}, sizeof(*${name}));\n"23 printf "\tinstrument_atomic_${rw}(${name}, sizeof(*${name}));\n"
24}24}
25 25
26#gen_param_check(arg...)26#gen_param_check(arg...)
@@ -107,7 +107,7 @@ cat <<EOF · 80 unmodified lines
107#define ${xchg}(ptr, ...) \\107#define ${xchg}(ptr, ...) \\
108({ \\108({ \\
109 typeof(ptr) __ai_ptr = (ptr); \\109 typeof(ptr) __ai_ptr = (ptr); \\
110 __atomic_check_write(__ai_ptr, ${mult}sizeof(*__ai_ptr)); \\110 instrument_atomic_write(__ai_ptr, ${mult}sizeof(*__ai_ptr)); \\
111 arch_${xchg}(__ai_ptr, __VA_ARGS__); \\111 arch_${xchg}(__ai_ptr, __VA_ARGS__); \\
112})112})
113EOF113EOF
@@ -148,20 +148,7 @@ cat << EOF · 34 unmodified lines
148 148
149#include <linux/build_bug.h>149#include <linux/build_bug.h>
150#include <linux/compiler.h>150#include <linux/compiler.h>
151#include <linux/kasan-checks.h>151#include <linux/instrumented.h>
152#include <linux/kcsan-checks.h>
153
154static __always_inline void __atomic_check_read(const volatile void *v, size_t size)
155{
156 kasan_check_read(v, size);
157 kcsan_check_atomic_read(v, size);
158}
159
160static __always_inline void __atomic_check_write(const volatile void *v, size_t size)
161{
162 kasan_check_write(v, size);
163 kcsan_check_atomic_write(v, size);
164}
165 152
166EOF153EOF
167 154