]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
- add atomic_dec_u64
authorMemphis <memphis@machzwo.de>
Wed, 13 May 2015 18:32:00 +0000 (20:32 +0200)
committerJaroslav Kysela <perex@perex.cz>
Thu, 14 May 2015 06:48:29 +0000 (08:48 +0200)
src/atomic.h

index 1c3eb5aebcf2562c0497507e4bf8b963d7eb1775..99fe3af79c26bf21a0abd6e69f670052af17d4c6 100644 (file)
@@ -51,6 +51,21 @@ atomic_add_u64(volatile uint64_t *ptr, uint64_t incr)
 #endif
 }
 
+static inline uint64_t
+atomic_dec_u64(volatile uint64_t *ptr, uint64_t decr)
+{
+#if ENABLE_ATOMIC64
+  return __sync_fetch_and_sub(ptr, decr);
+#else
+  uint64_t ret;
+  pthread_mutex_lock(&atomic_lock);
+  ret = *ptr;
+  *ptr -= decr;
+  pthread_mutex_unlock(&atomic_lock);
+  return ret;
+#endif
+}
+
 static inline uint64_t
 atomic_pre_add_u64(volatile uint64_t *ptr, uint64_t incr)
 {