Updated Branches:
  refs/heads/master b4d4f4a9a -> 76aa879db

TS-1385: generic atomic operations API


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

Branch: refs/heads/master
Commit: 76aa879db6d7d418486afba8804893d2133a5811
Parents: b4d4f4a
Author: James Peach <[email protected]>
Authored: Sat Jul 28 08:54:33 2012 -0700
Committer: James Peach <[email protected]>
Committed: Sat Jul 28 08:54:33 2012 -0700

----------------------------------------------------------------------
 CHANGES                               |    2 +
 iocore/cache/P_CacheHosting.h         |    2 +-
 iocore/cluster/ClusterMachine.cc      |    2 +-
 iocore/dns/P_SplitDNSProcessor.h      |    4 +-
 iocore/dns/SplitDNS.cc                |    4 +-
 iocore/eventsystem/P_IOBuffer.h       |    8 ++--
 iocore/net/UnixUDPNet.cc              |    6 +-
 lib/records/RecCore.cc                |   10 ++--
 lib/records/RecProcess.cc             |   36 +++++++-------
 lib/ts/ink_atomic.h                   |   73 +++++++++++++++-------------
 lib/ts/ink_queue.cc                   |   22 ++++----
 lib/ts/test_atomic.cc                 |    6 +-
 plugins/experimental/geoip_acl/lulu.h |   12 ++--
 proxy/AbstractBuffer.h                |    2 +-
 proxy/CacheControl.cc                 |    2 +-
 proxy/IPAllow.cc                      |    2 +-
 proxy/ParentSelection.cc              |    6 +-
 proxy/ParentSelection.h               |    2 +-
 proxy/ProxyConfig.cc                  |    2 +-
 proxy/ProxyConfig.h                   |    4 +-
 proxy/ReverseProxy.cc                 |    2 +-
 proxy/StatSystem.cc                   |   10 ++--
 proxy/StatSystem.h                    |   16 +++---
 proxy/congest/Congestion.cc           |    2 +-
 proxy/http/HttpClientSession.cc       |    2 +-
 proxy/http/HttpServerSession.cc       |    2 +-
 proxy/http/HttpTransact.cc            |    9 +---
 proxy/logging/Log.cc                  |    2 +-
 proxy/logging/LogBuffer.h             |    2 +-
 proxy/logging/LogConfig.cc            |    2 +-
 proxy/logging/LogObject.cc            |    6 +-
 31 files changed, 133 insertions(+), 129 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 052de74..ef89d62 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,7 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 3.3.0
+  *) [TS-1385] generic atomic operations API
+
   *) [TS-1380] SSL wildcard lookup doesn't find the longest match
 
   *) [TS-1315] Fix URL parsing to handle non-HTTP schemes correctly.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/iocore/cache/P_CacheHosting.h
----------------------------------------------------------------------
diff --git a/iocore/cache/P_CacheHosting.h b/iocore/cache/P_CacheHosting.h
index 2f5c7e3..871ba8f 100644
--- a/iocore/cache/P_CacheHosting.h
+++ b/iocore/cache/P_CacheHosting.h
@@ -150,7 +150,7 @@ struct CacheHostTableConfig: public Continuation
     (void) e;
     (void) event;
     CacheHostTable *t = NEW(new CacheHostTable((*ppt)->cache, (*ppt)->type));
-    CacheHostTable *old = (CacheHostTable *) ink_atomic_swap_ptr(&t, ppt);
+    CacheHostTable *old = (CacheHostTable *) ink_atomic_swap(&t, *ppt);
     new_Deleter(old, CACHE_MEM_FREE_TIMEOUT);
     return EVENT_DONE;
   }

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/iocore/cluster/ClusterMachine.cc
----------------------------------------------------------------------
diff --git a/iocore/cluster/ClusterMachine.cc b/iocore/cluster/ClusterMachine.cc
index cd056e2..4607191 100644
--- a/iocore/cluster/ClusterMachine.cc
+++ b/iocore/cluster/ClusterMachine.cc
@@ -154,7 +154,7 @@ ClusterHandler *ClusterMachine::pop_ClusterHandler(int 
no_rr)
 {
   int64_t now = rr_count;
   if (no_rr == 0)
-    ink_atomic_increment64(&rr_count, 1);
+    ink_atomic_increment(&rr_count, 1);
   return this->clusterHandlers[now % this->num_connections];
 }
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/iocore/dns/P_SplitDNSProcessor.h
----------------------------------------------------------------------
diff --git a/iocore/dns/P_SplitDNSProcessor.h b/iocore/dns/P_SplitDNSProcessor.h
index 38ce322..c89869b 100644
--- a/iocore/dns/P_SplitDNSProcessor.h
+++ b/iocore/dns/P_SplitDNSProcessor.h
@@ -108,8 +108,8 @@ public:
   void release(unsigned int id, SplitDNSConfigInfo * data);
 
 public:
-  volatile SplitDNSConfigInfo *infos[MAX_CONFIGS];
-  volatile int ninfos;
+  SplitDNSConfigInfo *infos[MAX_CONFIGS];
+  int ninfos;
 };
 
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/iocore/dns/SplitDNS.cc
----------------------------------------------------------------------
diff --git a/iocore/dns/SplitDNS.cc b/iocore/dns/SplitDNS.cc
index 871e898..00c6943 100644
--- a/iocore/dns/SplitDNS.cc
+++ b/iocore/dns/SplitDNS.cc
@@ -635,8 +635,8 @@ SplitDNSConfigProcessor::set(unsigned int id, 
SplitDNSConfigInfo * info)
   idx = id - 1;
 
   do {
-    old_info = (SplitDNSConfigInfo *) infos[idx];
-  } while (!ink_atomic_cas_ptr((pvvoidp) & infos[idx], old_info, info));
+    old_info = infos[idx];
+  } while (!ink_atomic_cas( &infos[idx], old_info, info));
 
   if (old_info) {
     eventProcessor.schedule_in(NEW(new SplitDNSConfigInfoReleaser(id, 
old_info)), HRTIME_SECONDS(60));

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/iocore/eventsystem/P_IOBuffer.h
----------------------------------------------------------------------
diff --git a/iocore/eventsystem/P_IOBuffer.h b/iocore/eventsystem/P_IOBuffer.h
index f941933..f626308 100644
--- a/iocore/eventsystem/P_IOBuffer.h
+++ b/iocore/eventsystem/P_IOBuffer.h
@@ -150,10 +150,10 @@ iobuffer_mem_inc(const char *_loc, int64_t _size_index)
   Resource *res = res_lookup(_loc);
   ink_debug_assert(strcmp(_loc, res->path) == 0);
 #ifdef DEBUG  
-  int64_t r = ink_atomic_increment64(&res->value, 
index_to_buffer_size(_size_index));
+  int64_t r = ink_atomic_increment(&res->value, 
index_to_buffer_size(_size_index));
   ink_debug_assert(r >= 0);
 #else
-  ink_atomic_increment64(&res->value, index_to_buffer_size(_size_index));
+  ink_atomic_increment(&res->value, index_to_buffer_size(_size_index));
 #endif
 }
 
@@ -170,10 +170,10 @@ iobuffer_mem_dec(const char *_loc, int64_t _size_index)
   Resource *res = res_lookup(_loc);
   ink_debug_assert(strcmp(_loc, res->path) == 0);
 #ifdef DEBUG  
