~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/atomic/atomic-long.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/linux/atomic/atomic-long.h (Version linux-6.11-rc3) and /include/linux/atomic/atomic-long.h (Version linux-4.14.336)


  1 // SPDX-License-Identifier: GPL-2.0                 1 
  2                                                   
  3 // Generated by scripts/atomic/gen-atomic-long    
  4 // DO NOT MODIFY THIS FILE DIRECTLY               
  5                                                   
  6 #ifndef _LINUX_ATOMIC_LONG_H                      
  7 #define _LINUX_ATOMIC_LONG_H                      
  8                                                   
  9 #include <linux/compiler.h>                       
 10 #include <asm/types.h>                            
 11                                                   
 12 #ifdef CONFIG_64BIT                               
 13 typedef atomic64_t atomic_long_t;                 
 14 #define ATOMIC_LONG_INIT(i)             ATOMIC    
 15 #define atomic_long_cond_read_acquire   atomic    
 16 #define atomic_long_cond_read_relaxed   atomic    
 17 #else                                             
 18 typedef atomic_t atomic_long_t;                   
 19 #define ATOMIC_LONG_INIT(i)             ATOMIC    
 20 #define atomic_long_cond_read_acquire   atomic    
 21 #define atomic_long_cond_read_relaxed   atomic    
 22 #endif                                            
 23                                                   
 24 /**                                               
 25  * raw_atomic_long_read() - atomic load with r    
 26  * @v: pointer to atomic_long_t                   
 27  *                                                
 28  * Atomically loads the value of @v with relax    
 29  *                                                
 30  * Safe to use in noinstr code; prefer atomic_    
 31  *                                                
 32  * Return: The value loaded from @v.              
 33  */                                               
 34 static __always_inline long                       
 35 raw_atomic_long_read(const atomic_long_t *v)      
 36 {                                                 
 37 #ifdef CONFIG_64BIT                               
 38         return raw_atomic64_read(v);              
 39 #else                                             
 40         return raw_atomic_read(v);                
 41 #endif                                            
 42 }                                                 
 43                                                   
 44 /**                                               
 45  * raw_atomic_long_read_acquire() - atomic loa    
 46  * @v: pointer to atomic_long_t                   
 47  *                                                
 48  * Atomically loads the value of @v with acqui    
 49  *                                                
 50  * Safe to use in noinstr code; prefer atomic_    
 51  *                                                
 52  * Return: The value loaded from @v.              
 53  */                                               
 54 static __always_inline long                       
 55 raw_atomic_long_read_acquire(const atomic_long    
 56 {                                                 
 57 #ifdef CONFIG_64BIT                               
 58         return raw_atomic64_read_acquire(v);      
 59 #else                                             
 60         return raw_atomic_read_acquire(v);        
 61 #endif                                            
 62 }                                                 
 63                                                   
 64 /**                                               
 65  * raw_atomic_long_set() - atomic set with rel    
 66  * @v: pointer to atomic_long_t                   
 67  * @i: long value to assign                       
 68  *                                                
 69  * Atomically sets @v to @i with relaxed order    
 70  *                                                
 71  * Safe to use in noinstr code; prefer atomic_    
 72  *                                                
 73  * Return: Nothing.                               
 74  */                                               
 75 static __always_inline void                       
 76 raw_atomic_long_set(atomic_long_t *v, long i)     
 77 {                                                 
 78 #ifdef CONFIG_64BIT                               
 79         raw_atomic64_set(v, i);                   
 80 #else                                             
 81         raw_atomic_set(v, i);                     
 82 #endif                                            
 83 }                                                 
 84                                                   
 85 /**                                               
 86  * raw_atomic_long_set_release() - atomic set     
 87  * @v: pointer to atomic_long_t                   
 88  * @i: long value to assign                       
 89  *                                                
 90  * Atomically sets @v to @i with release order    
 91  *                                                
 92  * Safe to use in noinstr code; prefer atomic_    
 93  *                                                
 94  * Return: Nothing.                               
 95  */                                               
 96 static __always_inline void                       
 97 raw_atomic_long_set_release(atomic_long_t *v,     
 98 {                                                 
 99 #ifdef CONFIG_64BIT                               
100         raw_atomic64_set_release(v, i);           
101 #else                                             
102         raw_atomic_set_release(v, i);             
103 #endif                                            
104 }                                                 
105                                                   
106 /**                                               
107  * raw_atomic_long_add() - atomic add with rel    
108  * @i: long value to add                          
109  * @v: pointer to atomic_long_t                   
110  *                                                
111  * Atomically updates @v to (@v + @i) with rel    
112  *                                                
113  * Safe to use in noinstr code; prefer atomic_    
114  *                                                
115  * Return: Nothing.                               
116  */                                               
117 static __always_inline void                       
118 raw_atomic_long_add(long i, atomic_long_t *v)     
119 {                                                 
120 #ifdef CONFIG_64BIT                               
121         raw_atomic64_add(i, v);                   
122 #else                                             
123         raw_atomic_add(i, v);                     
124 #endif                                            
125 }                                                 
126                                                   
127 /**                                               
128  * raw_atomic_long_add_return() - atomic add w    
129  * @i: long value to add                          
130  * @v: pointer to atomic_long_t                   
131  *                                                
132  * Atomically updates @v to (@v + @i) with ful    
133  *                                                
134  * Safe to use in noinstr code; prefer atomic_    
135  *                                                
136  * Return: The updated value of @v.               
137  */                                               
138 static __always_inline long                       
139 raw_atomic_long_add_return(long i, atomic_long    
140 {                                                 
141 #ifdef CONFIG_64BIT                               
142         return raw_atomic64_add_return(i, v);     
143 #else                                             
144         return raw_atomic_add_return(i, v);       
145 #endif                                            
146 }                                                 
147                                                   
148 /**                                               
149  * raw_atomic_long_add_return_acquire() - atom    
150  * @i: long value to add                          
151  * @v: pointer to atomic_long_t                   
152  *                                                
153  * Atomically updates @v to (@v + @i) with acq    
154  *                                                
155  * Safe to use in noinstr code; prefer atomic_    
156  *                                                
157  * Return: The updated value of @v.               
158  */                                               
159 static __always_inline long                       
160 raw_atomic_long_add_return_acquire(long i, ato    
161 {                                                 
162 #ifdef CONFIG_64BIT                               
163         return raw_atomic64_add_return_acquire    
164 #else                                             
165         return raw_atomic_add_return_acquire(i    
166 #endif                                            
167 }                                                 
168                                                   
169 /**                                               
170  * raw_atomic_long_add_return_release() - atom    
171  * @i: long value to add                          
172  * @v: pointer to atomic_long_t                   
173  *                                                
174  * Atomically updates @v to (@v + @i) with rel    
175  *                                                
176  * Safe to use in noinstr code; prefer atomic_    
177  *                                                
178  * Return: The updated value of @v.               
179  */                                               
180 static __always_inline long                       
181 raw_atomic_long_add_return_release(long i, ato    
182 {                                                 
183 #ifdef CONFIG_64BIT                               
184         return raw_atomic64_add_return_release    
185 #else                                             
186         return raw_atomic_add_return_release(i    
187 #endif                                            
188 }                                                 
189                                                   
190 /**                                               
191  * raw_atomic_long_add_return_relaxed() - atom    
192  * @i: long value to add                          
193  * @v: pointer to atomic_long_t                   
194  *                                                
195  * Atomically updates @v to (@v + @i) with rel    
196  *                                                
197  * Safe to use in noinstr code; prefer atomic_    
198  *                                                
199  * Return: The updated value of @v.               
200  */                                               
201 static __always_inline long                       
202 raw_atomic_long_add_return_relaxed(long i, ato    
203 {                                                 
204 #ifdef CONFIG_64BIT                               
205         return raw_atomic64_add_return_relaxed    
206 #else                                             
207         return raw_atomic_add_return_relaxed(i    
208 #endif                                            
209 }                                                 
210                                                   
211 /**                                               
212  * raw_atomic_long_fetch_add() - atomic add wi    
213  * @i: long value to add                          
214  * @v: pointer to atomic_long_t                   
215  *                                                
216  * Atomically updates @v to (@v + @i) with ful    
217  *                                                
218  * Safe to use in noinstr code; prefer atomic_    
219  *                                                
220  * Return: The original value of @v.              
221  */                                               
222 static __always_inline long                       
223 raw_atomic_long_fetch_add(long i, atomic_long_    
224 {                                                 
225 #ifdef CONFIG_64BIT                               
226         return raw_atomic64_fetch_add(i, v);      
227 #else                                             
228         return raw_atomic_fetch_add(i, v);        
229 #endif                                            
230 }                                                 
231                                                   
232 /**                                               
233  * raw_atomic_long_fetch_add_acquire() - atomi    
234  * @i: long value to add                          
235  * @v: pointer to atomic_long_t                   
236  *                                                
237  * Atomically updates @v to (@v + @i) with acq    
238  *                                                
239  * Safe to use in noinstr code; prefer atomic_    
240  *                                                
241  * Return: The original value of @v.              
242  */                                               
243 static __always_inline long                       
244 raw_atomic_long_fetch_add_acquire(long i, atom    
245 {                                                 
246 #ifdef CONFIG_64BIT                               
247         return raw_atomic64_fetch_add_acquire(    
248 #else                                             
249         return raw_atomic_fetch_add_acquire(i,    
250 #endif                                            
251 }                                                 
252                                                   
253 /**                                               
254  * raw_atomic_long_fetch_add_release() - atomi    
255  * @i: long value to add                          
256  * @v: pointer to atomic_long_t                   
257  *                                                
258  * Atomically updates @v to (@v + @i) with rel    
259  *                                                
260  * Safe to use in noinstr code; prefer atomic_    
261  *                                                
262  * Return: The original value of @v.              
263  */                                               
264 static __always_inline long                       
265 raw_atomic_long_fetch_add_release(long i, atom    
266 {                                                 
267 #ifdef CONFIG_64BIT                               
268         return raw_atomic64_fetch_add_release(    
269 #else                                             
270         return raw_atomic_fetch_add_release(i,    
271 #endif                                            
272 }                                                 
273                                                   
274 /**                                               
275  * raw_atomic_long_fetch_add_relaxed() - atomi    
276  * @i: long value to add                          
277  * @v: pointer to atomic_long_t                   
278  *                                                
279  * Atomically updates @v to (@v + @i) with rel    
280  *                                                
281  * Safe to use in noinstr code; prefer atomic_    
282  *                                                
283  * Return: The original value of @v.              
284  */                                               
285 static __always_inline long                       
286 raw_atomic_long_fetch_add_relaxed(long i, atom    
287 {                                                 
288 #ifdef CONFIG_64BIT                               
289         return raw_atomic64_fetch_add_relaxed(    
290 #else                                             
291         return raw_atomic_fetch_add_relaxed(i,    
292 #endif                                            
293 }                                                 
294                                                   
295 /**                                               
296  * raw_atomic_long_sub() - atomic subtract wit    
297  * @i: long value to subtract                     
298  * @v: pointer to atomic_long_t                   
299  *                                                
300  * Atomically updates @v to (@v - @i) with rel    
301  *                                                
302  * Safe to use in noinstr code; prefer atomic_    
303  *                                                
304  * Return: Nothing.                               
305  */                                               
306 static __always_inline void                       
307 raw_atomic_long_sub(long i, atomic_long_t *v)     
308 {                                                 
309 #ifdef CONFIG_64BIT                               
310         raw_atomic64_sub(i, v);                   
311 #else                                             
312         raw_atomic_sub(i, v);                     
313 #endif                                            
314 }                                                 
315                                                   
316 /**                                               
317  * raw_atomic_long_sub_return() - atomic subtr    
318  * @i: long value to subtract                     
319  * @v: pointer to atomic_long_t                   
320  *                                                
321  * Atomically updates @v to (@v - @i) with ful    
322  *                                                
323  * Safe to use in noinstr code; prefer atomic_    
324  *                                                
325  * Return: The updated value of @v.               
326  */                                               
327 static __always_inline long                       
328 raw_atomic_long_sub_return(long i, atomic_long    
329 {                                                 
330 #ifdef CONFIG_64BIT                               
331         return raw_atomic64_sub_return(i, v);     
332 #else                                             
333         return raw_atomic_sub_return(i, v);       
334 #endif                                            
335 }                                                 
336                                                   
337 /**                                               
338  * raw_atomic_long_sub_return_acquire() - atom    
339  * @i: long value to subtract                     
340  * @v: pointer to atomic_long_t                   
341  *                                                
342  * Atomically updates @v to (@v - @i) with acq    
343  *                                                
344  * Safe to use in noinstr code; prefer atomic_    
345  *                                                
346  * Return: The updated value of @v.               
347  */                                               
348 static __always_inline long                       
349 raw_atomic_long_sub_return_acquire(long i, ato    
350 {                                                 
351 #ifdef CONFIG_64BIT                               
352         return raw_atomic64_sub_return_acquire    
353 #else                                             
354         return raw_atomic_sub_return_acquire(i    
355 #endif                                            
356 }                                                 
357                                                   
358 /**                                               
359  * raw_atomic_long_sub_return_release() - atom    
360  * @i: long value to subtract                     
361  * @v: pointer to atomic_long_t                   
362  *                                                
363  * Atomically updates @v to (@v - @i) with rel    
364  *                                                
365  * Safe to use in noinstr code; prefer atomic_    
366  *                                                
367  * Return: The updated value of @v.               
368  */                                               
369 static __always_inline long                       
370 raw_atomic_long_sub_return_release(long i, ato    
371 {                                                 
372 #ifdef CONFIG_64BIT                               
373         return raw_atomic64_sub_return_release    
374 #else                                             
375         return raw_atomic_sub_return_release(i    
376 #endif                                            
377 }                                                 
378                                                   
379 /**                                               
380  * raw_atomic_long_sub_return_relaxed() - atom    
381  * @i: long value to subtract                     
382  * @v: pointer to atomic_long_t                   
383  *                                                
384  * Atomically updates @v to (@v - @i) with rel    
385  *                                                
386  * Safe to use in noinstr code; prefer atomic_    
387  *                                                
388  * Return: The updated value of @v.               
389  */                                               
390 static __always_inline long                       
391 raw_atomic_long_sub_return_relaxed(long i, ato    
392 {                                                 
393 #ifdef CONFIG_64BIT                               
394         return raw_atomic64_sub_return_relaxed    
395 #else                                             
396         return raw_atomic_sub_return_relaxed(i    
397 #endif                                            
398 }                                                 
399                                                   
400 /**                                               
401  * raw_atomic_long_fetch_sub() - atomic subtra    
402  * @i: long value to subtract                     
403  * @v: pointer to atomic_long_t                   
404  *                                                
405  * Atomically updates @v to (@v - @i) with ful    
406  *                                                
407  * Safe to use in noinstr code; prefer atomic_    
408  *                                                
409  * Return: The original value of @v.              
410  */                                               
411 static __always_inline long                       
412 raw_atomic_long_fetch_sub(long i, atomic_long_    
413 {                                                 
414 #ifdef CONFIG_64BIT                               
415         return raw_atomic64_fetch_sub(i, v);      
416 #else                                             
417         return raw_atomic_fetch_sub(i, v);        
418 #endif                                            
419 }                                                 
420                                                   
421 /**                                               
422  * raw_atomic_long_fetch_sub_acquire() - atomi    
423  * @i: long value to subtract                     
424  * @v: pointer to atomic_long_t                   
425  *                                                
426  * Atomically updates @v to (@v - @i) with acq    
427  *                                                
428  * Safe to use in noinstr code; prefer atomic_    
429  *                                                
430  * Return: The original value of @v.              
431  */                                               
432 static __always_inline long                       
433 raw_atomic_long_fetch_sub_acquire(long i, atom    
434 {                                                 
435 #ifdef CONFIG_64BIT                               
436         return raw_atomic64_fetch_sub_acquire(    
437 #else                                             
438         return raw_atomic_fetch_sub_acquire(i,    
439 #endif                                            
440 }                                                 
441                                                   
442 /**                                               
443  * raw_atomic_long_fetch_sub_release() - atomi    
444  * @i: long value to subtract                     
445  * @v: pointer to atomic_long_t                   
446  *                                                
447  * Atomically updates @v to (@v - @i) with rel    
448  *                                                
449  * Safe to use in noinstr code; prefer atomic_    
450  *                                                
451  * Return: The original value of @v.              
452  */                                               
453 static __always_inline long                       
454 raw_atomic_long_fetch_sub_release(long i, atom    
455 {                                                 
456 #ifdef CONFIG_64BIT                               
457         return raw_atomic64_fetch_sub_release(    
458 #else                                             
459         return raw_atomic_fetch_sub_release(i,    
460 #endif                                            
461 }                                                 
462                                                   
463 /**                                               
464  * raw_atomic_long_fetch_sub_relaxed() - atomi    
465  * @i: long value to subtract                     
466  * @v: pointer to atomic_long_t                   
467  *                                                
468  * Atomically updates @v to (@v - @i) with rel    
469  *                                                
470  * Safe to use in noinstr code; prefer atomic_    
471  *                                                
472  * Return: The original value of @v.              
473  */                                               
474 static __always_inline long                       
475 raw_atomic_long_fetch_sub_relaxed(long i, atom    
476 {                                                 
477 #ifdef CONFIG_64BIT                               
478         return raw_atomic64_fetch_sub_relaxed(    
479 #else                                             
480         return raw_atomic_fetch_sub_relaxed(i,    
481 #endif                                            
482 }                                                 
483                                                   
484 /**                                               
485  * raw_atomic_long_inc() - atomic increment wi    
486  * @v: pointer to atomic_long_t                   
487  *                                                
488  * Atomically updates @v to (@v + 1) with rela    
489  *                                                
490  * Safe to use in noinstr code; prefer atomic_    
491  *                                                
492  * Return: Nothing.                               
493  */                                               
494 static __always_inline void                       
495 raw_atomic_long_inc(atomic_long_t *v)             
496 {                                                 
497 #ifdef CONFIG_64BIT                               
498         raw_atomic64_inc(v);                      
499 #else                                             
500         raw_atomic_inc(v);                        
501 #endif                                            
502 }                                                 
503                                                   
504 /**                                               
505  * raw_atomic_long_inc_return() - atomic incre    
506  * @v: pointer to atomic_long_t                   
507  *                                                
508  * Atomically updates @v to (@v + 1) with full    
509  *                                                
510  * Safe to use in noinstr code; prefer atomic_    
511  *                                                
512  * Return: The updated value of @v.               
513  */                                               
514 static __always_inline long                       
515 raw_atomic_long_inc_return(atomic_long_t *v)      
516 {                                                 
517 #ifdef CONFIG_64BIT                               
518         return raw_atomic64_inc_return(v);        
519 #else                                             
520         return raw_atomic_inc_return(v);          
521 #endif                                            
522 }                                                 
523                                                   
524 /**                                               
525  * raw_atomic_long_inc_return_acquire() - atom    
526  * @v: pointer to atomic_long_t                   
527  *                                                
528  * Atomically updates @v to (@v + 1) with acqu    
529  *                                                
530  * Safe to use in noinstr code; prefer atomic_    
531  *                                                
532  * Return: The updated value of @v.               
533  */                                               
534 static __always_inline long                       
535 raw_atomic_long_inc_return_acquire(atomic_long    
536 {                                                 
537 #ifdef CONFIG_64BIT                               
538         return raw_atomic64_inc_return_acquire    
539 #else                                             
540         return raw_atomic_inc_return_acquire(v    
541 #endif                                            
542 }                                                 
543                                                   
544 /**                                               
545  * raw_atomic_long_inc_return_release() - atom    
546  * @v: pointer to atomic_long_t                   
547  *                                                
548  * Atomically updates @v to (@v + 1) with rele    
549  *                                                
550  * Safe to use in noinstr code; prefer atomic_    
551  *                                                
552  * Return: The updated value of @v.               
553  */                                               
554 static __always_inline long                       
555 raw_atomic_long_inc_return_release(atomic_long    
556 {                                                 
557 #ifdef CONFIG_64BIT                               
558         return raw_atomic64_inc_return_release    
559 #else                                             
560         return raw_atomic_inc_return_release(v    
561 #endif                                            
562 }                                                 
563                                                   
564 /**                                               
565  * raw_atomic_long_inc_return_relaxed() - atom    
566  * @v: pointer to atomic_long_t                   
567  *                                                
568  * Atomically updates @v to (@v + 1) with rela    
569  *                                                
570  * Safe to use in noinstr code; prefer atomic_    
571  *                                                
572  * Return: The updated value of @v.               
573  */                                               
574 static __always_inline long                       
575 raw_atomic_long_inc_return_relaxed(atomic_long    
576 {                                                 
577 #ifdef CONFIG_64BIT                               
578         return raw_atomic64_inc_return_relaxed    
579 #else                                             
580         return raw_atomic_inc_return_relaxed(v    
581 #endif                                            
582 }                                                 
583                                                   
584 /**                                               
585  * raw_atomic_long_fetch_inc() - atomic increm    
586  * @v: pointer to atomic_long_t                   
587  *                                                
588  * Atomically updates @v to (@v + 1) with full    
589  *                                                
590  * Safe to use in noinstr code; prefer atomic_    
591  *                                                
592  * Return: The original value of @v.              
593  */                                               
594 static __always_inline long                       
595 raw_atomic_long_fetch_inc(atomic_long_t *v)       
596 {                                                 
597 #ifdef CONFIG_64BIT                               
598         return raw_atomic64_fetch_inc(v);         
599 #else                                             
600         return raw_atomic_fetch_inc(v);           
601 #endif                                            
602 }                                                 
603                                                   
604 /**                                               
605  * raw_atomic_long_fetch_inc_acquire() - atomi    
606  * @v: pointer to atomic_long_t                   
607  *                                                
608  * Atomically updates @v to (@v + 1) with acqu    
609  *                                                
610  * Safe to use in noinstr code; prefer atomic_    
611  *                                                
612  * Return: The original value of @v.              
613  */                                               
614 static __always_inline long                       
615 raw_atomic_long_fetch_inc_acquire(atomic_long_    
616 {                                                 
617 #ifdef CONFIG_64BIT                               
618         return raw_atomic64_fetch_inc_acquire(    
619 #else                                             
620         return raw_atomic_fetch_inc_acquire(v)    
621 #endif                                            
622 }                                                 
623                                                   
624 /**                                               
625  * raw_atomic_long_fetch_inc_release() - atomi    
626  * @v: pointer to atomic_long_t                   
627  *                                                
628  * Atomically updates @v to (@v + 1) with rele    
629  *                                                
630  * Safe to use in noinstr code; prefer atomic_    
631  *                                                
632  * Return: The original value of @v.              
633  */                                               
634 static __always_inline long                       
635 raw_atomic_long_fetch_inc_release(atomic_long_    
636 {                                                 
637 #ifdef CONFIG_64BIT                               
638         return raw_atomic64_fetch_inc_release(    
639 #else                                             
640         return raw_atomic_fetch_inc_release(v)    
641 #endif                                            
642 }                                                 
643                                                   
644 /**                                               
645  * raw_atomic_long_fetch_inc_relaxed() - atomi    
646  * @v: pointer to atomic_long_t                   
647  *                                                
648  * Atomically updates @v to (@v + 1) with rela    
649  *                                                
650  * Safe to use in noinstr code; prefer atomic_    
651  *                                                
652  * Return: The original value of @v.              
653  */                                               
654 static __always_inline long                       
655 raw_atomic_long_fetch_inc_relaxed(atomic_long_    
656 {                                                 
657 #ifdef CONFIG_64BIT                               
658         return raw_atomic64_fetch_inc_relaxed(    
659 #else                                             
660         return raw_atomic_fetch_inc_relaxed(v)    
661 #endif                                            
662 }                                                 
663                                                   
664 /**                                               
665  * raw_atomic_long_dec() - atomic decrement wi    
666  * @v: pointer to atomic_long_t                   
667  *                                                
668  * Atomically updates @v to (@v - 1) with rela    
669  *                                                
670  * Safe to use in noinstr code; prefer atomic_    
671  *                                                
672  * Return: Nothing.                               
673  */                                               
674 static __always_inline void                       
675 raw_atomic_long_dec(atomic_long_t *v)             
676 {                                                 
677 #ifdef CONFIG_64BIT                               
678         raw_atomic64_dec(v);                      
679 #else                                             
680         raw_atomic_dec(v);                        
681 #endif                                            
682 }                                                 
683                                                   
684 /**                                               
685  * raw_atomic_long_dec_return() - atomic decre    
686  * @v: pointer to atomic_long_t                   
687  *                                                
688  * Atomically updates @v to (@v - 1) with full    
689  *                                                
690  * Safe to use in noinstr code; prefer atomic_    
691  *                                                
692  * Return: The updated value of @v.               
693  */                                               
694 static __always_inline long                       
695 raw_atomic_long_dec_return(atomic_long_t *v)      
696 {                                                 
697 #ifdef CONFIG_64BIT                               
698         return raw_atomic64_dec_return(v);        
699 #else                                             
700         return raw_atomic_dec_return(v);          
701 #endif                                            
702 }                                                 
703                                                   
704 /**                                               
705  * raw_atomic_long_dec_return_acquire() - atom    
706  * @v: pointer to atomic_long_t                   
707  *                                                
708  * Atomically updates @v to (@v - 1) with acqu    
709  *                                                
710  * Safe to use in noinstr code; prefer atomic_    
711  *                                                
712  * Return: The updated value of @v.               
713  */                                               
714 static __always_inline long                       
715 raw_atomic_long_dec_return_acquire(atomic_long    
716 {                                                 
717 #ifdef CONFIG_64BIT                               
718         return raw_atomic64_dec_return_acquire    
719 #else                                             
720         return raw_atomic_dec_return_acquire(v    
721 #endif                                            
722 }                                                 
723                                                   
724 /**                                               
725  * raw_atomic_long_dec_return_release() - atom    
726  * @v: pointer to atomic_long_t                   
727  *                                                
728  * Atomically updates @v to (@v - 1) with rele    
729  *                                                
730  * Safe to use in noinstr code; prefer atomic_    
731  *                                                
732  * Return: The updated value of @v.               
733  */                                               
734 static __always_inline long                       
735 raw_atomic_long_dec_return_release(atomic_long    
736 {                                                 
737 #ifdef CONFIG_64BIT                               
738         return raw_atomic64_dec_return_release    
739 #else                                             
740         return raw_atomic_dec_return_release(v    
741 #endif                                            
742 }                                                 
743                                                   
744 /**                                               
745  * raw_atomic_long_dec_return_relaxed() - atom    
746  * @v: pointer to atomic_long_t                   
747  *                                                
748  * Atomically updates @v to (@v - 1) with rela    
749  *                                                
750  * Safe to use in noinstr code; prefer atomic_    
751  *                                                
752  * Return: The updated value of @v.               
753  */                                               
754 static __always_inline long                       
755 raw_atomic_long_dec_return_relaxed(atomic_long    
756 {                                                 
757 #ifdef CONFIG_64BIT                               
758         return raw_atomic64_dec_return_relaxed    
759 #else                                             
760         return raw_atomic_dec_return_relaxed(v    
761 #endif                                            
762 }                                                 
763                                                   
764 /**                                               
765  * raw_atomic_long_fetch_dec() - atomic decrem    
766  * @v: pointer to atomic_long_t                   
767  *                                                
768  * Atomically updates @v to (@v - 1) with full    
769  *                                                
770  * Safe to use in noinstr code; prefer atomic_    
771  *                                                
772  * Return: The original value of @v.              
773  */                                               
774 static __always_inline long                       
775 raw_atomic_long_fetch_dec(atomic_long_t *v)       
776 {                                                 
777 #ifdef CONFIG_64BIT                               
778         return raw_atomic64_fetch_dec(v);         
779 #else                                             
780         return raw_atomic_fetch_dec(v);           
781 #endif                                            
782 }                                                 
783                                                   
784 /**                                               
785  * raw_atomic_long_fetch_dec_acquire() - atomi    
786  * @v: pointer to atomic_long_t                   
787  *                                                
788  * Atomically updates @v to (@v - 1) with acqu    
789  *                                                
790  * Safe to use in noinstr code; prefer atomic_    
791  *                                                
792  * Return: The original value of @v.              
793  */                                               
794 static __always_inline long                       
795 raw_atomic_long_fetch_dec_acquire(atomic_long_    
796 {                                                 
797 #ifdef CONFIG_64BIT                               
798         return raw_atomic64_fetch_dec_acquire(    
799 #else                                             
800         return raw_atomic_fetch_dec_acquire(v)    
801 #endif                                            
802 }                                                 
803                                                   
804 /**                                               
805  * raw_atomic_long_fetch_dec_release() - atomi    
806  * @v: pointer to atomic_long_t                   
807  *                                                
808  * Atomically updates @v to (@v - 1) with rele    
809  *                                                
810  * Safe to use in noinstr code; prefer atomic_    
811  *                                                
812  * Return: The original value of @v.              
813  */                                               
814 static __always_inline long                       
815 raw_atomic_long_fetch_dec_release(atomic_long_    
816 {                                                 
817 #ifdef CONFIG_64BIT                               
818         return raw_atomic64_fetch_dec_release(    
819 #else                                             
820         return raw_atomic_fetch_dec_release(v)    
821 #endif                                            
822 }                                                 
823                                                   
824 /**                                               
825  * raw_atomic_long_fetch_dec_relaxed() - atomi    
826  * @v: pointer to atomic_long_t                   
827  *                                                
828  * Atomically updates @v to (@v - 1) with rela    
829  *                                                
830  * Safe to use in noinstr code; prefer atomic_    
831  *                                                
832  * Return: The original value of @v.              
833  */                                               
834 static __always_inline long                       
835 raw_atomic_long_fetch_dec_relaxed(atomic_long_    
836 {                                                 
837 #ifdef CONFIG_64BIT                               
838         return raw_atomic64_fetch_dec_relaxed(    
839 #else                                             
840         return raw_atomic_fetch_dec_relaxed(v)    
841 #endif                                            
842 }                                                 
843                                                   
844 /**                                               
845  * raw_atomic_long_and() - atomic bitwise AND     
846  * @i: long value                                 
847  * @v: pointer to atomic_long_t                   
848  *                                                
849  * Atomically updates @v to (@v & @i) with rel    
850  *                                                
851  * Safe to use in noinstr code; prefer atomic_    
852  *                                                
853  * Return: Nothing.                               
854  */                                               
855 static __always_inline void                       
856 raw_atomic_long_and(long i, atomic_long_t *v)     
857 {                                                 
858 #ifdef CONFIG_64BIT                               
859         raw_atomic64_and(i, v);                   
860 #else                                             
861         raw_atomic_and(i, v);                     
862 #endif                                            
863 }                                                 
864                                                   
865 /**                                               
866  * raw_atomic_long_fetch_and() - atomic bitwis    
867  * @i: long value                                 
868  * @v: pointer to atomic_long_t                   
869  *                                                
870  * Atomically updates @v to (@v & @i) with ful    
871  *                                                
872  * Safe to use in noinstr code; prefer atomic_    
873  *                                                
874  * Return: The original value of @v.              
875  */                                               
876 static __always_inline long                       
877 raw_atomic_long_fetch_and(long i, atomic_long_    
878 {                                                 
879 #ifdef CONFIG_64BIT                               
880         return raw_atomic64_fetch_and(i, v);      
881 #else                                             
882         return raw_atomic_fetch_and(i, v);        
883 #endif                                            
884 }                                                 
885                                                   
886 /**                                               
887  * raw_atomic_long_fetch_and_acquire() - atomi    
888  * @i: long value                                 
889  * @v: pointer to atomic_long_t                   
890  *                                                
891  * Atomically updates @v to (@v & @i) with acq    
892  *                                                
893  * Safe to use in noinstr code; prefer atomic_    
894  *                                                
895  * Return: The original value of @v.              
896  */                                               
897 static __always_inline long                       
898 raw_atomic_long_fetch_and_acquire(long i, atom    
899 {                                                 
900 #ifdef CONFIG_64BIT                               
901         return raw_atomic64_fetch_and_acquire(    
902 #else                                             
903         return raw_atomic_fetch_and_acquire(i,    
904 #endif                                            
905 }                                                 
906                                                   
907 /**                                               
908  * raw_atomic_long_fetch_and_release() - atomi    
909  * @i: long value                                 
910  * @v: pointer to atomic_long_t                   
911  *                                                
912  * Atomically updates @v to (@v & @i) with rel    
913  *                                                
914  * Safe to use in noinstr code; prefer atomic_    
915  *                                                
916  * Return: The original value of @v.              
917  */                                               
918 static __always_inline long                       
919 raw_atomic_long_fetch_and_release(long i, atom    
920 {                                                 
921 #ifdef CONFIG_64BIT                               
922         return raw_atomic64_fetch_and_release(    
923 #else                                             
924         return raw_atomic_fetch_and_release(i,    
925 #endif                                            
926 }                                                 
927                                                   
928 /**                                               
929  * raw_atomic_long_fetch_and_relaxed() - atomi    
930  * @i: long value                                 
931  * @v: pointer to atomic_long_t                   
932  *                                                
933  * Atomically updates @v to (@v & @i) with rel    
934  *                                                
935  * Safe to use in noinstr code; prefer atomic_    
936  *                                                
937  * Return: The original value of @v.              
938  */                                               
939 static __always_inline long                       
940 raw_atomic_long_fetch_and_relaxed(long i, atom    
941 {                                                 
942 #ifdef CONFIG_64BIT                               
943         return raw_atomic64_fetch_and_relaxed(    
944 #else                                             
945         return raw_atomic_fetch_and_relaxed(i,    
946 #endif                                            
947 }                                                 
948                                                   
949 /**                                               
950  * raw_atomic_long_andnot() - atomic bitwise A    
951  * @i: long value                                 
952  * @v: pointer to atomic_long_t                   
953  *                                                
954  * Atomically updates @v to (@v & ~@i) with re    
955  *                                                
956  * Safe to use in noinstr code; prefer atomic_    
957  *                                                
958  * Return: Nothing.                               
959  */                                               
960 static __always_inline void                       
961 raw_atomic_long_andnot(long i, atomic_long_t *    
962 {                                                 
963 #ifdef CONFIG_64BIT                               
964         raw_atomic64_andnot(i, v);                
965 #else                                             
966         raw_atomic_andnot(i, v);                  
967 #endif                                            
968 }                                                 
969                                                   
970 /**                                               
971  * raw_atomic_long_fetch_andnot() - atomic bit    
972  * @i: long value                                 
973  * @v: pointer to atomic_long_t                   
974  *                                                
975  * Atomically updates @v to (@v & ~@i) with fu    
976  *                                                
977  * Safe to use in noinstr code; prefer atomic_    
978  *                                                
979  * Return: The original value of @v.              
980  */                                               
981 static __always_inline long                       
982 raw_atomic_long_fetch_andnot(long i, atomic_lo    
983 {                                                 
984 #ifdef CONFIG_64BIT                               
985         return raw_atomic64_fetch_andnot(i, v)    
986 #else                                             
987         return raw_atomic_fetch_andnot(i, v);     
988 #endif                                            
989 }                                                 
990                                                   
991 /**                                               
992  * raw_atomic_long_fetch_andnot_acquire() - at    
993  * @i: long value                                 
994  * @v: pointer to atomic_long_t                   
995  *                                                
996  * Atomically updates @v to (@v & ~@i) with ac    
997  *                                                
998  * Safe to use in noinstr code; prefer atomic_    
999  *                                                
1000  * Return: The original value of @v.             
1001  */                                              
1002 static __always_inline long                      
1003 raw_atomic_long_fetch_andnot_acquire(long i,     
1004 {                                                
1005 #ifdef CONFIG_64BIT                              
1006         return raw_atomic64_fetch_andnot_acqu    
1007 #else                                            
1008         return raw_atomic_fetch_andnot_acquir    
1009 #endif                                           
1010 }                                                
1011                                                  
1012 /**                                              
1013  * raw_atomic_long_fetch_andnot_release() - a    
1014  * @i: long value                                
1015  * @v: pointer to atomic_long_t                  
1016  *                                               
1017  * Atomically updates @v to (@v & ~@i) with r    
1018  *                                               
1019  * Safe to use in noinstr code; prefer atomic    
1020  *                                               
1021  * Return: The original value of @v.             
1022  */                                              
1023 static __always_inline long                      
1024 raw_atomic_long_fetch_andnot_release(long i,     
1025 {                                                
1026 #ifdef CONFIG_64BIT                              
1027         return raw_atomic64_fetch_andnot_rele    
1028 #else                                            
1029         return raw_atomic_fetch_andnot_releas    
1030 #endif                                           
1031 }                                                
1032                                                  
1033 /**                                              
1034  * raw_atomic_long_fetch_andnot_relaxed() - a    
1035  * @i: long value                                
1036  * @v: pointer to atomic_long_t                  
1037  *                                               
1038  * Atomically updates @v to (@v & ~@i) with r    
1039  *                                               
1040  * Safe to use in noinstr code; prefer atomic    
1041  *                                               
1042  * Return: The original value of @v.             
1043  */                                              
1044 static __always_inline long                      
1045 raw_atomic_long_fetch_andnot_relaxed(long i,     
1046 {                                                
1047 #ifdef CONFIG_64BIT                              
1048         return raw_atomic64_fetch_andnot_rela    
1049 #else                                            
1050         return raw_atomic_fetch_andnot_relaxe    
1051 #endif                                           
1052 }                                                
1053                                                  
1054 /**                                              
1055  * raw_atomic_long_or() - atomic bitwise OR w    
1056  * @i: long value                                
1057  * @v: pointer to atomic_long_t                  
1058  *                                               
1059  * Atomically updates @v to (@v | @i) with re    
1060  *                                               
1061  * Safe to use in noinstr code; prefer atomic    
1062  *                                               
1063  * Return: Nothing.                              
1064  */                                              
1065 static __always_inline void                      
1066 raw_atomic_long_or(long i, atomic_long_t *v)     
1067 {                                                
1068 #ifdef CONFIG_64BIT                              
1069         raw_atomic64_or(i, v);                   
1070 #else                                            
1071         raw_atomic_or(i, v);                     
1072 #endif                                           
1073 }                                                
1074                                                  
1075 /**                                              
1076  * raw_atomic_long_fetch_or() - atomic bitwis    
1077  * @i: long value                                
1078  * @v: pointer to atomic_long_t                  
1079  *                                               
1080  * Atomically updates @v to (@v | @i) with fu    
1081  *                                               
1082  * Safe to use in noinstr code; prefer atomic    
1083  *                                               
1084  * Return: The original value of @v.             
1085  */                                              
1086 static __always_inline long                      
1087 raw_atomic_long_fetch_or(long i, atomic_long_    
1088 {                                                
1089 #ifdef CONFIG_64BIT                              
1090         return raw_atomic64_fetch_or(i, v);      
1091 #else                                            
1092         return raw_atomic_fetch_or(i, v);        
1093 #endif                                           
1094 }                                                
1095                                                  
1096 /**                                              
1097  * raw_atomic_long_fetch_or_acquire() - atomi    
1098  * @i: long value                                
1099  * @v: pointer to atomic_long_t                  
1100  *                                               
1101  * Atomically updates @v to (@v | @i) with ac    
1102  *                                               
1103  * Safe to use in noinstr code; prefer atomic    
1104  *                                               
1105  * Return: The original value of @v.             
1106  */                                              
1107 static __always_inline long                      
1108 raw_atomic_long_fetch_or_acquire(long i, atom    
1109 {                                                
1110 #ifdef CONFIG_64BIT                              
1111         return raw_atomic64_fetch_or_acquire(    
1112 #else                                            
1113         return raw_atomic_fetch_or_acquire(i,    
1114 #endif                                           
1115 }                                                
1116                                                  
1117 /**                                              
1118  * raw_atomic_long_fetch_or_release() - atomi    
1119  * @i: long value                                
1120  * @v: pointer to atomic_long_t                  
1121  *                                               
1122  * Atomically updates @v to (@v | @i) with re    
1123  *                                               
1124  * Safe to use in noinstr code; prefer atomic    
1125  *                                               
1126  * Return: The original value of @v.             
1127  */                                              
1128 static __always_inline long                      
1129 raw_atomic_long_fetch_or_release(long i, atom    
1130 {                                                
1131 #ifdef CONFIG_64BIT                              
1132         return raw_atomic64_fetch_or_release(    
1133 #else                                            
1134         return raw_atomic_fetch_or_release(i,    
1135 #endif                                           
1136 }                                                
1137                                                  
1138 /**                                              
1139  * raw_atomic_long_fetch_or_relaxed() - atomi    
1140  * @i: long value                                
1141  * @v: pointer to atomic_long_t                  
1142  *                                               
1143  * Atomically updates @v to (@v | @i) with re    
1144  *                                               
1145  * Safe to use in noinstr code; prefer atomic    
1146  *                                               
1147  * Return: The original value of @v.             
1148  */                                              
1149 static __always_inline long                      
1150 raw_atomic_long_fetch_or_relaxed(long i, atom    
1151 {                                                
1152 #ifdef CONFIG_64BIT                              
1153         return raw_atomic64_fetch_or_relaxed(    
1154 #else                                            
1155         return raw_atomic_fetch_or_relaxed(i,    
1156 #endif                                           
1157 }                                                
1158                                                  
1159 /**                                              
1160  * raw_atomic_long_xor() - atomic bitwise XOR    
1161  * @i: long value                                
1162  * @v: pointer to atomic_long_t                  
1163  *                                               
1164  * Atomically updates @v to (@v ^ @i) with re    
1165  *                                               
1166  * Safe to use in noinstr code; prefer atomic    
1167  *                                               
1168  * Return: Nothing.                              
1169  */                                              
1170 static __always_inline void                      
1171 raw_atomic_long_xor(long i, atomic_long_t *v)    
1172 {                                                
1173 #ifdef CONFIG_64BIT                              
1174         raw_atomic64_xor(i, v);                  
1175 #else                                            
1176         raw_atomic_xor(i, v);                    
1177 #endif                                           
1178 }                                                
1179                                                  
1180 /**                                              
1181  * raw_atomic_long_fetch_xor() - atomic bitwi    
1182  * @i: long value                                
1183  * @v: pointer to atomic_long_t                  
1184  *                                               
1185  * Atomically updates @v to (@v ^ @i) with fu    
1186  *                                               
1187  * Safe to use in noinstr code; prefer atomic    
1188  *                                               
1189  * Return: The original value of @v.             
1190  */                                              
1191 static __always_inline long                      
1192 raw_atomic_long_fetch_xor(long i, atomic_long    
1193 {                                                
1194 #ifdef CONFIG_64BIT                              
1195         return raw_atomic64_fetch_xor(i, v);     
1196 #else                                            
1197         return raw_atomic_fetch_xor(i, v);       
1198 #endif                                           
1199 }                                                
1200                                                  
1201 /**                                              
1202  * raw_atomic_long_fetch_xor_acquire() - atom    
1203  * @i: long value                                
1204  * @v: pointer to atomic_long_t                  
1205  *                                               
1206  * Atomically updates @v to (@v ^ @i) with ac    
1207  *                                               
1208  * Safe to use in noinstr code; prefer atomic    
1209  *                                               
1210  * Return: The original value of @v.             
1211  */                                              
1212 static __always_inline long                      
1213 raw_atomic_long_fetch_xor_acquire(long i, ato    
1214 {                                                
1215 #ifdef CONFIG_64BIT                              
1216         return raw_atomic64_fetch_xor_acquire    
1217 #else                                            
1218         return raw_atomic_fetch_xor_acquire(i    
1219 #endif                                           
1220 }                                                
1221                                                  
1222 /**                                              
1223  * raw_atomic_long_fetch_xor_release() - atom    
1224  * @i: long value                                
1225  * @v: pointer to atomic_long_t                  
1226  *                                               
1227  * Atomically updates @v to (@v ^ @i) with re    
1228  *                                               
1229  * Safe to use in noinstr code; prefer atomic    
1230  *                                               
1231  * Return: The original value of @v.             
1232  */                                              
1233 static __always_inline long                      
1234 raw_atomic_long_fetch_xor_release(long i, ato    
1235 {                                                
1236 #ifdef CONFIG_64BIT                              
1237         return raw_atomic64_fetch_xor_release    
1238 #else                                            
1239         return raw_atomic_fetch_xor_release(i    
1240 #endif                                           
1241 }                                                
1242                                                  
1243 /**                                              
1244  * raw_atomic_long_fetch_xor_relaxed() - atom    
1245  * @i: long value                                
1246  * @v: pointer to atomic_long_t                  
1247  *                                               
1248  * Atomically updates @v to (@v ^ @i) with re    
1249  *                                               
1250  * Safe to use in noinstr code; prefer atomic    
1251  *                                               
1252  * Return: The original value of @v.             
1253  */                                              
1254 static __always_inline long                      
1255 raw_atomic_long_fetch_xor_relaxed(long i, ato    
1256 {                                                
1257 #ifdef CONFIG_64BIT                              
1258         return raw_atomic64_fetch_xor_relaxed    
1259 #else                                            
1260         return raw_atomic_fetch_xor_relaxed(i    
1261 #endif                                           
1262 }                                                
1263                                                  
1264 /**                                              
1265  * raw_atomic_long_xchg() - atomic exchange w    
1266  * @v: pointer to atomic_long_t                  
1267  * @new: long value to assign                    
1268  *                                               
1269  * Atomically updates @v to @new with full or    
1270  *                                               
1271  * Safe to use in noinstr code; prefer atomic    
1272  *                                               
1273  * Return: The original value of @v.             
1274  */                                              
1275 static __always_inline long                      
1276 raw_atomic_long_xchg(atomic_long_t *v, long n    
1277 {                                                
1278 #ifdef CONFIG_64BIT                              
1279         return raw_atomic64_xchg(v, new);        
1280 #else                                            
1281         return raw_atomic_xchg(v, new);          
1282 #endif                                           
1283 }                                                
1284                                                  
1285 /**                                              
1286  * raw_atomic_long_xchg_acquire() - atomic ex    
1287  * @v: pointer to atomic_long_t                  
1288  * @new: long value to assign                    
1289  *                                               
1290  * Atomically updates @v to @new with acquire    
1291  *                                               
1292  * Safe to use in noinstr code; prefer atomic    
1293  *                                               
1294  * Return: The original value of @v.             
1295  */                                              
1296 static __always_inline long                      
1297 raw_atomic_long_xchg_acquire(atomic_long_t *v    
1298 {                                                
1299 #ifdef CONFIG_64BIT                              
1300         return raw_atomic64_xchg_acquire(v, n    
1301 #else                                            
1302         return raw_atomic_xchg_acquire(v, new    
1303 #endif                                           
1304 }                                                
1305                                                  
1306 /**                                              
1307  * raw_atomic_long_xchg_release() - atomic ex    
1308  * @v: pointer to atomic_long_t                  
1309  * @new: long value to assign                    
1310  *                                               
1311  * Atomically updates @v to @new with release    
1312  *                                               
1313  * Safe to use in noinstr code; prefer atomic    
1314  *                                               
1315  * Return: The original value of @v.             
1316  */                                              
1317 static __always_inline long                      
1318 raw_atomic_long_xchg_release(atomic_long_t *v    
1319 {                                                
1320 #ifdef CONFIG_64BIT                              
1321         return raw_atomic64_xchg_release(v, n    
1322 #else                                            
1323         return raw_atomic_xchg_release(v, new    
1324 #endif                                           
1325 }                                                
1326                                                  
1327 /**                                              
1328  * raw_atomic_long_xchg_relaxed() - atomic ex    
1329  * @v: pointer to atomic_long_t                  
1330  * @new: long value to assign                    
1331  *                                               
1332  * Atomically updates @v to @new with relaxed    
1333  *                                               
1334  * Safe to use in noinstr code; prefer atomic    
1335  *                                               
1336  * Return: The original value of @v.             
1337  */                                              
1338 static __always_inline long                      
1339 raw_atomic_long_xchg_relaxed(atomic_long_t *v    
1340 {                                                
1341 #ifdef CONFIG_64BIT                              
1342         return raw_atomic64_xchg_relaxed(v, n    
1343 #else                                            
1344         return raw_atomic_xchg_relaxed(v, new    
1345 #endif                                           
1346 }                                                
1347                                                  
1348 /**                                              
1349  * raw_atomic_long_cmpxchg() - atomic compare    
1350  * @v: pointer to atomic_long_t                  
1351  * @old: long value to compare with              
1352  * @new: long value to assign                    
1353  *                                               
1354  * If (@v == @old), atomically updates @v to     
1355  * Otherwise, @v is not modified and relaxed     
1356  *                                               
1357  * Safe to use in noinstr code; prefer atomic    
1358  *                                               
1359  * Return: The original value of @v.             
1360  */                                              
1361 static __always_inline long                      
1362 raw_atomic_long_cmpxchg(atomic_long_t *v, lon    
1363 {                                                
1364 #ifdef CONFIG_64BIT                              
1365         return raw_atomic64_cmpxchg(v, old, n    
1366 #else                                            
1367         return raw_atomic_cmpxchg(v, old, new    
1368 #endif                                           
1369 }                                                
1370                                                  
1371 /**                                              
1372  * raw_atomic_long_cmpxchg_acquire() - atomic    
1373  * @v: pointer to atomic_long_t                  
1374  * @old: long value to compare with              
1375  * @new: long value to assign                    
1376  *                                               
1377  * If (@v == @old), atomically updates @v to     
1378  * Otherwise, @v is not modified and relaxed     
1379  *                                               
1380  * Safe to use in noinstr code; prefer atomic    
1381  *                                               
1382  * Return: The original value of @v.             
1383  */                                              
1384 static __always_inline long                      
1385 raw_atomic_long_cmpxchg_acquire(atomic_long_t    
1386 {                                                
1387 #ifdef CONFIG_64BIT                              
1388         return raw_atomic64_cmpxchg_acquire(v    
1389 #else                                            
1390         return raw_atomic_cmpxchg_acquire(v,     
1391 #endif                                           
1392 }                                                
1393                                                  
1394 /**                                              
1395  * raw_atomic_long_cmpxchg_release() - atomic    
1396  * @v: pointer to atomic_long_t                  
1397  * @old: long value to compare with              
1398  * @new: long value to assign                    
1399  *                                               
1400  * If (@v == @old), atomically updates @v to     
1401  * Otherwise, @v is not modified and relaxed     
1402  *                                               
1403  * Safe to use in noinstr code; prefer atomic    
1404  *                                               
1405  * Return: The original value of @v.             
1406  */                                              
1407 static __always_inline long                      
1408 raw_atomic_long_cmpxchg_release(atomic_long_t    
1409 {                                                
1410 #ifdef CONFIG_64BIT                              
1411         return raw_atomic64_cmpxchg_release(v    
1412 #else                                            
1413         return raw_atomic_cmpxchg_release(v,     
1414 #endif                                           
1415 }                                                
1416                                                  
1417 /**                                              
1418  * raw_atomic_long_cmpxchg_relaxed() - atomic    
1419  * @v: pointer to atomic_long_t                  
1420  * @old: long value to compare with              
1421  * @new: long value to assign                    
1422  *                                               
1423  * If (@v == @old), atomically updates @v to     
1424  * Otherwise, @v is not modified and relaxed     
1425  *                                               
1426  * Safe to use in noinstr code; prefer atomic    
1427  *                                               
1428  * Return: The original value of @v.             
1429  */                                              
1430 static __always_inline long                      
1431 raw_atomic_long_cmpxchg_relaxed(atomic_long_t    
1432 {                                                
1433 #ifdef CONFIG_64BIT                              
1434         return raw_atomic64_cmpxchg_relaxed(v    
1435 #else                                            
1436         return raw_atomic_cmpxchg_relaxed(v,     
1437 #endif                                           
1438 }                                                
1439                                                  
1440 /**                                              
1441  * raw_atomic_long_try_cmpxchg() - atomic com    
1442  * @v: pointer to atomic_long_t                  
1443  * @old: pointer to long value to compare wit    
1444  * @new: long value to assign                    
1445  *                                               
1446  * If (@v == @old), atomically updates @v to     
1447  * Otherwise, @v is not modified, @old is upd    
1448  * and relaxed ordering is provided.             
1449  *                                               
1450  * Safe to use in noinstr code; prefer atomic    
1451  *                                               
1452  * Return: @true if the exchange occured, @fa    
1453  */                                              
1454 static __always_inline bool                      
1455 raw_atomic_long_try_cmpxchg(atomic_long_t *v,    
1456 {                                                
1457 #ifdef CONFIG_64BIT                              
1458         return raw_atomic64_try_cmpxchg(v, (s    
1459 #else                                            
1460         return raw_atomic_try_cmpxchg(v, (int    
1461 #endif                                           
1462 }                                                
1463                                                  
1464 /**                                              
1465  * raw_atomic_long_try_cmpxchg_acquire() - at    
1466  * @v: pointer to atomic_long_t                  
1467  * @old: pointer to long value to compare wit    
1468  * @new: long value to assign                    
1469  *                                               
1470  * If (@v == @old), atomically updates @v to     
1471  * Otherwise, @v is not modified, @old is upd    
1472  * and relaxed ordering is provided.             
1473  *                                               
1474  * Safe to use in noinstr code; prefer atomic    
1475  *                                               
1476  * Return: @true if the exchange occured, @fa    
1477  */                                              
1478 static __always_inline bool                      
1479 raw_atomic_long_try_cmpxchg_acquire(atomic_lo    
1480 {                                                
1481 #ifdef CONFIG_64BIT                              
1482         return raw_atomic64_try_cmpxchg_acqui    
1483 #else                                            
1484         return raw_atomic_try_cmpxchg_acquire    
1485 #endif                                           
1486 }                                                
1487                                                  
1488 /**                                              
1489  * raw_atomic_long_try_cmpxchg_release() - at    
1490  * @v: pointer to atomic_long_t                  
1491  * @old: pointer to long value to compare wit    
1492  * @new: long value to assign                    
1493  *                                               
1494  * If (@v == @old), atomically updates @v to     
1495  * Otherwise, @v is not modified, @old is upd    
1496  * and relaxed ordering is provided.             
1497  *                                               
1498  * Safe to use in noinstr code; prefer atomic    
1499  *                                               
1500  * Return: @true if the exchange occured, @fa    
1501  */                                              
1502 static __always_inline bool                      
1503 raw_atomic_long_try_cmpxchg_release(atomic_lo    
1504 {                                                
1505 #ifdef CONFIG_64BIT                              
1506         return raw_atomic64_try_cmpxchg_relea    
1507 #else                                            
1508         return raw_atomic_try_cmpxchg_release    
1509 #endif                                           
1510 }                                                
1511                                                  
1512 /**                                              
1513  * raw_atomic_long_try_cmpxchg_relaxed() - at    
1514  * @v: pointer to atomic_long_t                  
1515  * @old: pointer to long value to compare wit    
1516  * @new: long value to assign                    
1517  *                                               
1518  * If (@v == @old), atomically updates @v to     
1519  * Otherwise, @v is not modified, @old is upd    
1520  * and relaxed ordering is provided.             
1521  *                                               
1522  * Safe to use in noinstr code; prefer atomic    
1523  *                                               
1524  * Return: @true if the exchange occured, @fa    
1525  */                                              
1526 static __always_inline bool                      
1527 raw_atomic_long_try_cmpxchg_relaxed(atomic_lo    
1528 {                                                
1529 #ifdef CONFIG_64BIT                              
1530         return raw_atomic64_try_cmpxchg_relax    
1531 #else                                            
1532         return raw_atomic_try_cmpxchg_relaxed    
1533 #endif                                           
1534 }                                                
1535                                                  
1536 /**                                              
1537  * raw_atomic_long_sub_and_test() - atomic su    
1538  * @i: long value to subtract                    
1539  * @v: pointer to atomic_long_t                  
1540  *                                               
1541  * Atomically updates @v to (@v - @i) with fu    
1542  *                                               
1543  * Safe to use in noinstr code; prefer atomic    
1544  *                                               
1545  * Return: @true if the resulting value of @v    
1546  */                                              
1547 static __always_inline bool                      
1548 raw_atomic_long_sub_and_test(long i, atomic_l    
1549 {                                                
1550 #ifdef CONFIG_64BIT                              
1551         return raw_atomic64_sub_and_test(i, v    
1552 #else                                            
1553         return raw_atomic_sub_and_test(i, v);    
1554 #endif                                           
1555 }                                                
1556                                                  
1557 /**                                              
1558  * raw_atomic_long_dec_and_test() - atomic de    
1559  * @v: pointer to atomic_long_t                  
1560  *                                               
1561  * Atomically updates @v to (@v - 1) with ful    
1562  *                                               
1563  * Safe to use in noinstr code; prefer atomic    
1564  *                                               
1565  * Return: @true if the resulting value of @v    
1566  */                                              
1567 static __always_inline bool                      
1568 raw_atomic_long_dec_and_test(atomic_long_t *v    
1569 {                                                
1570 #ifdef CONFIG_64BIT                              
1571         return raw_atomic64_dec_and_test(v);     
1572 #else                                            
1573         return raw_atomic_dec_and_test(v);       
1574 #endif                                           
1575 }                                                
1576                                                  
1577 /**                                              
1578  * raw_atomic_long_inc_and_test() - atomic in    
1579  * @v: pointer to atomic_long_t                  
1580  *                                               
1581  * Atomically updates @v to (@v + 1) with ful    
1582  *                                               
1583  * Safe to use in noinstr code; prefer atomic    
1584  *                                               
1585  * Return: @true if the resulting value of @v    
1586  */                                              
1587 static __always_inline bool                      
1588 raw_atomic_long_inc_and_test(atomic_long_t *v    
1589 {                                                
1590 #ifdef CONFIG_64BIT                              
1591         return raw_atomic64_inc_and_test(v);     
1592 #else                                            
1593         return raw_atomic_inc_and_test(v);       
1594 #endif                                           
1595 }                                                
1596                                                  
1597 /**                                              
1598  * raw_atomic_long_add_negative() - atomic ad    
1599  * @i: long value to add                         
1600  * @v: pointer to atomic_long_t                  
1601  *                                               
1602  * Atomically updates @v to (@v + @i) with fu    
1603  *                                               
1604  * Safe to use in noinstr code; prefer atomic    
1605  *                                               
1606  * Return: @true if the resulting value of @v    
1607  */                                              
1608 static __always_inline bool                      
1609 raw_atomic_long_add_negative(long i, atomic_l    
1610 {                                                
1611 #ifdef CONFIG_64BIT                              
1612         return raw_atomic64_add_negative(i, v    
1613 #else                                            
1614         return raw_atomic_add_negative(i, v);    
1615 #endif                                           
1616 }                                                
1617                                                  
1618 /**                                              
1619  * raw_atomic_long_add_negative_acquire() - a    
1620  * @i: long value to add                         
1621  * @v: pointer to atomic_long_t                  
1622  *                                               
1623  * Atomically updates @v to (@v + @i) with ac    
1624  *                                               
1625  * Safe to use in noinstr code; prefer atomic    
1626  *                                               
1627  * Return: @true if the resulting value of @v    
1628  */                                              
1629 static __always_inline bool                      
1630 raw_atomic_long_add_negative_acquire(long i,     
1631 {                                                
1632 #ifdef CONFIG_64BIT                              
1633         return raw_atomic64_add_negative_acqu    
1634 #else                                            
1635         return raw_atomic_add_negative_acquir    
1636 #endif                                           
1637 }                                                
1638                                                  
1639 /**                                              
1640  * raw_atomic_long_add_negative_release() - a    
1641  * @i: long value to add                         
1642  * @v: pointer to atomic_long_t                  
1643  *                                               
1644  * Atomically updates @v to (@v + @i) with re    
1645  *                                               
1646  * Safe to use in noinstr code; prefer atomic    
1647  *                                               
1648  * Return: @true if the resulting value of @v    
1649  */                                              
1650 static __always_inline bool                      
1651 raw_atomic_long_add_negative_release(long i,     
1652 {                                                
1653 #ifdef CONFIG_64BIT                              
1654         return raw_atomic64_add_negative_rele    
1655 #else                                            
1656         return raw_atomic_add_negative_releas    
1657 #endif                                           
1658 }                                                
1659                                                  
1660 /**                                              
1661  * raw_atomic_long_add_negative_relaxed() - a    
1662  * @i: long value to add                         
1663  * @v: pointer to atomic_long_t                  
1664  *                                               
1665  * Atomically updates @v to (@v + @i) with re    
1666  *                                               
1667  * Safe to use in noinstr code; prefer atomic    
1668  *                                               
1669  * Return: @true if the resulting value of @v    
1670  */                                              
1671 static __always_inline bool                      
1672 raw_atomic_long_add_negative_relaxed(long i,     
1673 {                                                
1674 #ifdef CONFIG_64BIT                              
1675         return raw_atomic64_add_negative_rela    
1676 #else                                            
1677         return raw_atomic_add_negative_relaxe    
1678 #endif                                           
1679 }                                                
1680                                                  
1681 /**                                              
1682  * raw_atomic_long_fetch_add_unless() - atomi    
1683  * @v: pointer to atomic_long_t                  
1684  * @a: long value to add                         
1685  * @u: long value to compare with                
1686  *                                               
1687  * If (@v != @u), atomically updates @v to (@    
1688  * Otherwise, @v is not modified and relaxed     
1689  *                                               
1690  * Safe to use in noinstr code; prefer atomic    
1691  *                                               
1692  * Return: The original value of @v.             
1693  */                                              
1694 static __always_inline long                      
1695 raw_atomic_long_fetch_add_unless(atomic_long_    
1696 {                                                
1697 #ifdef CONFIG_64BIT                              
1698         return raw_atomic64_fetch_add_unless(    
1699 #else                                            
1700         return raw_atomic_fetch_add_unless(v,    
1701 #endif                                           
1702 }                                                
1703                                                  
1704 /**                                              
1705  * raw_atomic_long_add_unless() - atomic add     
1706  * @v: pointer to atomic_long_t                  
1707  * @a: long value to add                         
1708  * @u: long value to compare with                
1709  *                                               
1710  * If (@v != @u), atomically updates @v to (@    
1711  * Otherwise, @v is not modified and relaxed     
1712  *                                               
1713  * Safe to use in noinstr code; prefer atomic    
1714  *                                               
1715  * Return: @true if @v was updated, @false ot    
1716  */                                              
1717 static __always_inline bool                      
1718 raw_atomic_long_add_unless(atomic_long_t *v,     
1719 {                                                
1720 #ifdef CONFIG_64BIT                              
1721         return raw_atomic64_add_unless(v, a,     
1722 #else                                            
1723         return raw_atomic_add_unless(v, a, u)    
1724 #endif                                           
1725 }                                                
1726                                                  
1727 /**                                              
1728  * raw_atomic_long_inc_not_zero() - atomic in    
1729  * @v: pointer to atomic_long_t                  
1730  *                                               
1731  * If (@v != 0), atomically updates @v to (@v    
1732  * Otherwise, @v is not modified and relaxed     
1733  *                                               
1734  * Safe to use in noinstr code; prefer atomic    
1735  *                                               
1736  * Return: @true if @v was updated, @false ot    
1737  */                                              
1738 static __always_inline bool                      
1739 raw_atomic_long_inc_not_zero(atomic_long_t *v    
1740 {                                                
1741 #ifdef CONFIG_64BIT                              
1742         return raw_atomic64_inc_not_zero(v);     
1743 #else                                            
1744         return raw_atomic_inc_not_zero(v);       
1745 #endif                                           
1746 }                                                
1747                                                  
1748 /**                                              
1749  * raw_atomic_long_inc_unless_negative() - at    
1750  * @v: pointer to atomic_long_t                  
1751  *                                               
1752  * If (@v >= 0), atomically updates @v to (@v    
1753  * Otherwise, @v is not modified and relaxed     
1754  *                                               
1755  * Safe to use in noinstr code; prefer atomic    
1756  *                                               
1757  * Return: @true if @v was updated, @false ot    
1758  */                                              
1759 static __always_inline bool                      
1760 raw_atomic_long_inc_unless_negative(atomic_lo    
1761 {                                                
1762 #ifdef CONFIG_64BIT                              
1763         return raw_atomic64_inc_unless_negati    
1764 #else                                            
1765         return raw_atomic_inc_unless_negative    
1766 #endif                                           
1767 }                                                
1768                                                  
1769 /**                                              
1770  * raw_atomic_long_dec_unless_positive() - at    
1771  * @v: pointer to atomic_long_t                  
1772  *                                               
1773  * If (@v <= 0), atomically updates @v to (@v    
1774  * Otherwise, @v is not modified and relaxed     
1775  *                                               
1776  * Safe to use in noinstr code; prefer atomic    
1777  *                                               
1778  * Return: @true if @v was updated, @false ot    
1779  */                                              
1780 static __always_inline bool                      
1781 raw_atomic_long_dec_unless_positive(atomic_lo    
1782 {                                                
1783 #ifdef CONFIG_64BIT                              
1784         return raw_atomic64_dec_unless_positi    
1785 #else                                            
1786         return raw_atomic_dec_unless_positive    
1787 #endif                                           
1788 }                                                
1789                                                  
1790 /**                                              
1791  * raw_atomic_long_dec_if_positive() - atomic    
1792  * @v: pointer to atomic_long_t                  
1793  *                                               
1794  * If (@v > 0), atomically updates @v to (@v     
1795  * Otherwise, @v is not modified and relaxed     
1796  *                                               
1797  * Safe to use in noinstr code; prefer atomic    
1798  *                                               
1799  * Return: The old value of (@v - 1), regardl    
1800  */                                              
1801 static __always_inline long                      
1802 raw_atomic_long_dec_if_positive(atomic_long_t    
1803 {                                                
1804 #ifdef CONFIG_64BIT                              
1805         return raw_atomic64_dec_if_positive(v    
1806 #else                                            
1807         return raw_atomic_dec_if_positive(v);    
1808 #endif                                           
1809 }                                                
1810                                                  
1811 #endif /* _LINUX_ATOMIC_LONG_H */                
1812 // eadf183c3600b8b92b91839dd3be6bcc560c752d      
1813                                                  

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php