From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id F34D58DA6 for ; Wed, 11 Nov 2015 11:52:08 +0100 (CET) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP; 11 Nov 2015 02:52:08 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,275,1444719600"; d="scan'208";a="682874017" Received: from bricha3-mobl3.ger.corp.intel.com ([10.237.208.62]) by orsmga003.jf.intel.com with SMTP; 11 Nov 2015 02:51:51 -0800 Received: by (sSMTP sendmail emulation); Wed, 11 Nov 2015 10:51:51 +0025 Date: Wed, 11 Nov 2015 10:51:51 +0000 From: Bruce Richardson To: Stephen Hemminger , Thomas Monjalon , "dev@dpdk.org" Message-ID: <20151111105151.GB31936@bricha3-MOBL3> References: <20151104102418.GN3518@6wind.com> <20151104103957.4cabd090@xeon-e3> <20151105150918.GV3518@6wind.com> <20151106171007.GB19512@bricha3-MOBL3> <20151106172227.GC19512@bricha3-MOBL3> <20151109133905.GL4013@6wind.com> <59AF69C657FD0841A61C55336867B5B03598018B@IRSMSX103.ger.corp.intel.com> <20151110160806.GV4013@6wind.com> <59AF69C657FD0841A61C55336867B5B035981593@IRSMSX103.ger.corp.intel.com> <20151110171228.GY4013@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20151110171228.GY4013@6wind.com> Organization: Intel Shannon Ltd. User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [dpdk-dev] [PATCH v3 2/4] ethdev: move error checking macros to header X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Nov 2015 10:52:09 -0000 On Tue, Nov 10, 2015 at 06:12:28PM +0100, Adrien Mazarguil wrote: > On Tue, Nov 10, 2015 at 04:21:10PM +0000, Richardson, Bruce wrote: > > > > > > > -----Original Message----- > > > From: Adrien Mazarguil [mailto:adrien.mazarguil@6wind.com] > > > Sent: Tuesday, November 10, 2015 4:08 PM > > > To: Richardson, Bruce > > > Cc: Stephen Hemminger ; Thomas Monjalon > > > ; dev@dpdk.org > > > Subject: Re: [dpdk-dev] [PATCH v3 2/4] ethdev: move error checking macros > > > to header > > > > > > On Mon, Nov 09, 2015 at 02:02:28PM +0000, Richardson, Bruce wrote: > > > [...] > > > > > From: Adrien Mazarguil [mailto:adrien.mazarguil@6wind.com] > > > [...] > > > > > Untested but I guess modifying that function accordingly would look > > > like: > > > > > > > > > > static inline void > > > > > rte_pmd_debug_trace(const char *func_name, const char *fmt, ...) { > > > > > va_list ap; > > > > > va_start(ap, fmt); > > > > > > > > > > static __thread char buffer[vsnprintf(NULL, 0, fmt, ap)]; > > > > > > > > > > va_end(ap); > > > > > va_start(ap, fmt); > > > > > vsnprintf(buffer, sizeof(buffer), fmt, ap); > > > > > va_end(ap); > > > > > rte_log(RTE_LOG_ERR, RTE_LOGTYPE_PMD, "%s: %s", func_name, > > > > > buffer); } > > > > > > > > > > > > > Looks a much better option. > > > > > > > > From this, though, I assume then that we are only looking to support the > > > -pedantic flag in conjuction with c99 mode or above. Supporting -pedantic > > > with the pre-gcc-5 versions won't allow that to work though, as variably > > > sized arrays only came in with c99, and were gnu extensions before that. > > > > > > Right, -pedantic must follow a given standard such as -std=gnu99 otherwise > > > it's meaningless. > > > > > > However pre-GCC 5 is fine for most if not all features we use, see: > > > > > > https://gcc.gnu.org/c99status.html > > > > > > Mixed code and declarations are supported since GCC 3.0, __VA_ARGS__ in > > > macros since GCC 2.95 and variable length arrays since GCC 0.9, so as long > > > as we use a version that implements -std=gnu99 (or -std=c99 to be really > > > pedantic), it's fine. > > > > > > Besides DPDK already uses C99 extensively, even a few C11 features (such > > > as > > > embedded anonymous struct definitions) currently supported in C99 mode as > > > compiler extensions. I think we can safely ignore compilers that don't > > > support common C99 features. > > > > > > -- > > > Adrien Mazarguil > > > 6WIND > > > > Actually my point was slightly different. > > If we are supporting "-pedantic" in header files because "we don't know what compiler flags users are going to pass when", then we need to support it in C90 mode to do the job properly. If you take gcc 4.8 and compile some code with "-pedantic" as the only C-flag you are going to get lots of errors because it will default to C90 mode with pedantic, which means no varargs macros at all. > > Agreed, exported headers should actually be C90 compliant for these reasons > but C99 would be a start. I didn't know GCC 5 switched to C99 by default > (don't worry, I do not intend to go back to C90). > Actually, it's even better than C99, the default is now C11 (or gnu11 to be pedantic about it :-) ) https://gcc.gnu.org/gcc-5/changes.html Top line item is: "The default mode for C is now -std=gnu11 instead of -std=gnu89" I believe clang is making a similar change to a c11-based default. \o/ /Bruce