-  int64_t r = ink_atomic_increment64(&res->value, 
-index_to_buffer_size(_size_index));
+  int64_t r = ink_atomic_increment(&res->value, 
-index_to_buffer_size(_size_index));
   ink_debug_assert(r >= index_to_buffer_size(_size_index));
 #else
-  ink_atomic_increment64(&res->value, -index_to_buffer_size(_size_index));
+  ink_atomic_increment(&res->value, -index_to_buffer_size(_size_index));
 #endif
 }
 #endif

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/iocore/net/UnixUDPNet.cc
----------------------------------------------------------------------
diff --git a/iocore/net/UnixUDPNet.cc b/iocore/net/UnixUDPNet.cc
index 423bd6c..c939f0f 100644
--- a/iocore/net/UnixUDPNet.cc
+++ b/iocore/net/UnixUDPNet.cc
@@ -701,7 +701,7 @@ UDPNetProcessor::AllocBandwidth(Continuation * udpConn, 
double desiredMbps)
   }
   udpIntConn->flowRateBps = (desiredMbps * 1024.0 * 1024.0) / 8.0;
   udpIntConn->allocedbps = desiredbps;
-  
ink_atomic_increment64(&G_inkPipeInfo.perPipeInfo[udpIntConn->pipe_class].bwAlloc,
 desiredbps);
+  
ink_atomic_increment(&G_inkPipeInfo.perPipeInfo[udpIntConn->pipe_class].bwAlloc,
 desiredbps);
   Debug("udpnet-admit", "Admitting flow with %lf Mbps (a=%" PRId64 ", lim=%" 
PRId64 ")",
         desiredMbps,
         G_inkPipeInfo.perPipeInfo[udpIntConn->pipe_class].bwAlloc,
@@ -729,7 +729,7 @@ UDPNetProcessor::ChangeBandwidth(Continuation * udpConn, 
double desiredMbps)
   }
   udpIntConn->flowRateBps = (desiredMbps * 1024.0 * 1024.0) / 8.0;
   udpIntConn->allocedbps = desiredbps;
-  
ink_atomic_increment64(&G_inkPipeInfo.perPipeInfo[udpIntConn->pipe_class].bwAlloc,
 desiredbps - oldbps);
+  
ink_atomic_increment(&G_inkPipeInfo.perPipeInfo[udpIntConn->pipe_class].bwAlloc,
 desiredbps - oldbps);
   Debug("udpnet-admit", "Changing flow's b/w from %lf Mbps to %lf Mbps (a=%" 
PRId64 ", lim=%" PRId64 ")",
         (double) oldbps / (1024.0 * 1024.0),
         desiredMbps,
@@ -753,7 +753,7 @@ UDPNetProcessor::FreeBandwidth(Continuation * udpConn)
   if (bps <= 0)
     return;
 
-  
ink_atomic_increment64(&G_inkPipeInfo.perPipeInfo[udpIntConn->pipe_class].bwAlloc,
 -bps);
+  
ink_atomic_increment(&G_inkPipeInfo.perPipeInfo[udpIntConn->pipe_class].bwAlloc,
 -bps);
 
   Debug("udpnet-free", "Releasing %lf Kbps", bps / 1024.0);
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/lib/records/RecCore.cc
----------------------------------------------------------------------
diff --git a/lib/records/RecCore.cc b/lib/records/RecCore.cc
index 83a1574..d9215ed 100644
--- a/lib/records/RecCore.cc
+++ b/lib/records/RecCore.cc
@@ -97,7 +97,7 @@ link_int(const char *name, RecDataT data_type, RecData data, 
void *cookie)
   REC_NOWARN_UNUSED(name);
   REC_NOWARN_UNUSED(data_type);
   RecInt *rec_int = (RecInt *) cookie;
-  ink_atomic_swap64(rec_int, data.rec_int);
+  ink_atomic_swap(rec_int, data.rec_int);
   return REC_ERR_OKAY;
 }
 
@@ -134,7 +134,7 @@ link_counter(const char *name, RecDataT data_type, RecData 
data, void *cookie)
   REC_NOWARN_UNUSED(name);
   REC_NOWARN_UNUSED(data_type);
   RecCounter *rec_counter = (RecCounter *) cookie;
-  ink_atomic_swap64(rec_counter, data.rec_counter);
+  ink_atomic_swap(rec_counter, data.rec_counter);
   return REC_ERR_OKAY;
 }
 
@@ -148,7 +148,7 @@ link_byte(const char *name, RecDataT data_type, RecData 
data, void *cookie)
   RecByte *rec_byte = (RecByte *) cookie;
   RecByte byte = static_cast<RecByte>(data.rec_int);
 
-  ink_atomic_swap8(rec_byte, byte);
+  ink_atomic_swap(rec_byte, byte);
   return REC_ERR_OKAY;
 }
 
@@ -188,7 +188,7 @@ RecCoreInit(RecModeT mode_type, Diags *_diags)
   }
 
   // set our diags
-  ink_atomic_swap_ptr(&g_diags, _diags);
+  ink_atomic_swap(&g_diags, _diags);
 
   g_records_tree = new RecTree(NULL);
   g_num_records = 0;
@@ -251,7 +251,7 @@ RecSetDiags(Diags * _diags)
 {
   // Warning! It's very dangerous to change diags on the fly!  This
   // function only exists so that we can boot-strap TM on startup.
-  ink_atomic_swap_ptr(&g_diags, _diags);
+  ink_atomic_swap(&g_diags, _diags);
   return REC_ERR_OKAY;
 }
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/lib/records/RecProcess.cc
----------------------------------------------------------------------
diff --git a/lib/records/RecProcess.cc b/lib/records/RecProcess.cc
index 985173c..b27fb93 100644
--- a/lib/records/RecProcess.cc
+++ b/lib/records/RecProcess.cc
@@ -122,12 +122,12 @@ raw_stat_sync_to_global(RecRawStatBlock *rsb, int id)
   //rsb, id, delta.sum, total.sum, rsb->global[id]->last_sum, 
rsb->global[id]->sum);
 
   // increment the global values by the delta
-  ink_atomic_increment64(&(rsb->global[id]->sum), delta.sum);
-  ink_atomic_increment64(&(rsb->global[id]->count), delta.count);
+  ink_atomic_increment(&(rsb->global[id]->sum), delta.sum);
+  ink_atomic_increment(&(rsb->global[id]->count), delta.count);
 
   // set the new totals as the last values seen
-  ink_atomic_swap64(&(rsb->global[id]->last_sum), total.sum);
-  ink_atomic_swap64(&(rsb->global[id]->last_count), total.count);
+  ink_atomic_swap(&(rsb->global[id]->last_sum), total.sum);
+  ink_atomic_swap(&(rsb->global[id]->last_count), total.count);
 
   ink_mutex_release(&(rsb->mutex));
 
@@ -146,15 +146,15 @@ raw_stat_clear_sum(RecRawStatBlock *rsb, int id)
   // the globals need to be reset too
   // lock so the setting of the globals and last values are atomic
   ink_mutex_acquire(&(rsb->mutex));
