return v.counter;
}
-
/**
* atomic_set - set atomic variable
* @v: pointer of type atomic_t
: "m" (*(volatile int *)&v->counter) );
}
+/**
+ * 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.
+ */
+static inline int atomic_inc_and_test(atomic_t *v)
+{
+ unsigned char c;
+
+ asm volatile (
+ "lock; incl %0; sete %1"
+ : "=m" (*(volatile int *)&v->counter), "=qm" (c)
+ : "m" (*(volatile int *)&v->counter) : "memory" );
+ return c != 0;
+}
+
/**
* atomic_dec - decrement atomic variable
* @v: pointer of type atomic_t
return c != 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.
- */
-static inline int atomic_inc_and_test(atomic_t *v)
-{
- unsigned char c;
-
- asm volatile (
- "lock; incl %0; sete %1"
- : "=m" (*(volatile int *)&v->counter), "=qm" (c)
- : "m" (*(volatile int *)&v->counter) : "memory" );
- return c != 0;
-}
-
/**
* atomic_add_negative - add and test if negative
* @v: pointer of type atomic_t