From patchwork Thu Jun 13 04:48:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gurucharan Shetty X-Patchwork-Id: 1115259 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=ovn.org Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 45PpTd0TF4z9sNm for ; Fri, 14 Jun 2019 02:04:36 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id A93C5E99; Thu, 13 Jun 2019 16:04:33 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 4FF00E82 for ; Thu, 13 Jun 2019 16:04:32 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id CF08F775 for ; Thu, 13 Jun 2019 16:04:31 +0000 (UTC) Received: by mail-pf1-f193.google.com with SMTP id 19so11289824pfa.4 for ; Thu, 13 Jun 2019 09:04:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=Q7rOQQJLIsWpG+vlPhPvJWyoUVQcBidrVYCxWNCk+HI=; b=IHIIGQsvy1kf0Lalvs9LHT2z/qkYqZlHUTVL1120YWk0O9ebf80472I3XVGAa/IE3Q pQj1JQapr/+sk2Z68nmIvSiWJMqP2gwjJhSWeZGipTxzn2Tsb+XgL8tSo9PRRSrWA+4e mYT8aDfJGLTjmwHEcpw8ossAhxnTNA6vPm7fzaL5MUc1KUrFQB85OH+fz2kwghJiET8t qguPRhknYyGADa9v0n25LyGyU6vgKRyGNVGH2vErE7Qop/R7Txd8PcDA92K7IVbVVzyM OcFHPUh59hFQROXKfd2+Bx85JAEROkuM5xxcYD5u7INsVgTv785630fbDEpu3KExITZ0 re1g== X-Gm-Message-State: APjAAAV3BFGtfFeLlqhwbiiCFpMcCqprfyEsvbttJOQ8MSESLZ7i1TAc i2KcILJjjImw9N1BbhUJE4PO26Fd X-Google-Smtp-Source: APXvYqyTSizmGnrE6SZVl1TJCzjLhF2WZuWCJXhV8Sb9JLWmsj9PW2STjAp031SNV9L6zq2brtdNLw== X-Received: by 2002:a17:90a:f498:: with SMTP id bx24mr6452385pjb.91.1560441871207; Thu, 13 Jun 2019 09:04:31 -0700 (PDT) Received: from kube-master.eng.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id s64sm90952pfb.160.2019.06.13.09.04.30 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 13 Jun 2019 09:04:30 -0700 (PDT) From: Gurucharan Shetty To: dev@openvswitch.org Date: Wed, 12 Jun 2019 21:48:59 -0700 Message-Id: <1560401339-31537-1-git-send-email-guru@ovn.org> X-Mailer: git-send-email 1.9.1 X-Spam-Status: No, score=-0.4 required=5.0 tests=BAYES_00, DATE_IN_PAST_06_12, FREEMAIL_FROM,RCVD_IN_DNSWL_NONE autolearn=no version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH] ovs-atomic-c++.h: Fix for 64 bit atomics. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Commit e981a45a6cae4 (ovs-atomic: Add 64 bit apis.) added a few 64 bit apis (e.g: atomic_count_inc64). For C++, this invokes std::atomic_fetch_*_explicit() functions in lib/ovs-atomic-c++.h. The function overloading for 64 bit function fails without specifiying something like: std::atomic_fetch_*_explicit(). But it looks tricky to do this with macros. This patch tries to fix the compilation failures by calling atomic functions on the variables itself. Signed-off-by: Gurucharan Shetty Acked-by: Ben Pfaff --- lib/ovs-atomic-c++.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/ovs-atomic-c++.h b/lib/ovs-atomic-c++.h index 949e4ff..d47b8dd 100644 --- a/lib/ovs-atomic-c++.h +++ b/lib/ovs-atomic-c++.h @@ -47,15 +47,15 @@ using std::atomic_compare_exchange_weak_explicit; atomic_and_explicit(RMW, ARG, ORIG, memory_order_seq_cst) #define atomic_add_explicit(RMW, ARG, ORIG, ORDER) \ - (*(ORIG) = std::atomic_fetch_add_explicit(RMW, ARG, ORDER), (void) 0) + (*(ORIG) = (*(RMW)).fetch_add(ARG, ORDER), (void) 0) #define atomic_sub_explicit(RMW, ARG, ORIG, ORDER) \ - (*(ORIG) = std::atomic_fetch_sub_explicit(RMW, ARG, ORDER), (void) 0) + (*(ORIG) = (*(RMW)).fetch_sub(ARG, ORDER), (void) 0) #define atomic_or_explicit(RMW, ARG, ORIG, ORDER) \ - (*(ORIG) = std::atomic_fetch_or_explicit(RMW, ARG, ORDER), (void) 0) + (*(ORIG) = (*(RMW)).fetch_or(ARG, ORDER), (void) 0) #define atomic_xor_explicit(RMW, ARG, ORIG, ORDER) \ - (*(ORIG) = std::atomic_fetch_xor_explicit(RMW, ARG, ORDER), (void) 0) + (*(ORIG) = (*(RMW)).fetch_xor(ARG, ORDER), (void) 0) #define atomic_and_explicit(RMW, ARG, ORIG, ORDER) \ - (*(ORIG) = std::atomic_fetch_and_explicit(RMW, ARG, ORDER), (void) 0) + (*(ORIG) = (*(RMW)).fetch_and(ARG, ORDER), (void) 0) using std::atomic_flag; using std::atomic_flag_test_and_set_explicit;