[PATCH 1/4] atomic: add atomic_add_unless()
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Fri Sep 12 05:48:35 PDT 2014
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
---
xf86atomic.h | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/xf86atomic.h b/xf86atomic.h
index db2f619..bc482c9 100644
--- a/xf86atomic.h
+++ b/xf86atomic.h
@@ -96,4 +96,13 @@ typedef struct { uint_t atomic; } atomic_t;
#error libdrm requires atomic operations, please define them for your CPU/compiler.
#endif
+static inline int atomic_add_unless(atomic_t *v, int add, int unless)
+{
+ int c, old;
+ c = atomic_read(v);
+ while (c != unless && (old = atomic_cmpxchg(v, c, c + add)) != c)
+ c = old;
+ return c == unless;
+}
+
#endif
--
2.0.1
More information about the dri-devel
mailing list