[v2,2/8] examples/multi_process: use compiler atomics for sync

Message ID 20210823054952.15001-3-joyce.kong@arm.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series use compiler atomic builtins for examples |

Checks

Context Check Description
ci/checkpatch warning coding style issues

Commit Message

Joyce Kong Aug. 23, 2021, 5:49 a.m. UTC
  Convert rte_atomic32_test_and_set usage to compiler atomic
CAS operation for display_stats sync.

Signed-off-by: Joyce Kong <joyce.kong@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
---
 examples/multi_process/client_server_mp/mp_server/main.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
  

Patch

diff --git a/examples/multi_process/client_server_mp/mp_server/main.c b/examples/multi_process/client_server_mp/mp_server/main.c
index 9bcee460fd..b4761ebc7b 100644
--- a/examples/multi_process/client_server_mp/mp_server/main.c
+++ b/examples/multi_process/client_server_mp/mp_server/main.c
@@ -20,7 +20,6 @@ 
 #include <rte_per_lcore.h>
 #include <rte_lcore.h>
 #include <rte_branch_prediction.h>
-#include <rte_atomic.h>
 #include <rte_ring.h>
 #include <rte_log.h>
 #include <rte_debug.h>
@@ -158,10 +157,12 @@  static int
 sleep_lcore(__rte_unused void *dummy)
 {
 	/* Used to pick a display thread - static, so zero-initialised */
-	static rte_atomic32_t display_stats;
+	static uint32_t display_stats;
 
+	uint32_t status = 0;
 	/* Only one core should display stats */
-	if (rte_atomic32_test_and_set(&display_stats)) {
+	if (__atomic_compare_exchange_n(&display_stats, &status, 1, 0,
+			__ATOMIC_RELAXED, __ATOMIC_RELAXED)) {
 		const unsigned sleeptime = 1;
 		printf("Core %u displaying statistics\n", rte_lcore_id());