X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fasm-sparc64%2Fatomic.h;h=5374f5b72f4f2c1ed0aea6b5d887a2b5b1f9de12;hb=9213980e6a70d8473e0ffd4b39ab5b6caaba9ff5;hp=7ccccc304ba654a068b44d5a897faa07c78bace4;hpb=c449269f45c2cdf53af08c8d0af37472f66539d9;p=linux-2.6.git diff --git a/include/asm-sparc64/atomic.h b/include/asm-sparc64/atomic.h index 7ccccc304..5374f5b72 100644 --- a/include/asm-sparc64/atomic.h +++ b/include/asm-sparc64/atomic.h @@ -40,6 +40,16 @@ extern int __atomic64_sub(__s64, atomic64_t *); #define atomic_inc_return(v) __atomic_add(1, v) #define atomic64_inc_return(v) __atomic64_add(1, v) +/* + * atomic_inc_and_test - increment and test + * @v: pointer of type atomic_t + * + * Atomically increments @v by 1 + * and returns true if the result is zero, or false for all + * other cases. + */ +#define atomic_inc_and_test(v) (atomic_inc_return(v) == 0) + #define atomic_sub_and_test(i, v) (__atomic_sub(i, v) == 0) #define atomic64_sub_and_test(i, v) (__atomic64_sub(i, v) == 0) @@ -52,6 +62,9 @@ extern int __atomic64_sub(__s64, atomic64_t *); #define atomic_dec(v) ((void)__atomic_sub(1, v)) #define atomic64_dec(v) ((void)__atomic64_sub(1, v)) +#define atomic_add_negative(i, v) (__atomic_add(i, v) < 0) +#define atomic64_add_negative(i, v) (__atomic64_add(i, v) < 0) + /* Atomic operations are already serializing */ #define smp_mb__before_atomic_dec() barrier() #define smp_mb__after_atomic_dec() barrier()