From d5f9b19196db1caba105c3cc0d1d44fef2d33ad7 Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Fri, 8 Mar 2019 18:47:59 +0100 Subject: [PATCH] MEDIUM: freq_ctr: Use the new _HA_ATOMIC_* macros. Use the new _HA_ATOMIC_* macros and add barriers where needed. --- include/proto/freq_ctr.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/include/proto/freq_ctr.h b/include/proto/freq_ctr.h index 277bfda5a..953e21b10 100644 --- a/include/proto/freq_ctr.h +++ b/include/proto/freq_ctr.h @@ -42,7 +42,8 @@ static inline unsigned int update_freq_ctr(struct freq_ctr *ctr, unsigned int in /* remove the bit, used for the lock */ curr_sec = ctr->curr_sec & 0x7fffffff; } - while (!HA_ATOMIC_CAS(&ctr->curr_sec, &curr_sec, curr_sec | 0x80000000)); + while (!_HA_ATOMIC_CAS(&ctr->curr_sec, &curr_sec, curr_sec | 0x80000000)); + __ha_barrier_atomic_store(); elapsed = (now.tv_sec & 0x7fffffff)- curr_sec; if (unlikely(elapsed > 0)) { @@ -59,7 +60,7 @@ static inline unsigned int update_freq_ctr(struct freq_ctr *ctr, unsigned int in tot_inc = ctr->curr_ctr; /* release the lock and update the time in case of rotate. */ - HA_ATOMIC_STORE(&ctr->curr_sec, curr_sec & 0x7fffffff); + _HA_ATOMIC_STORE(&ctr->curr_sec, curr_sec & 0x7fffffff); return tot_inc; /* Note: later we may want to propagate the update to other counters */ } @@ -79,7 +80,8 @@ static inline unsigned int update_freq_ctr_period(struct freq_ctr_period *ctr, /* remove the bit, used for the lock */ curr_tick = (ctr->curr_tick >> 1) << 1; } - while (!HA_ATOMIC_CAS(&ctr->curr_tick, &curr_tick, curr_tick | 0x1)); + while (!_HA_ATOMIC_CAS(&ctr->curr_tick, &curr_tick, curr_tick | 0x1)); + __ha_barrier_atomic_store(); if (now_ms - curr_tick >= period) { ctr->prev_ctr = ctr->curr_ctr; @@ -95,7 +97,7 @@ static inline unsigned int update_freq_ctr_period(struct freq_ctr_period *ctr, ctr->curr_ctr += inc; tot_inc = ctr->curr_ctr; /* release the lock and update the time in case of rotate. */ - HA_ATOMIC_STORE(&ctr->curr_tick, (curr_tick >> 1) << 1); + _HA_ATOMIC_STORE(&ctr->curr_tick, (curr_tick >> 1) << 1); return tot_inc; /* Note: later we may want to propagate the update to other counters */ }