-  ink_atomic_swap64(&(rsb->global[id]->sum), 0);
-  ink_atomic_swap64(&(rsb->global[id]->last_sum), 0);
+  ink_atomic_swap(&(rsb->global[id]->sum), (int64_t)0);
+  ink_atomic_swap(&(rsb->global[id]->last_sum), (int64_t)0);
   ink_mutex_release(&(rsb->mutex));
 
   // reset the local stats
   RecRawStat *tlp;
   for (int i = 0; i < eventProcessor.n_ethreads; i++) {
     tlp = ((RecRawStat *) ((char *) (eventProcessor.all_ethreads[i]) + 
rsb->ethr_stat_offset)) + id;
-    ink_atomic_swap64(&(tlp->sum), 0);
+    ink_atomic_swap(&(tlp->sum), (int64_t)0);
   }
   return REC_ERR_OKAY;
 }
@@ -171,15 +171,15 @@ raw_stat_clear_count(RecRawStatBlock *rsb, int id)
   // the globals need to be reset too
   // lock so the setting of the globals and last values are atomic
   ink_mutex_acquire(&(rsb->mutex));
-  ink_atomic_swap64(&(rsb->global[id]->count), 0);
-  ink_atomic_swap64(&(rsb->global[id]->last_count), 0);
+  ink_atomic_swap(&(rsb->global[id]->count), (int64_t)0);
+  ink_atomic_swap(&(rsb->global[id]->last_count), (int64_t)0);
   ink_mutex_release(&(rsb->mutex));
 
   // reset the local stats
   RecRawStat *tlp;
   for (int i = 0; i < eventProcessor.n_ethreads; i++) {
     tlp = ((RecRawStat *) ((char *) (eventProcessor.all_ethreads[i]) + 
rsb->ethr_stat_offset)) + id;
-    ink_atomic_swap64(&(tlp->count), 0);
+    ink_atomic_swap(&(tlp->count), (int64_t)0);
   }
   return REC_ERR_OKAY;
 }
@@ -606,7 +606,7 @@ int
 RecSetRawStatSum(RecRawStatBlock *rsb, int id, int64_t data)
 {
   raw_stat_clear_sum(rsb, id);
-  ink_atomic_swap64(&(rsb->global[id]->sum), data);
+  ink_atomic_swap(&(rsb->global[id]->sum), data);
   return REC_ERR_OKAY;
 }
 
@@ -614,7 +614,7 @@ int
 RecSetRawStatCount(RecRawStatBlock *rsb, int id, int64_t data)
 {
   raw_stat_clear_count(rsb, id);
-  ink_atomic_swap64(&(rsb->global[id]->count), data);
+  ink_atomic_swap(&(rsb->global[id]->count), data);
   return REC_ERR_OKAY;
 }
 
@@ -658,22 +658,22 @@ RecGetRawStatCount(RecRawStatBlock *rsb, int id, int64_t 
*data)
 int
 RecIncrGlobalRawStat(RecRawStatBlock *rsb, int id, int64_t incr)
 {
-  ink_atomic_increment64(&(rsb->global[id]->sum), incr);
-  ink_atomic_increment64(&(rsb->global[id]->count), 1);
+  ink_atomic_increment(&(rsb->global[id]->sum), incr);
+  ink_atomic_increment(&(rsb->global[id]->count), 1);
   return REC_ERR_OKAY;
 }
 
 int
 RecIncrGlobalRawStatSum(RecRawStatBlock *rsb, int id, int64_t incr)
 {
-  ink_atomic_increment64(&(rsb->global[id]->sum), incr);
+  ink_atomic_increment(&(rsb->global[id]->sum), incr);
   return REC_ERR_OKAY;
 }
 
 int
 RecIncrGlobalRawStatCount(RecRawStatBlock *rsb, int id, int64_t incr)
 {
-  ink_atomic_increment64(&(rsb->global[id]->count), incr);
+  ink_atomic_increment(&(rsb->global[id]->count), incr);
   return REC_ERR_OKAY;
 }
 
@@ -684,14 +684,14 @@ RecIncrGlobalRawStatCount(RecRawStatBlock *rsb, int id, 
int64_t incr)
 int
 RecSetGlobalRawStatSum(RecRawStatBlock *rsb, int id, int64_t data)
 {
-  ink_atomic_swap64(&(rsb->global[id]->sum), data);
+  ink_atomic_swap(&(rsb->global[id]->sum), data);
   return REC_ERR_OKAY;
 }
 
 int
 RecSetGlobalRawStatCount(RecRawStatBlock *rsb, int id, int64_t data)
 {
-  ink_atomic_swap64(&(rsb->global[id]->count), data);
+  ink_atomic_swap(&(rsb->global[id]->count), data);
   return REC_ERR_OKAY;
 }
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/lib/ts/ink_atomic.h
----------------------------------------------------------------------
diff --git a/lib/ts/ink_atomic.h b/lib/ts/ink_atomic.h
index 3e358c6..3d3f8b2 100644
--- a/lib/ts/ink_atomic.h
+++ b/lib/ts/ink_atomic.h
@@ -50,12 +50,14 @@ typedef volatile int8_t vint8;
 typedef volatile int16_t vint16;
 typedef volatile int32_t vint32;
 typedef volatile int64_t vint64;
+typedef volatile long vlong;
 typedef volatile void *vvoidp;
 
 typedef vint8 *pvint8;
 typedef vint16 *pvint16;
 typedef vint32 *pvint32;
 typedef vint64 *pvint64;
+typedef vlong *pvlong;
 typedef vvoidp *pvvoidp;
 
 // Sun/Solaris and the SunPRO compiler
@@ -76,51 +78,58 @@ typedef vuint64_s *pvuint64_s;
 
 #include <atomic.h>
 
-static inline int8_t ink_atomic_swap8(pvint8 mem, int8_t value) { return 
(int8_t)atomic_swap_8((pvuint8)mem, (uint8_t)value); }
-static inline int16_t ink_atomic_swap16(pvint16 mem, int16_t value) { return 
(int16_t)atomic_swap_16((pvuint16)mem, (uint16_t)value); }
-static inline int32_t ink_atomic_swap32(pvint32 mem, int32_t value) { return 
(int32_t)atomic_swap_32((pvuint32)mem, (uint32_t)value); }
-
+static inline int8_t  ink_atomic_swap(pvint8 mem, int8_t value) { return 
(int8_t)atomic_swap_8((pvuint8)mem, (uint8_t)value); }
+static inline int16_t ink_atomic_swap(pvint16 mem, int16_t value) { return 
(int16_t)atomic_swap_16((pvuint16)mem, (uint16_t)value); }
 static inline int32_t ink_atomic_swap(pvint32 mem, int32_t value) { return 
(int32_t)atomic_swap_32((pvuint32)mem, (uint32_t)value); }
-static inline int64_t ink_atomic_swap64(pvint64 mem, int64_t value) { return 
(int64_t)atomic_swap_64((pvuint64_s)mem, (uint64_s)value); }
-static inline void *ink_atomic_swap_ptr(vvoidp mem, void *value) { return 
atomic_swap_ptr((vvoidp)mem, value); }
+static inline int64_t ink_atomic_swap(pvint64 mem, int64_t value) { return 
(int64_t)atomic_swap_64((pvuint64_s)mem, (uint64_s)value); }
+static inline void *  ink_atomic_swap(vvoidp mem, void *value) { return 
atomic_swap_ptr((vvoidp)mem, value); }
 
 static inline int ink_atomic_cas(pvint32 mem, int old, int new_value) { return 
atomic_cas_32((pvuint32)mem, (uint32_t)old, (uint32_t)new_value) == old; }
-static inline int ink_atomic_cas64(pvint64 mem, int64_t old, int64_t 
new_value) { return atomic_cas_64((pvuint64_s)mem, (uint64_s)old, 
(uint64_s)new_value) == old; }
-static inline int ink_atomic_cas_ptr(pvvoidp mem, void* old, void* new_value) 
{ return atomic_cas_ptr((vvoidp)mem, old, new_value) == old; }
-static inline int ink_atomic_increment(pvint32 mem, int value) { return 
((uint32_t)atomic_add_32_nv((pvuint32)mem, (uint32_t)value)) - value; }
-static inline int64_t ink_atomic_increment64(pvint64 mem, int64_t value) { 
return ((uint64_s)atomic_add_64_nv((pvuint64_s)mem, (uint64_s)value)) - value; }
-static inline void *ink_atomic_increment_ptr(pvvoidp mem, intptr_t value) { 
return (void*)(((char*)atomic_add_ptr_nv((vvoidp)mem, (ssize_t)value)) - 
value); }
+static inline int ink_atomic_cas(pvint64 mem, int64_t old, int64_t new_value) 
{ return atomic_cas_64((pvuint64_s)mem, (uint64_s)old, (uint64_s)new_value) == 
old; }
+static inline int ink_atomic_cas(pvvoidp mem, void* old, void* new_value) { 
return atomic_cas_ptr((vvoidp)mem, old, new_value) == old; }
+
+static inline int     ink_atomic_increment(pvint32 mem, int value) { return 
((uint32_t)atomic_add_32_nv((pvuint32)mem, (uint32_t)value)) - value; }
+static inline int64_t ink_atomic_increment(pvint64 mem, int64_t value) { 
return ((uint64_s)atomic_add_64_nv((pvuint64_s)mem, (uint64_s)value)) - value; }
+static inline void *  ink_atomic_increment(pvvoidp mem, intptr_t value) { 
return (void*)(((char*)atomic_add_ptr_nv((vvoidp)mem, (ssize_t)value)) - 
value); }
 
 /* not used for Intel Processors or Sparc which are mostly sequentally 
consistent */
 #define INK_WRITE_MEMORY_BARRIER
 #define INK_MEMORY_BARRIER
 
