atomics/treewide: Make conditional inc/dec ops optional
The conditional inc/dec ops differ for atomic_t and atomic64_t: - atomic_inc_unless_positive() is optional for atomic_t, and doesn't exist for atomic64_t. - atomic_dec_unless_negative() is optional for atomic_t, and doesn't exist for atomic64_t. - atomic_dec_if_positive is optional for atomic_t, and is mandatory for atomic64_t. Let's make these consistently optional for both. At the same time, let's clean up the existing fallbacks to use atomic_try_cmpxchg(). The instrumented atomics are updated accordingly. There should be no functional change as a result of this patch. Signed-off-by:Mark Rutland <mark.rutland@arm.com> Reviewed-by:
Will Deacon <will.deacon@arm.com> Acked-by:
Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Boqun Feng <boqun.feng@gmail.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/lkml/20180621121321.4761-18-mark.rutland@arm.com Signed-off-by:
Ingo Molnar <mingo@kernel.org>
Showing
- arch/alpha/include/asm/atomic.h 1 addition, 0 deletionsarch/alpha/include/asm/atomic.h
- arch/arc/include/asm/atomic.h 1 addition, 0 deletionsarch/arc/include/asm/atomic.h
- arch/arm/include/asm/atomic.h 1 addition, 0 deletionsarch/arm/include/asm/atomic.h
- arch/arm64/include/asm/atomic.h 2 additions, 0 deletionsarch/arm64/include/asm/atomic.h
- arch/ia64/include/asm/atomic.h 0 additions, 16 deletionsarch/ia64/include/asm/atomic.h
- arch/parisc/include/asm/atomic.h 0 additions, 23 deletionsarch/parisc/include/asm/atomic.h
- arch/powerpc/include/asm/atomic.h 1 addition, 0 deletionsarch/powerpc/include/asm/atomic.h
- arch/s390/include/asm/atomic.h 0 additions, 17 deletionsarch/s390/include/asm/atomic.h
- arch/sparc/include/asm/atomic_64.h 1 addition, 0 deletionsarch/sparc/include/asm/atomic_64.h
- arch/x86/include/asm/atomic64_32.h 1 addition, 0 deletionsarch/x86/include/asm/atomic64_32.h
- arch/x86/include/asm/atomic64_64.h 0 additions, 18 deletionsarch/x86/include/asm/atomic64_64.h
- include/asm-generic/atomic-instrumented.h 3 additions, 0 deletionsinclude/asm-generic/atomic-instrumented.h
- include/asm-generic/atomic64.h 1 addition, 0 deletionsinclude/asm-generic/atomic64.h
- include/linux/atomic.h 73 additions, 24 deletionsinclude/linux/atomic.h
Loading
Please register or sign in to comment