From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by dpdk.org (Postfix) with ESMTP id F198A4F98 for ; Wed, 17 Oct 2018 11:26:57 +0200 (CEST) Received: by mail-wr1-f66.google.com with SMTP id g15-v6so28797132wru.9 for ; Wed, 17 Oct 2018 02:26:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=ERVeW6n7Gw5mKU0+fmwKhvS26a7vMkGnP2mrgEalvQg=; b=bFkKeQX4ZcjkO6LQDIEJkBVQIV7dnywUUU4jXBmUqCufeoShBKU7FBBDZYqiha9SZh nbDqh9huuo4Y7LBWzYK1QljAzZOvdLjQSjzI/US/LpAKQuQ9cgaXfPbIy8M1M7r5gX/4 Q4RHHb24aTdHlEQPHMmo1ebRDIh3Y1ylqiKL2vZE3HDrx1Ylp3M+Dh4XWcEwwp3fiko6 iAxSTmlnjojKoW6QzXT9W+QCdW9u/XnV1THKzBZaRGEYPa6uzduSSWxzlGN1YR6G+LiT tpCziwruSIEwL15/UHSFHTB69vYtk/0ZhzEKZzsFHk1n8J0gGk7U7KtsSEALLxGboM1Y t52w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=ERVeW6n7Gw5mKU0+fmwKhvS26a7vMkGnP2mrgEalvQg=; b=QNBET89bwd4Cnh2jDmhZfpWLDEkaueagvUFvdAfpmQi6OngHgLcJFg6GIWLhovLhz2 56kOjNKQO9cCEiHhV3XbTis3JNCCClibTTYYtcXRIt1188RGZGis4s8/Kh45Azu/x0Eb BiUXMT4Eql/MMgnNskO6UIQwKO3gk3f9hz0QTTftaoHPFISyiJoMEmbOH5hWyhye2es1 BVw9WIvECaPU4F/f43eyAQiNLv2MrvYE52CxEV7Bh0fFgdR7LlwoghhbUA4nokZxT6xm dBddcLfiJu9z8J7DKU2zC7FDE+H4zIxA2Lk75C5rgGOq5hyoqfBSveZRhMAJbgGQD/O0 kGgQ== X-Gm-Message-State: ABuFfoiB/gOplqJ4fl0a74KyK/BF3Tzj1q1QjDtzkMjHz2kACcb9R4gR higuYudlLNs1j8heh/87/MIEPQ== X-Google-Smtp-Source: ACcGV623KQkfwtag4RtLCxJNa7vVuBKQw9iZmgdnHryU7uiTwHUYEGU3IXk4sBH+uZT95BsSkch20A== X-Received: by 2002:adf:e403:: with SMTP id g3-v6mr21529606wrm.96.1539768417156; Wed, 17 Oct 2018 02:26:57 -0700 (PDT) Received: from bidouze.vm.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id x8-v6sm38129414wrd.54.2018.10.17.02.26.55 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 17 Oct 2018 02:26:56 -0700 (PDT) Date: Wed, 17 Oct 2018 11:26:31 +0200 From: =?iso-8859-1?Q?Ga=EBtan?= Rivet To: Ferruh Yigit Cc: Stephen Hemminger , Adrien Mazarguil , thomas@monjalon.net, dev@dpdk.org Message-ID: <20181017092631.bklpipmyfeatvotv@bidouze.vm.6wind.com> References: <20181011175940.6800-1-stephen@networkplumber.org> <98717fc3-c3dd-cc4f-e5ff-b5310e47d6ee@intel.com> <696e6f90-3d0c-acd4-d72d-bbebe1ff6f54@intel.com> <20181012124357.GR18937@6wind.com> <20181012075424.79383f32@xeon-e3> <2ed85850-f6f3-1f99-375b-85910479a9a2@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <2ed85850-f6f3-1f99-375b-85910479a9a2@intel.com> User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [dpdk-dev] [PATCH] ethdev: add function name to log message 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: Wed, 17 Oct 2018 09:26:58 -0000 Hi Ferruh, On Tue, Oct 16, 2018 at 04:55:43PM +0100, Ferruh Yigit wrote: > On 10/12/2018 3:54 PM, Stephen Hemminger wrote: > > On Fri, 12 Oct 2018 14:43:57 +0200 > > Adrien Mazarguil wrote: > > > >> On Fri, Oct 12, 2018 at 11:45:01AM +0100, Ferruh Yigit wrote: > >>> On 10/12/2018 11:42 AM, Ferruh Yigit wrote: > >>>> On 10/11/2018 6:59 PM, Stephen Hemminger wrote: > >>>>> @@ -161,8 +161,9 @@ extern "C" { > >>>>> > >>>>> extern int rte_eth_dev_logtype; > >>>>> > >>>>> -#define RTE_ETHDEV_LOG(level, ...) \ > >>>>> - rte_log(RTE_LOG_ ## level, rte_eth_dev_logtype, "" __VA_ARGS__) > >>>>> +#define RTE_ETHDEV_LOG(level, fmt, ...) \ > >>>>> + rte_log(RTE_LOG_ ## level, rte_eth_dev_logtype, \ > >>>>> + "%s():" fmt, __func__, ## __VA_ARGS__) > >>>> > >>>> +1 to adding function name, but > >>>> > >>>> failsafe is giving build error [1] with clang because of ## usage [2], that is > >>>> why I add this as ` "" __VA_ARGS__` at first place but you can't do this trick > >>>> if __VA_ARGS__ used after fmt. > >>>> > >>>> I am not aware of a solution for this, __VA_OPT__(,) also didn't worked with clang. > >>> > >>> +cc Adrien & Gaetan, > >>> > >>> I saw Adrien put some "workaround" to this for mlx5 > >> > >> Yes, through RTE_FMT() (rte_common.h). Something like this: > >> > >> #define RTE_ETHDEV_LOG(level, fmt, ...) \ > >> rte_log(RTE_LOG_ ## level, \ > >> rte_eth_dev_logtype, \ > >> "%s():" fmt, \ > >> __func__, \ > >> ## __VA_ARGS__) > >> > >> Can be rewritten like that: > >> > >> #define RTE_ETHDEV_LOG(level, ...) \ > >> rte_log(RTE_LOG_ ## level, \ > >> rte_eth_dev_logtype, \ > >> RTE_FMT("%s():" RTE_FMT_HEAD(__VA_ARGS__,), \ > >> __func__, \ > >> RTE_FMT_TAIL(__VA_ARGS__,))) > >> > >> Although not too pretty and convenient, it does the job. In short: > >> > >> - Remove "fmt" argument from prototype. > >> - Enclose format string and its arguments in RTE_FMT(). > >> - Replace "fmt" with RTE_FMT_HEAD(__VA_ARGS__,). > >> - Replace "## __VA_ARGS__" with RTE_FMT_TAIL(__VA_ARGS__,). > >> - Yes, trailing commas are mandatory in RTE_FMT_(HEAD|TAIL)(). > >> - Note it quietly appends a dummy "%.0s" argument to the format string. > >> > >>>> [1] > >>>> .../build/include/rte_ethdev.h:166:26: error: token pasting of ',' and > >>>> __VA_ARGS__ is a GNU extension [-Werror,-Wgnu-zero-variadic-macro-arguments] > >>>> "%s():" fmt, __func__, ## __VA_ARGS__) > >>>> ^ > >>>> > >>>> [2] > >>>> This seems because of "-pedantic" argument driver uses, and other PMDs using > >>>> "-pedantic", like mlx, will have same error although they are disable by > >>>> default and error not observed in default build. > >>>> > >>> > >> > > > > Since zero varadic macros is a GNU extension, maybe just adding GNU source? > > I think `-pedantic` is preventing using extension whether we have `_GNU_SOURCE` > or not. > > Gaetan, > > Why we have `-pedantic` option enabled for failsafe? Because I wanted to enforce it in failsafe, and core DPDK headers were compatible so it wasn't too much of a hassle. If rte_ethdev.h is meant to lose this compatibility, then pedantic will be disabled upon including it. But I guess if it was kept compatible until now, then it was a deliberate effort? -- Gaëtan Rivet 6WIND