-#else /* ! defined(__SUNPRO_CC) */
-
 /* GCC compiler >= 4.1 */
-#if defined(__GNUC__) && (__GNUC__ >= 4) && (__GNUC_MINOR__ >= 1)
+#elif defined(__GNUC__) && (__GNUC__ >= 4) && (__GNUC_MINOR__ >= 1)
 
 /* see http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html */
 
-static inline int8_t ink_atomic_swap8(pvint8 mem, int8_t value) { return 
__sync_lock_test_and_set(mem, value); }
-static inline int16_t ink_atomic_swap16(pvint16 mem, int16_t value) { return 
__sync_lock_test_and_set(mem, value); }
-static inline int32_t ink_atomic_swap32(pvint32 mem, int32_t value) { return 
__sync_lock_test_and_set(mem, value); }
-
-static inline int32_t ink_atomic_swap(pvint32 mem, int32_t value) { return 
__sync_lock_test_and_set(mem, value); }
-static inline void *ink_atomic_swap_ptr(vvoidp mem, void *value) { return 
__sync_lock_test_and_set((void**)mem, value); }
+// ink_atomic_swap(ptr, value)
+// Writes @value into @ptr, returning the previous value.
+template <typename T> static inline T
+ink_atomic_swap(volatile T * mem, T value) {
+  return __sync_lock_test_and_set(mem, value);
+}
 
-static inline int ink_atomic_cas(pvint32 mem, int old, int new_value) { return 
__sync_bool_compare_and_swap(mem, old, new_value); }
-static inline int ink_atomic_cas_ptr(pvvoidp mem, void* old, void* new_value) 
{ return __sync_bool_compare_and_swap(mem, old, new_value); }
+// ink_atomic_cas(mem, prev, next)
+// Atomically store the value @next into the pointer @mem, but only if the 
current value at @mem is @prev.
+// Returns true if @next was successfully stored.
+template <typename T> static inline bool
+ink_atomic_cas(volatile T * mem, T prev, T next) {
+  return __sync_bool_compare_and_swap(mem, prev, next);
+}
 
-static inline int ink_atomic_increment(pvint32 mem, int value) { return 
__sync_fetch_and_add(mem, value); }
-static inline void *ink_atomic_increment_ptr(pvvoidp mem, intptr_t value) { 
return __sync_fetch_and_add((void**)mem, (void*)value); }
+// ink_atomic_increment(ptr, count)
+// Increment @ptr by @count, returning the previous value.
+template <typename Type, typename Amount> static inline Type
+ink_atomic_increment(volatile Type * mem, Amount count) {
+  return __sync_fetch_and_add(mem, (Type)count);
+}
 
 // Special hacks for ARM 32-bit
 #if defined(__arm__) && (SIZEOF_VOIDP == 4)
 extern ProcessMutex __global_death;
 
+template<>
 static inline int64_t
