trafficserver-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From z..@apache.org
Subject [2/5] git commit: TS-1006: Add a new wrapper: ink_atomic_decrement()
Date Sun, 03 Feb 2013 10:38:37 GMT
TS-1006: Add a new wrapper: ink_atomic_decrement()

This is a wrapper of __sync_fetch_and_sub() in GNU env.

I need this wrapper in reclaimable freelist, as ink_atomic_increment()
can't work correctly in some situation by unknown reason.

Signed-off-by: Yunkai Zhang <qiushu.zyk@taobao.com>
Signed-off-by: Zhao Yongming <ming.zym@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/4397abf7
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/4397abf7
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/4397abf7

Branch: refs/heads/master
Commit: 4397abf76c4fbb7babccc9cc11b0456f2a7a1516
Parents: 5d8cc8a
Author: Yunkai Zhang <qiushu.zyk@taobao.com>
Authored: Sat Feb 2 17:08:18 2013 +0800
Committer: Zhao Yongming <ming.zym@gmail.com>
Committed: Sun Feb 3 10:52:58 2013 +0800

----------------------------------------------------------------------
 lib/ts/ink_atomic.h |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/4397abf7/lib/ts/ink_atomic.h
----------------------------------------------------------------------
diff --git a/lib/ts/ink_atomic.h b/lib/ts/ink_atomic.h
index b22cf24..9425eec 100644
--- a/lib/ts/ink_atomic.h
+++ b/lib/ts/ink_atomic.h
@@ -160,6 +160,13 @@ ink_atomic_increment(volatile Type * mem, Amount count) {
   return __sync_fetch_and_add(mem, (Type)count);
 }
 
+// ink_atomic_decrement(ptr, count)
+// Decrement @ptr by @count, returning the previous value.
+template <typename Type, typename Amount> static inline Type
+ink_atomic_decrement(volatile Type * mem, Amount count) {
+  return __sync_fetch_and_sub(mem, (Type)count);
+}
+
 // Special hacks for ARM 32-bit
 #if defined(__arm__) && (SIZEOF_VOIDP == 4)
 extern ProcessMutex __global_death;
@@ -213,6 +220,6 @@ ink_atomic_increment<int64_t>(pvint64 mem, int value) {
 
 #else /* not gcc > v4.1.2 */
 #error Need a compiler / libc that supports atomic operations, e.g. gcc v4.1.2 or later
-#endif 
+#endif
 
 #endif                          /* _ink_atomic_h_ */


Mime
View raw message