From patchwork Thu Jul 18 17:07:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrew Cooper X-Patchwork-Id: 11049375 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A321A746 for ; Thu, 18 Jul 2019 17:09:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 854C31FFD9 for ; Thu, 18 Jul 2019 17:09:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 79ABF28179; Thu, 18 Jul 2019 17:09:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 0E56C1FFD9 for ; Thu, 18 Jul 2019 17:09:12 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ho9sM-0003M3-JT; Thu, 18 Jul 2019 17:07:26 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ho9sL-0003Lk-H2 for xen-devel@lists.xenproject.org; Thu, 18 Jul 2019 17:07:25 +0000 X-Inumbo-ID: 824c802a-a97e-11e9-a465-b30decacb9a9 Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 824c802a-a97e-11e9-a465-b30decacb9a9; Thu, 18 Jul 2019 17:07:23 +0000 (UTC) Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=andrew.cooper3@citrix.com; spf=Pass smtp.mailfrom=Andrew.Cooper3@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa1.hc3370-68.iphmx.com: no sender authenticity information available from domain of andrew.cooper3@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="andrew.cooper3@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa1.hc3370-68.iphmx.com: domain of Andrew.Cooper3@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="Andrew.Cooper3@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ~all" Received-SPF: None (esa1.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: JZ/ZUvVqDuhRT5dLuHmLclbB+x5fZayA7xrXwnwBubXa8vvtWb9el3Epb7n2s9uoJRvEPHRsY2 b1VPkC+amS5Q+JHEAExuUyAWRRNz+diVbGQIHg/vB2pTQNc3FOG6ubL5ZrSn/QFBLrlF3GqLek /jUPwPe0/A2SHqV2CeXkkn6EcnfZ18hU2mddiVf+gEwTntgkUweO5gHLu72A2TOM0PV22GnHvy uHsqtP3tEy5KY8XrZwjBE5TlkCH8b3/Imo9Sjr35XF/t3YL54Ry5UTStvkYYrmDn88j3nzyjWu FwU= X-SBRS: 2.7 X-MesageID: 3175748 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.64,278,1559534400"; d="scan'208";a="3175748" From: Andrew Cooper To: Xen-devel Date: Thu, 18 Jul 2019 18:07:15 +0100 Message-ID: <20190718170716.22544-3-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20190718170716.22544-1-andrew.cooper3@citrix.com> References: <20190718170716.22544-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 2/3] xen/trace: Implement TRACE_?D() in a more efficient fashon X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: George Dunlap , Andrew Cooper , Wei Liu , Jan Beulich , =?utf-8?q?Roger_Pau_Monn=C3=A9?= Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP These can easily be expressed with a variadic macro. No functional change. Signed-off-by: Andrew Cooper Acked-by: George Dunlap --- CC: George Dunlap CC: Jan Beulich CC: Wei Liu CC: Roger Pau Monné Interestingly, this results in fractionally different (but equally correct) code generation in vlapic_update_timer(). Everywhere else is identical. --- xen/include/xen/trace.h | 99 +++++++++++++------------------------------------ 1 file changed, 26 insertions(+), 73 deletions(-) diff --git a/xen/include/xen/trace.h b/xen/include/xen/trace.h index e6a4ef93cc..7f5a904103 100644 --- a/xen/include/xen/trace.h +++ b/xen/include/xen/trace.h @@ -81,80 +81,33 @@ static inline void __trace_hypercall(uint32_t event, unsigned long op, do { \ trace_var(_e, 1, 0, NULL); \ } while ( 0 ) - -#define TRACE_1D(_e,d1) \ - do { \ - if ( unlikely(tb_init_done) ) \ - { \ - u32 _d[1]; \ - _d[0] = d1; \ - __trace_var(_e, 1, sizeof(_d), _d); \ - } \ - } while ( 0 ) - -#define TRACE_2D(_e,d1,d2) \ - do { \ - if ( unlikely(tb_init_done) ) \ - { \ - u32 _d[2]; \ - _d[0] = d1; \ - _d[1] = d2; \ - __trace_var(_e, 1, sizeof(_d), _d); \ - } \ - } while ( 0 ) - -#define TRACE_3D(_e,d1,d2,d3) \ - do { \ - if ( unlikely(tb_init_done) ) \ - { \ - u32 _d[3]; \ - _d[0] = d1; \ - _d[1] = d2; \ - _d[2] = d3; \ - __trace_var(_e, 1, sizeof(_d), _d); \ - } \ - } while ( 0 ) - -#define TRACE_4D(_e,d1,d2,d3,d4) \ - do { \ - if ( unlikely(tb_init_done) ) \ - { \ - u32 _d[4]; \ - _d[0] = d1; \ - _d[1] = d2; \ - _d[2] = d3; \ - _d[3] = d4; \ - __trace_var(_e, 1, sizeof(_d), _d); \ - } \ - } while ( 0 ) - -#define TRACE_5D(_e,d1,d2,d3,d4,d5) \ - do { \ - if ( unlikely(tb_init_done) ) \ - { \ - u32 _d[5]; \ - _d[0] = d1; \ - _d[1] = d2; \ - _d[2] = d3; \ - _d[3] = d4; \ - _d[4] = d5; \ - __trace_var(_e, 1, sizeof(_d), _d); \ - } \ - } while ( 0 ) -#define TRACE_6D(_e,d1,d2,d3,d4,d5,d6) \ - do { \ - if ( unlikely(tb_init_done) ) \ - { \ - u32 _d[6]; \ - _d[0] = d1; \ - _d[1] = d2; \ - _d[2] = d3; \ - _d[3] = d4; \ - _d[4] = d5; \ - _d[5] = d6; \ - __trace_var(_e, 1, sizeof(_d), _d); \ - } \ +/* Common helper for TRACE_{1..6}D() below. */ +#define TRACE_varD(_e, ...) \ + do { \ + if ( unlikely(tb_init_done) ) \ + { \ + uint32_t _d[] = { __VA_ARGS__ }; \ + __trace_var(_e, true, sizeof(_d), _d); \ + } \ } while ( 0 ) +#define TRACE_1D(_e, d1) \ + TRACE_varD(_e, d1) + +#define TRACE_2D(_e, d1, d2) \ + TRACE_varD(_e, d1, d2) + +#define TRACE_3D(_e, d1, d2, d3) \ + TRACE_varD(_e, d1, d2, d3) + +#define TRACE_4D(_e, d1, d2, d3, d4) \ + TRACE_varD(_e, d1, d2, d3, d4) + +#define TRACE_5D(_e, d1, d2, d3, d4, d5) \ + TRACE_varD(_e, d1, d2, d3, d4, d5) + +#define TRACE_6D(_e, d1, d2, d3, d4, d5, d6) \ + TRACE_varD(_e, d1, d2, d3, d4, d5, d6) + #endif /* __XEN_TRACE_H__ */