-ink_atomic_swap64(pvint64 mem, int64_t value) {
+ink_atomic_swap<int64_t>(pvint64 mem, int64_t value) {
   int64_t old;
   ink_mutex_acquire(&__global_death);
   old = *mem;
@@ -128,8 +137,10 @@ ink_atomic_swap64(pvint64 mem, int64_t value) {
   ink_mutex_release(&__global_death);
   return old;
 }
+
+template<>
 static inline int64_t
-ink_atomic_cas64(pvint64 mem, int64_t old, int64_t new_value) {
+ink_atomic_cas<int64_t>(pvint64 mem, int64_t old, int64_t new_value) {
   int64_t curr;
   ink_mutex_acquire(&__global_death);
   curr = *mem;
@@ -138,8 +149,10 @@ ink_atomic_cas64(pvint64 mem, int64_t old, int64_t 
new_value) {
   if(old == curr) return 1;
   return 0;
 }
+
+template<>
 static inline int64_t
-ink_atomic_increment64(pvint64 mem, int64_t value) {
+ink_atomic_increment<int64_t>(pvint64 mem, int64_t value) {
   int64_t curr;
   ink_mutex_acquire(&__global_death);
   curr = *mem;
@@ -148,10 +161,6 @@ ink_atomic_increment64(pvint64 mem, int64_t value) {
   return curr + value;
 }
 
-#else /* Intel 64-bit operations */
-static inline int64_t ink_atomic_swap64(pvint64 mem, int64_t value) { return 
__sync_lock_test_and_set(mem, value); }
-static inline int64_t ink_atomic_cas64(pvint64 mem, int64_t old, int64_t 
new_value) { return __sync_bool_compare_and_swap(mem, old, new_value); }
-static inline int64_t ink_atomic_increment64(pvint64 mem, int64_t value) { 
return __sync_fetch_and_add(mem, value); }
 #endif
 
 /* not used for Intel Processors which have sequential(esque) consistency */
@@ -162,6 +171,4 @@ static inline int64_t ink_atomic_increment64(pvint64 mem, 
int64_t value) { retur
 #error Need a compiler / libc that supports atomic operations, e.g. gcc v4.1.2 
or later
 #endif 
 
-#endif /* SunPRO CC */
-
 #endif                          /* _ink_atomic_h_ */

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/lib/ts/ink_queue.cc
----------------------------------------------------------------------
diff --git a/lib/ts/ink_queue.cc b/lib/ts/ink_queue.cc
index e9cc992..73435e0 100644
--- a/lib/ts/ink_queue.cc
+++ b/lib/ts/ink_queue.cc
@@ -84,7 +84,7 @@ static ink_freelist_list *freelists = NULL;
 inkcoreapi volatile int64_t freelist_allocated_mem = 0;
 
 #define fl_memadd(_x_) \
-   ink_atomic_increment64(&freelist_allocated_mem, (int64_t) (_x_));
+   ink_atomic_increment(&freelist_allocated_mem, (int64_t) (_x_));
 
 
 void
@@ -172,7 +172,7 @@ ink_freelist_new(InkFreeList * f)
       SET_FREELIST_POINTER_VERSION(item, newp, 0);
 
       ink_atomic_increment((int *) &f->allocated, f->chunk_size);
-      ink_atomic_increment64(&fastalloc_mem_total, (int64_t) f->chunk_size * 
f->type_size);
+      ink_atomic_increment(&fastalloc_mem_total, (int64_t) f->chunk_size * 
f->type_size);
 
       /* free each of the new elements */
       for (i = 0; i < f->chunk_size; i++) {
@@ -193,12 +193,12 @@ ink_freelist_new(InkFreeList * f)
 
       }
       ink_atomic_increment((int *) &f->count, f->chunk_size);
-      ink_atomic_increment64(&fastalloc_mem_in_use, (int64_t) f->chunk_size * 
f->type_size);
+      ink_atomic_increment(&fastalloc_mem_in_use, (int64_t) f->chunk_size * 
f->type_size);
 
     } else {
       SET_FREELIST_POINTER_VERSION(next, 
*ADDRESS_OF_NEXT(TO_PTR(FREELIST_POINTER(item)), f->offset),
                                    FREELIST_VERSION(item) + 1);
-      result = ink_atomic_cas64((int64_t *) & f->head.data, item.data, 
next.data);
+      result = ink_atomic_cas((int64_t *) & f->head.data, item.data, 
next.data);
 
 #ifdef SANITY
       if (result) {
@@ -217,7 +217,7 @@ ink_freelist_new(InkFreeList * f)
   
ink_assert(!((uintptr_t)TO_PTR(FREELIST_POINTER(item))&(((uintptr_t)f->alignment)-1)));
 
   ink_atomic_increment((int *) &f->count, 1);
-  ink_atomic_increment64(&fastalloc_mem_in_use, (int64_t) f->type_size);
+  ink_atomic_increment(&fastalloc_mem_in_use, (int64_t) f->type_size);
 
   return TO_PTR(FREELIST_POINTER(item));
 #else // ! TS_USE_FREELIST
@@ -267,12 +267,12 @@ ink_freelist_free(InkFreeList * f, void *item)
     *adr_of_next = FREELIST_POINTER(h);
     SET_FREELIST_POINTER_VERSION(item_pair, FROM_PTR(item), 
FREELIST_VERSION(h));
     INK_MEMORY_BARRIER;
-    result = ink_atomic_cas64((int64_t *) & f->head, h.data, item_pair.data);
+    result = ink_atomic_cas((int64_t *) & f->head, h.data, item_pair.data);
   }
   while (result == 0);
 
   ink_atomic_increment((int *) &f->count, -1);
-  ink_atomic_increment64(&fastalloc_mem_in_use, -(int64_t) f->type_size);
+  ink_atomic_increment(&fastalloc_mem_in_use, -(int64_t) f->type_size);
 #else
   if (f->alignment)
     ats_memalign_free(item);
@@ -378,7 +378,7 @@ ink_atomiclist_pop(InkAtomicList * l)
     SET_FREELIST_POINTER_VERSION(next, 
*ADDRESS_OF_NEXT(TO_PTR(FREELIST_POINTER(item)), l->offset),
                                  FREELIST_VERSION(item) + 1);
 #if !defined(INK_USE_MUTEX_FOR_ATOMICLISTS)
-    result = ink_atomic_cas64((int64_t *) & l->head.data, item.data, 
next.data);
+    result = ink_atomic_cas((int64_t *) & l->head.data, item.data, next.data);
 #else
     l->head.data = next.data;
     result = 1;
@@ -410,7 +410,7 @@ ink_atomiclist_popall(InkAtomicList * l)
       return NULL;
     SET_FREELIST_POINTER_VERSION(next, FROM_PTR(NULL), FREELIST_VERSION(item) 
+ 1);
 #if !defined(INK_USE_MUTEX_FOR_ATOMICLISTS)
-    result = ink_atomic_cas64((int64_t *) & l->head.data, item.data, 
next.data);
+    result = ink_atomic_cas((int64_t *) & l->head.data, item.data, next.data);
 #else
     l->head.data = next.data;
     result = 1;
@@ -453,7 +453,7 @@ ink_atomiclist_push(InkAtomicList * l, void *item)
     SET_FREELIST_POINTER_VERSION(item_pair, FROM_PTR(item), 
FREELIST_VERSION(head));
     INK_MEMORY_BARRIER;
 #if !defined(INK_USE_MUTEX_FOR_ATOMICLISTS)
-    result = ink_atomic_cas64((int64_t *) & l->head, head.data, 
item_pair.data);
+    result = ink_atomic_cas((int64_t *) & l->head, head.data, item_pair.data);
 #else
     l->head.data = item_pair.data;
     result = 1;
@@ -487,7 +487,7 @@ ink_atomiclist_remove(InkAtomicList * l, void *item)
     head_p next;
     SET_FREELIST_POINTER_VERSION(next, item_next, FREELIST_VERSION(head) + 1);
 #if !defined(INK_USE_MUTEX_FOR_ATOMICLISTS)
-    result = ink_atomic_cas64((int64_t *) & l->head.data, head.data, 
next.data);
+    result = ink_atomic_cas((int64_t *) & l->head.data, head.data, next.data);
 #else
     l->head.data = next.data;
     result = 1;

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/lib/ts/test_atomic.cc
----------------------------------------------------------------------
diff --git a/lib/ts/test_atomic.cc b/lib/ts/test_atomic.cc
index 26830ef..7a29c88 100644
--- a/lib/ts/test_atomic.cc
+++ b/lib/ts/test_atomic.cc
@@ -159,11 +159,11 @@ main(int argc, const char *argv[])
   printf("changed to: %d,  result=%s\n", m, n ? "true" : "false");
 
   printf("CAS pointer: '%s' == 'hello'  then  'new'\n", m2);
-  n = ink_atomic_cas_ptr((pvvoidp) &m2, (char *) "hello", (char *) "new");
+  n = ink_atomic_cas( &m2,  "hello",  "new");
   printf("changed to: %s, result=%s\n", m2, n ? (char *) "true" : (char *) 
"false");
 
   printf("CAS pointer: '%s' == 'hello'  then  'new2'\n", m2);
-  n = ink_atomic_cas_ptr((pvvoidp)&m2, (char*)m2, (char *) "new2");
+  n = ink_atomic_cas(&m2, m2,  "new2");
   printf("changed to: %s, result=%s\n", m2, n ? "true" : "false");
 
   n = 100;
@@ -173,7 +173,7 @@ main(int argc, const char *argv[])
 
 
   printf("Atomic Fetch-and-Add 2 to pointer to '%s'\n", m2);
-  n2 = (char *)ink_atomic_increment_ptr((pvvoidp)&m2, 2);
+  n2 = (char *)ink_atomic_increment((pvvoidp)&m2, (void *)2);
   printf("changed to: %s,  result=%s\n", m2, n2);
 
   printf("Testing atomic lists\n");

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/plugins/experimental/geoip_acl/lulu.h
----------------------------------------------------------------------
diff --git a/plugins/experimental/geoip_acl/lulu.h 
b/plugins/experimental/geoip_acl/lulu.h
index 967057e..b6ba7bb 100644
--- a/plugins/experimental/geoip_acl/lulu.h
+++ b/plugins/experimental/geoip_acl/lulu.h
@@ -71,14 +71,14 @@ typedef vvoidp *pvvoidp;
 
 /* see http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html */
 static inline int32 ink_atomic_swap(pvint32 mem, int32 value) { return 
__sync_lock_test_and_set(mem, value); }
-static inline int64 ink_atomic_swap64(pvint64 mem, int64 value) { return 
__sync_lock_test_and_set(mem, value); }
-static inline void *ink_atomic_swap_ptr(vvoidp mem, void *value) { return 
__sync_lock_test_and_set((void**)mem, value); }
+static inline int64 ink_atomic_swap(pvint64 mem, int64 value) { return 
__sync_lock_test_and_set(mem, value); }
+static inline void *ink_atomic_swap(vvoidp mem, void *value) { return 
__sync_lock_test_and_set((void**)mem, value); }
 static inline int ink_atomic_cas(pvint32 mem, int old, int new_value) { return 
__sync_bool_compare_and_swap(mem, old, new_value); }
-static inline int64 ink_atomic_cas64(pvint64 mem, int64 old, int64 new_value) 
{ return __sync_bool_compare_and_swap(mem, old, new_value); }
-static inline int ink_atomic_cas_ptr(pvvoidp mem, void* old, void* new_value) 
{ return __sync_bool_compare_and_swap(mem, old, new_value); }
+static inline int64 ink_atomic_cas(pvint64 mem, int64 old, int64 new_value) { 
return __sync_bool_compare_and_swap(mem, old, new_value); }
+static inline int ink_atomic_cas(pvvoidp mem, void* old, void* new_value) { 
return __sync_bool_compare_and_swap(mem, old, new_value); }
 static inline int ink_atomic_increment(pvint32 mem, int value) { return 
__sync_fetch_and_add(mem, value); }
-static inline int64 ink_atomic_increment64(pvint64 mem, int64 value) { return 
__sync_fetch_and_add(mem, value); }
-static inline void *ink_atomic_increment_ptr(pvvoidp mem, intptr_t value) { 
return __sync_fetch_and_add((void**)mem, value); }
+static inline int64 ink_atomic_increment(pvint64 mem, int64 value) { return 
__sync_fetch_and_add(mem, value); }
+static inline void *ink_atomic_increment(pvvoidp mem, intptr_t value) { return 
__sync_fetch_and_add((void**)mem, value); }
 #else
 // TODO: Deal with this case?
 #failure

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/AbstractBuffer.h
----------------------------------------------------------------------
diff --git a/proxy/AbstractBuffer.h b/proxy/AbstractBuffer.h
index fefa6fb..30e5b61 100644
--- a/proxy/AbstractBuffer.h
+++ b/proxy/AbstractBuffer.h
@@ -174,7 +174,7 @@ private:
 inline bool
 AbstractBuffer::switch_state(VolatileState & old_vs, VolatileState & new_vs)
 {
-  if (ink_atomic_cas64((int64_t *) & vs.ival, old_vs.ival, new_vs.ival)) {
+  if (ink_atomic_cas((int64_t *) & vs.ival, old_vs.ival, new_vs.ival)) {
     return true;
   }
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/CacheControl.cc
----------------------------------------------------------------------
diff --git a/proxy/CacheControl.cc b/proxy/CacheControl.cc
index 9e87e76..abbe7c4 100644
--- a/proxy/CacheControl.cc
+++ b/proxy/CacheControl.cc
@@ -175,7 +175,7 @@ reloadCacheControl()
   Debug("cache_control", "cache.config updated, reloading");
   eventProcessor.schedule_in(NEW(new CC_FreerContinuation(CacheControlTable)), 
CACHE_CONTROL_TIMEOUT, ET_CACHE);
   newTable = NEW(new CC_table("proxy.config.cache.control.filename", 
modulePrefix, &http_dest_tags));
-  ink_atomic_swap_ptr(&CacheControlTable, newTable);
+  ink_atomic_swap(&CacheControlTable, newTable);
 }
 
 void

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/IPAllow.cc
----------------------------------------------------------------------
diff --git a/proxy/IPAllow.cc b/proxy/IPAllow.cc
index 85985e7..ab2843b 100644
--- a/proxy/IPAllow.cc
+++ b/proxy/IPAllow.cc
@@ -143,7 +143,7 @@ IpAllow::ReloadInstance() {
   new_table = NEW(new self("proxy.config.cache.ip_allow.filename", "IpAllow", 
"ip_allow"));
   new_table->BuildTable();
 
-  ink_atomic_swap_ptr(_instance, new_table);
+  ink_atomic_swap(&_instance, new_table);
 }
 
 //

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/ParentSelection.cc
----------------------------------------------------------------------
diff --git a/proxy/ParentSelection.cc b/proxy/ParentSelection.cc
index 94bcec1..2fd86b4 100644
--- a/proxy/ParentSelection.cc
+++ b/proxy/ParentSelection.cc
@@ -340,7 +340,7 @@ ParentConfigParams::recordRetrySuccess(ParentResult * 
result)
   ink_assert((int) (result->last_parent) < result->rec->num_parents);
   pRec = result->rec->parents + result->last_parent;
 
-  ink_atomic_swap(&pRec->failedAt, 0);
+  ink_atomic_swap(&pRec->failedAt, (time_t)0);
   int old_count = ink_atomic_swap(&pRec->failCount, 0);
 
   if (old_count > 0) {
@@ -551,12 +551,12 @@ ParentRecord::FindParent(bool first_call, ParentResult * 
result, RD * rdata, Par
     if ((parents[cur_index].failedAt == 0) || (parents[cur_index].failCount < 
config->FailThreshold)) {
       Debug("parent_select", "config->FailThreshold = %d", 
config->FailThreshold);
       Debug("parent_select", "Selecting a down parent due to little failCount"
-            "(faileAt: %u failCount: %d)", parents[cur_index].failedAt, 
parents[cur_index].failCount);
+            "(faileAt: %u failCount: %d)", 
(unsigned)parents[cur_index].failedAt, parents[cur_index].failCount);
       parentUp = true;
     } else {
       if ((result->wrap_around) || ((parents[cur_index].failedAt + 
config->ParentRetryTime) < request_info->xact_start)) {
         Debug("parent_select", "Parent[%d].failedAt = %u, retry = 
%u,xact_start = %" PRId64 " but wrap = %d", cur_index,
-              parents[cur_index].failedAt, config->ParentRetryTime, 
(int64_t)request_info->xact_start, result->wrap_around);
+              (unsigned)parents[cur_index].failedAt, config->ParentRetryTime, 
(int64_t)request_info->xact_start, result->wrap_around);
         // Reuse the parent
         parentUp = true;
         parentRetry = true;

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/ParentSelection.h
----------------------------------------------------------------------
diff --git a/proxy/ParentSelection.h b/proxy/ParentSelection.h
index 427655e..a6f2d2a 100644
--- a/proxy/ParentSelection.h
+++ b/proxy/ParentSelection.h
@@ -159,7 +159,7 @@ struct pRecord
 {
   char hostname[MAXDNAME + 1];
   int port;
-  int32_t failedAt;
+  time_t failedAt;
   int failCount;
   int32_t upAt;
   const char *scheme;           // for which parent matches (if any)

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/ProxyConfig.cc
----------------------------------------------------------------------
diff --git a/proxy/ProxyConfig.cc b/proxy/ProxyConfig.cc
index 2b2dd0a..593b0ae 100644
--- a/proxy/ProxyConfig.cc
+++ b/proxy/ProxyConfig.cc
@@ -149,7 +149,7 @@ ConfigProcessor::set(unsigned int id, ConfigInfo * info)
 
   do {
     old_info = (ConfigInfo *) infos[idx];
-  } while (!ink_atomic_cas_ptr((pvvoidp) & infos[idx], old_info, info));
+  } while (!ink_atomic_cas( & infos[idx], old_info, info));
 
   if (old_info) {
     eventProcessor.schedule_in(NEW(new ConfigInfoReleaser(id, old_info)), 
HRTIME_SECONDS(60));

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/ProxyConfig.h
----------------------------------------------------------------------
diff --git a/proxy/ProxyConfig.h b/proxy/ProxyConfig.h
index 550ccae..f7ad0ab 100644
--- a/proxy/ProxyConfig.h
+++ b/proxy/ProxyConfig.h
@@ -74,8 +74,8 @@ public:
   void release(unsigned int id, ConfigInfo * data);
 
 public:
-  volatile ConfigInfo *infos[MAX_CONFIGS];
-  volatile int ninfos;
+  ConfigInfo *infos[MAX_CONFIGS];
+  int ninfos;
 };
 
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/ReverseProxy.cc
----------------------------------------------------------------------
diff --git a/proxy/ReverseProxy.cc b/proxy/ReverseProxy.cc
index 185f3c5..84ef480 100644
--- a/proxy/ReverseProxy.cc
+++ b/proxy/ReverseProxy.cc
@@ -191,7 +191,7 @@ reloadUrlRewrite()
   if (newTable->is_valid()) {
     eventProcessor.schedule_in(new UR_FreerContinuation(rewrite_table), 
URL_REWRITE_TIMEOUT, ET_TASK);
     Debug("url_rewrite", "remap.config done reloading!");
-    ink_atomic_swap_ptr(&rewrite_table, newTable);
+    ink_atomic_swap(&rewrite_table, newTable);
   } else {
     static const char* msg = "failed to reload remap.config, not replacing!";
     delete newTable;

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/StatSystem.cc
----------------------------------------------------------------------
diff --git a/proxy/StatSystem.cc b/proxy/StatSystem.cc
index e643edc..e53617c 100644
--- a/proxy/StatSystem.cc
+++ b/proxy/StatSystem.cc
@@ -522,7 +522,7 @@ initialize_all_global_stats()
 
   // TODO: HMMMM, wtf does this do? The following is that this 
   // function does:
-  // ink_atomic_swap_ptr(&this->f_update_lock, (void *) func)
+  // ink_atomic_swap(&this->f_update_lock, (void *) func)
   //
   // pmgmt->record_data->registerUpdateLockFunc(tmp_stats_lock_function);
 
@@ -577,7 +577,7 @@ dyn_stats_count_cb(void *data, void *res)
   READ_DYN_STAT((long) data, count, sum);
   NOWARN_UNUSED(sum);
   //*(ink_statval_t *)res = count;
-  ink_atomic_swap64((ink_statval_t *) res, count);
+  ink_atomic_swap((ink_statval_t *) res, count);
   return res;
 }
 
@@ -588,7 +588,7 @@ dyn_stats_sum_cb(void *data, void *res)
   READ_DYN_STAT((long) data, count, sum);
   NOWARN_UNUSED(count);
   //*(ink_statval_t *)res = sum;
-  ink_atomic_swap64((ink_statval_t *) res, sum);
+  ink_atomic_swap((ink_statval_t *) res, sum);
   return res;
 }
 
@@ -702,7 +702,7 @@ http_trans_stats_count_cb(void *data, void *res)
   READ_HTTP_TRANS_STAT((long) data, count, sum);
   NOWARN_UNUSED(sum);
   //*(ink_statval_t *)res = count;
-  ink_atomic_swap64((ink_statval_t *) res, count);
+  ink_atomic_swap((ink_statval_t *) res, count);
   return res;
 }
 
@@ -713,7 +713,7 @@ http_trans_stats_sum_cb(void *data, void *res)
   READ_HTTP_TRANS_STAT((long) data, count, sum);
   NOWARN_UNUSED(count);
   //*(ink_statval_t *)res = sum;
-  ink_atomic_swap64((ink_statval_t *) res, sum);
+  ink_atomic_swap((ink_statval_t *) res, sum);
   return res;
 }
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/StatSystem.h
----------------------------------------------------------------------
diff --git a/proxy/StatSystem.h b/proxy/StatSystem.h
index ccfff96..6d56797 100644
--- a/proxy/StatSystem.h
+++ b/proxy/StatSystem.h
@@ -389,8 +389,8 @@ mutex->thread_holding->global_dyn_stats[X].count ++; \
 mutex->thread_holding->global_dyn_stats[X].sum += (S)
 
 #define ADD_TO_GLOBAL_GLOBAL_DYN_SUM(X,S) \
-ink_atomic_increment64(&global_dyn_stats[X].count,(ink_statval_t)1); \
-ink_atomic_increment64(&global_dyn_stats[X].sum,S)
+ink_atomic_increment(&global_dyn_stats[X].count,(ink_statval_t)1); \
+ink_atomic_increment(&global_dyn_stats[X].sum,S)
 /*
  * global_dyn_stats[X].count ++; \
  * global_dyn_stats[X].sum += (S)
@@ -450,18 +450,18 @@ global_dyn_stats[X].sum = S
 #else
 
 #define ADD_TO_GLOBAL_DYN_COUNT(X,C) \
-ink_atomic_increment64(&global_dyn_stats[X].count,C)
+ink_atomic_increment(&global_dyn_stats[X].count,C)
 
 #define ADD_TO_GLOBAL_DYN_SUM(X,S) \
-ink_atomic_increment64(&global_dyn_stats[X].count,(ink_statval_t)1); \
-ink_atomic_increment64(&global_dyn_stats[X].sum,S)
+ink_atomic_increment(&global_dyn_stats[X].count,(ink_statval_t)1); \
+ink_atomic_increment(&global_dyn_stats[X].sum,S)
 
 #define ADD_TO_GLOBAL_GLOBAL_DYN_SUM(X,S) \
-ink_atomic_increment64(&global_dyn_stats[X].count,(ink_statval_t)1); \
-ink_atomic_increment64(&global_dyn_stats[X].sum,S)
+ink_atomic_increment(&global_dyn_stats[X].count,(ink_statval_t)1); \
+ink_atomic_increment(&global_dyn_stats[X].sum,S)
 
 #define ADD_TO_GLOBAL_DYN_FSUM(X,S) \
-ink_atomic_increment64(&global_dyn_stats[X].count,(ink_statval_t)1); \
+ink_atomic_increment(&global_dyn_stats[X].count,(ink_statval_t)1); \
 (*(double *)&global_dyn_stats[X].sum) += S
 
 #define CLEAR_GLOBAL_DYN_STAT(X) \

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/congest/Congestion.cc
----------------------------------------------------------------------
diff --git a/proxy/congest/Congestion.cc b/proxy/congest/Congestion.cc
index 3cb2ed8..9552217 100644
--- a/proxy/congest/Congestion.cc
+++ b/proxy/congest/Congestion.cc
@@ -433,7 +433,7 @@ reloadCongestionControl()
   newTable->Print();
 #endif
   new_Deleter(CongestionMatcher, t);
-  ink_atomic_swap_ptr(&CongestionMatcher, newTable);
+  ink_atomic_swap(&CongestionMatcher, newTable);
   if (congestionControlEnabled) {
     revalidateCongestionDB();
   }

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/http/HttpClientSession.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpClientSession.cc b/proxy/http/HttpClientSession.cc
index ae6652a..7ca304c 100644
--- a/proxy/http/HttpClientSession.cc
+++ b/proxy/http/HttpClientSession.cc
@@ -195,7 +195,7 @@ HttpClientSession::new_connection(NetVConnection * new_vc, 
bool backdoor)
   this->backdoor_connect = backdoor;
 
   // Unique client session identifier.
-  con_id = ink_atomic_increment64((int64_t *) (&next_cs_id), 1);
+  con_id = ink_atomic_increment((int64_t *) (&next_cs_id), 1);
 
   HTTP_INCREMENT_DYN_STAT(http_current_client_connections_stat);
   conn_decrease = true;

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/http/HttpServerSession.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpServerSession.cc b/proxy/http/HttpServerSession.cc
index 5ff532e..7898c09 100644
--- a/proxy/http/HttpServerSession.cc
+++ b/proxy/http/HttpServerSession.cc
@@ -67,7 +67,7 @@ HttpServerSession::new_connection(NetVConnection *new_vc)
   mutex = new_vc->mutex;
 
   // Unique client session identifier.
-  con_id = ink_atomic_increment64((int64_t *) (&next_ss_id), 1);
+  con_id = ink_atomic_increment((int64_t *) (&next_ss_id), 1);
 
   magic = HTTP_SS_MAGIC_ALIVE;
   HTTP_SUM_GLOBAL_DYN_STAT(http_current_server_connections_stat, 1); // Update 
the true global stat

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/http/HttpTransact.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index 4d34b01..1d524c9 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -8345,13 +8345,8 @@ ink_cluster_time(void)
   old = global_time;
 
   while (local_time > global_time) {
-    if (sizeof(ink_time_t) == 4) {
-      if (ink_atomic_cas((int32_t *) & global_time, *((int32_t *) & old), 
*((int32_t *) & local_time)))
-        break;
-    } else if (sizeof(ink_time_t) == 8) {
-      if (ink_atomic_cas64((int64_t *) & global_time, *((int64_t *) & old), 
*((int64_t *) & local_time)))
-        break;
-    }
+    if (ink_atomic_cas(&global_time, old, local_time))
+      break;
     old = global_time;
   }
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/logging/Log.cc
----------------------------------------------------------------------
diff --git a/proxy/logging/Log.cc b/proxy/logging/Log.cc
index 9b06b63..14f734a 100644
--- a/proxy/logging/Log.cc
+++ b/proxy/logging/Log.cc
@@ -124,7 +124,7 @@ Log::change_configuration()
 
   // Swap in the new config object
   //
-  ink_atomic_swap_ptr((void *) &Log::config, new_config);
+  ink_atomic_swap(&Log::config, new_config);
 
   // Force new buffers for inactive objects
   //

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/logging/LogBuffer.h
----------------------------------------------------------------------
diff --git a/proxy/logging/LogBuffer.h b/proxy/logging/LogBuffer.h
index 279e69c..42b1aa6 100644
--- a/proxy/logging/LogBuffer.h
+++ b/proxy/logging/LogBuffer.h
@@ -158,7 +158,7 @@ public:
   int switch_state(LB_State & old_state, LB_State & new_state)
   {
     INK_WRITE_MEMORY_BARRIER;
-    return (ink_atomic_cas64((int64_t *) & m_state.ival, old_state.ival, 
new_state.ival));
+    return (ink_atomic_cas( & m_state.ival, old_state.ival, new_state.ival));
   };
 
   LB_ResultCode checkout_write(size_t * write_offset, size_t write_size);

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/logging/LogConfig.cc
----------------------------------------------------------------------
diff --git a/proxy/logging/LogConfig.cc b/proxy/logging/LogConfig.cc
index 94160c4..5e2168b 100644
--- a/proxy/logging/LogConfig.cc
+++ b/proxy/logging/LogConfig.cc
@@ -760,7 +760,7 @@ LogConfig::init(LogConfig * prev_config)
         new_elog = 0;
       }
     }
-    ink_atomic_swap_ptr((void *) &Log::error_log, new_elog);
+    ink_atomic_swap(&Log::error_log, new_elog);
     if (old_elog) {
       old_elog->force_new_buffer();
       Log::add_to_inactive(old_elog);

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/76aa879d/proxy/logging/LogObject.cc
----------------------------------------------------------------------
diff --git a/proxy/logging/LogObject.cc b/proxy/logging/LogObject.cc
index 2e21f7b..e2e6aec 100644
--- a/proxy/logging/LogObject.cc
+++ b/proxy/logging/LogObject.cc
@@ -418,7 +418,7 @@ LogObject::_checkout_write(size_t * write_offset, size_t 
bytes_needed) {
       INK_QUEUE_LD64(h, m_log_buffer);
       head_p new_h;
       SET_FREELIST_POINTER_VERSION(new_h, FREELIST_POINTER(h), 
FREELIST_VERSION(h) + 1);
-      result = ink_atomic_cas64((int64_t*)&m_log_buffer.data, h.data, 
new_h.data);
+      result = ink_atomic_cas((int64_t*)&m_log_buffer.data, h.data, 
new_h.data);
     } while (!result);
     buffer = (LogBuffer*)FREELIST_POINTER(h);
     result_code = buffer->checkout_write(write_offset, bytes_needed);
@@ -443,7 +443,7 @@ LogObject::_checkout_write(size_t * write_offset, size_t 
bytes_needed) {
         INK_QUEUE_LD64(old_h, m_log_buffer);
         head_p tmp_h;
         SET_FREELIST_POINTER_VERSION(tmp_h, new_buffer, 0);
-        result = ink_atomic_cas64((int64_t*)&m_log_buffer.data, old_h.data, 
tmp_h.data);
+        result = ink_atomic_cas((int64_t*)&m_log_buffer.data, old_h.data, 
tmp_h.data);
       } while (!result);
       if (FREELIST_POINTER(old_h) == FREELIST_POINTER(h))
         ink_atomic_increment(&buffer->m_references, FREELIST_VERSION(old_h) - 
1);
@@ -483,7 +483,7 @@ LogObject::_checkout_write(size_t * write_offset, size_t 
bytes_needed) {
           break;
         head_p tmp_h;
         SET_FREELIST_POINTER_VERSION(tmp_h, FREELIST_POINTER(h), 
FREELIST_VERSION(old_h) - 1);
-        result = ink_atomic_cas64((int64_t*)&m_log_buffer.data, old_h.data, 
tmp_h.data);
+        result = ink_atomic_cas((int64_t*)&m_log_buffer.data, old_h.data, 
tmp_h.data);
       } while (!result);
       if (FREELIST_POINTER(old_h) != FREELIST_POINTER(h))
         ink_atomic_increment(&buffer->m_references, -1);

Reply via email to