patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / include / asm-sparc / atomic.h
index 14b5a8e..fe210f3 100644 (file)
@@ -33,6 +33,18 @@ extern void atomic_set(atomic_t *, int);
 #define atomic_inc_return(v)   (__atomic_add_return(        1, (v)))
 #define atomic_dec_return(v)   (__atomic_add_return(       -1, (v)))
 
+#define atomic_add_negative(a, v)      (atomic_add_return((a), (v)) < 0)
+
+/*
+ * 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_dec_and_test(v) (atomic_dec_return(v) == 0)
 
 /* This is the old 24-bit implementation.  It's still used internally