Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

atomic: cleanup asm-generic atomic*.h inclusion

After changing all consumers of atomics to include <linux/atomic.h>, we
ran into some compile time errors due to this dependency chain:

linux/atomic.h
-> asm/atomic.h
-> asm-generic/atomic-long.h

where atomic-long.h could use funcs defined later in linux/atomic.h
without a prototype. This patches moves the code that includes
asm-generic/atomic*.h to linux/atomic.h.

Archs that need <asm-generic/atomic64.h> need to select
CONFIG_GENERIC_ATOMIC64 from now on (some of them used to include it
unconditionally).

Compile tested on i386 and x86_64 with allnoconfig.

Signed-off-by: Arun Sharma <asharma@fb.com>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: David Miller <davem@davemloft.net>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Arun Sharma and committed by
Linus Torvalds
7847777a f24219b4

+5 -50
-1
arch/alpha/include/asm/atomic.h
··· 255 255 #define smp_mb__before_atomic_inc() smp_mb() 256 256 #define smp_mb__after_atomic_inc() smp_mb() 257 257 258 - #include <asm-generic/atomic-long.h> 259 258 #endif /* _ALPHA_ATOMIC_H */
+1 -4
arch/arm/include/asm/atomic.h
··· 459 459 #define atomic64_dec_and_test(v) (atomic64_dec_return((v)) == 0) 460 460 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1LL, 0LL) 461 461 462 - #else /* !CONFIG_GENERIC_ATOMIC64 */ 463 - #include <asm-generic/atomic64.h> 464 - #endif 465 - #include <asm-generic/atomic-long.h> 462 + #endif /* !CONFIG_GENERIC_ATOMIC64 */ 466 463 #endif 467 464 #endif
-2
arch/avr32/include/asm/atomic.h
··· 188 188 #define smp_mb__before_atomic_inc() barrier() 189 189 #define smp_mb__after_atomic_inc() barrier() 190 190 191 - #include <asm-generic/atomic-long.h> 192 - 193 191 #endif /* __ASM_AVR32_ATOMIC_H */
-3
arch/blackfin/include/asm/atomic.h
··· 111 111 #define atomic_sub_and_test(i,v) (atomic_sub_return((i), (v)) == 0) 112 112 #define atomic_dec_and_test(v) (atomic_sub_return(1, (v)) == 0) 113 113 114 - #include <asm-generic/atomic-long.h> 115 114 116 115 #endif 117 - 118 - #include <asm-generic/atomic64.h> 119 116 120 117 #endif
-1
arch/cris/include/asm/atomic.h
··· 157 157 #define smp_mb__before_atomic_inc() barrier() 158 158 #define smp_mb__after_atomic_inc() barrier() 159 159 160 - #include <asm-generic/atomic-long.h> 161 160 #endif
-1
arch/frv/include/asm/atomic.h
··· 257 257 } 258 258 259 259 260 - #include <asm-generic/atomic-long.h> 261 260 #endif /* _ASM_ATOMIC_H */
-1
arch/h8300/include/asm/atomic.h
··· 145 145 #define smp_mb__before_atomic_inc() barrier() 146 146 #define smp_mb__after_atomic_inc() barrier() 147 147 148 - #include <asm-generic/atomic-long.h> 149 148 #endif /* __ARCH_H8300_ATOMIC __ */
-1
arch/ia64/include/asm/atomic.h
··· 215 215 #define smp_mb__before_atomic_inc() barrier() 216 216 #define smp_mb__after_atomic_inc() barrier() 217 217 218 - #include <asm-generic/atomic-long.h> 219 218 #endif /* _ASM_IA64_ATOMIC_H */
-1
arch/m32r/include/asm/atomic.h
··· 313 313 #define smp_mb__before_atomic_inc() barrier() 314 314 #define smp_mb__after_atomic_inc() barrier() 315 315 316 - #include <asm-generic/atomic-long.h> 317 316 #endif /* _ASM_M32R_ATOMIC_H */
-2
arch/m68k/include/asm/atomic.h
··· 205 205 #define smp_mb__before_atomic_inc() barrier() 206 206 #define smp_mb__after_atomic_inc() barrier() 207 207 208 - #include <asm-generic/atomic-long.h> 209 - #include <asm-generic/atomic64.h> 210 208 #endif /* __ARCH_M68K_ATOMIC __ */
-6
arch/mips/include/asm/atomic.h
··· 765 765 */ 766 766 #define atomic64_add_negative(i, v) (atomic64_add_return(i, (v)) < 0) 767 767 768 - #else /* !CONFIG_64BIT */ 769 - 770 - #include <asm-generic/atomic64.h> 771 - 772 768 #endif /* CONFIG_64BIT */ 773 769 774 770 /* ··· 775 779 #define smp_mb__after_atomic_dec() smp_llsc_mb() 776 780 #define smp_mb__before_atomic_inc() smp_mb__before_llsc() 777 781 #define smp_mb__after_atomic_inc() smp_llsc_mb() 778 - 779 - #include <asm-generic/atomic-long.h> 780 782 781 783 #endif /* _ASM_ATOMIC_H */
-2
arch/mn10300/include/asm/atomic.h
··· 343 343 #define smp_mb__before_atomic_inc() barrier() 344 344 #define smp_mb__after_atomic_inc() barrier() 345 345 346 - #include <asm-generic/atomic-long.h> 347 - 348 346 #endif /* __KERNEL__ */ 349 347 #endif /* CONFIG_SMP */ 350 348 #endif /* _ASM_ATOMIC_H */
-5
arch/parisc/include/asm/atomic.h
··· 335 335 336 336 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) 337 337 338 - #else /* CONFIG_64BIT */ 339 - 340 - #include <asm-generic/atomic64.h> 341 - 342 338 #endif /* !CONFIG_64BIT */ 343 339 344 - #include <asm-generic/atomic-long.h> 345 340 346 341 #endif /* _ASM_PARISC_ATOMIC_H_ */
-4
arch/powerpc/include/asm/atomic.h
··· 469 469 470 470 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) 471 471 472 - #else /* __powerpc64__ */ 473 - #include <asm-generic/atomic64.h> 474 - 475 472 #endif /* __powerpc64__ */ 476 473 477 - #include <asm-generic/atomic-long.h> 478 474 #endif /* __KERNEL__ */ 479 475 #endif /* _ASM_POWERPC_ATOMIC_H_ */
-2
arch/s390/include/asm/atomic.h
··· 331 331 #define smp_mb__before_atomic_inc() smp_mb() 332 332 #define smp_mb__after_atomic_inc() smp_mb() 333 333 334 - #include <asm-generic/atomic-long.h> 335 - 336 334 #endif /* __ARCH_S390_ATOMIC__ */
-3
arch/sh/include/asm/atomic.h
··· 67 67 #define smp_mb__before_atomic_inc() smp_mb() 68 68 #define smp_mb__after_atomic_inc() smp_mb() 69 69 70 - #include <asm-generic/atomic-long.h> 71 - #include <asm-generic/atomic64.h> 72 - 73 70 #endif /* __ASM_SH_ATOMIC_H */
-1
arch/sparc/include/asm/atomic_32.h
··· 160 160 161 161 #endif /* !(__KERNEL__) */ 162 162 163 - #include <asm-generic/atomic-long.h> 164 163 #endif /* !(__ARCH_SPARC_ATOMIC__) */
-1
arch/sparc/include/asm/atomic_64.h
··· 113 113 #define smp_mb__before_atomic_inc() barrier() 114 114 #define smp_mb__after_atomic_inc() barrier() 115 115 116 - #include <asm-generic/atomic-long.h> 117 116 #endif /* !(__ARCH_SPARC64_ATOMIC__) */
-5
arch/tile/include/asm/atomic.h
··· 177 177 #include <asm/atomic_64.h> 178 178 #endif 179 179 180 - /* Provide the appropriate atomic_long_t definitions. */ 181 - #ifndef __ASSEMBLY__ 182 - #include <asm-generic/atomic-long.h> 183 - #endif 184 - 185 180 #endif /* _ASM_TILE_ATOMIC_H */
-1
arch/x86/include/asm/atomic.h
··· 318 318 # include "atomic64_64.h" 319 319 #endif 320 320 321 - #include <asm-generic/atomic-long.h> 322 321 #endif /* _ASM_X86_ATOMIC_H */
-1
arch/xtensa/include/asm/atomic.h
··· 291 291 #define smp_mb__before_atomic_inc() barrier() 292 292 #define smp_mb__after_atomic_inc() barrier() 293 293 294 - #include <asm-generic/atomic-long.h> 295 294 #endif /* __KERNEL__ */ 296 295 297 296 #endif /* _XTENSA_ATOMIC_H */
-2
include/asm-generic/atomic.h
··· 154 154 #define smp_mb__before_atomic_inc() barrier() 155 155 #define smp_mb__after_atomic_inc() barrier() 156 156 157 - #include <asm-generic/atomic-long.h> 158 - 159 157 #endif /* __KERNEL__ */ 160 158 #endif /* __ASM_GENERIC_ATOMIC_H */
+4
include/linux/atomic.h
··· 96 96 } 97 97 #endif /* #ifndef CONFIG_ARCH_HAS_ATOMIC_OR */ 98 98 99 + #include <asm-generic/atomic-long.h> 100 + #ifdef CONFIG_GENERIC_ATOMIC64 101 + #include <asm-generic/atomic64.h> 102 + #endif 99 103 #endif /* _LINUX_ATOMIC_H */