From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by dpdk.org (Postfix) with ESMTP id A2E385F24 for ; Thu, 3 Jan 2019 10:49:21 +0100 (CET) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E6786EBD; Thu, 3 Jan 2019 01:49:20 -0800 (PST) Received: from phil-VirtualBox.shanghai.arm.com (unknown [10.169.107.181]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 6A6C63F5CF; Thu, 3 Jan 2019 01:49:20 -0800 (PST) From: Phil Yang To: dev@dpdk.org Cc: nd@arm.com Date: Thu, 3 Jan 2019 17:49:06 +0800 Message-Id: <1546508946-12552-1-git-send-email-phil.yang@arm.com> X-Mailer: git-send-email 2.7.4 Subject: [dpdk-dev] [PATCH] packet_ordering: replace sync builtins with atomic builtins X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jan 2019 09:49:21 -0000 '__sync' builtins are deprecated, use '__atomic' builtins instead for packet_ordering. Fixes: 850f373 ("examples/packet_ordering: new sample app") Signed-off-by: Phil Yang Reviewed-by: Gavin Hu Reviewed-by: Ruifeng Wang --- examples/packet_ordering/main.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/examples/packet_ordering/main.c b/examples/packet_ordering/main.c index 149bfdd..61740a9 100644 --- a/examples/packet_ordering/main.c +++ b/examples/packet_ordering/main.c @@ -448,7 +448,16 @@ worker_thread(void *args_ptr) if (unlikely(burst_size == 0)) continue; +#if defined(RTE_TOOLCHAIN_GCC) && (GCC_VERSION < 70100) + /* + * '__sync' builtins are deprecated, but '__atomic' ones + * are sub-optimized in older GCC versions. + */ __sync_fetch_and_add(&app_stats.wkr.dequeue_pkts, burst_size); +#else + __atomic_fetch_add(&app_stats.wkr.dequeue_pkts, burst_size, + __ATOMIC_RELAXED); +#endif /* just do some operation on mbuf */ for (i = 0; i < burst_size;) @@ -457,11 +466,29 @@ worker_thread(void *args_ptr) /* enqueue the modified mbufs to workers_to_tx ring */ ret = rte_ring_enqueue_burst(ring_out, (void *)burst_buffer, burst_size, NULL); +#if defined(RTE_TOOLCHAIN_GCC) && (GCC_VERSION < 70100) + /* + * '__sync' builtins are deprecated, but '__atomic' ones + * are sub-optimized in older GCC versions. + */ __sync_fetch_and_add(&app_stats.wkr.enqueue_pkts, ret); +#else + __atomic_fetch_add(&app_stats.wkr.enqueue_pkts, ret, + __ATOMIC_RELAXED); +#endif if (unlikely(ret < burst_size)) { /* Return the mbufs to their respective pool, dropping packets */ +#if defined(RTE_TOOLCHAIN_GCC) && (GCC_VERSION < 70100) + /* + * '__sync' builtins are deprecated, but '__atomic' ones + * are sub-optimized in older GCC versions. + */ __sync_fetch_and_add(&app_stats.wkr.enqueue_failed_pkts, (int)burst_size - ret); +#else + __atomic_fetch_add(&app_stats.wkr.enqueue_failed_pkts, + (int)burst_size - ret, __ATOMIC_RELAXED); +#endif pktmbuf_free_bulk(&burst_buffer[ret], burst_size - ret); } } -- 2.7.4