From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olivier Matz Subject: Re: [PATCH v2 02/14] ring: create common structure for prod and cons metadata Date: Fri, 24 Mar 2017 17:41:34 +0100 Message-ID: <20170324174134.6aab6dfe@platinum> References: <20170223172407.27664-1-bruce.richardson@intel.com> <20170307113217.11077-1-bruce.richardson@intel.com> <20170307113217.11077-3-bruce.richardson@intel.com> <14749117.M51NuFqa78@xps13> <20170324145536.GA17076@bricha3-MOBL3.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: Thomas Monjalon , dev@dpdk.org, jerin.jacob@caviumnetworks.com To: Bruce Richardson Return-path: Received: from mail-wm0-f45.google.com (mail-wm0-f45.google.com [74.125.82.45]) by dpdk.org (Postfix) with ESMTP id 35F665583 for ; Fri, 24 Mar 2017 17:41:37 +0100 (CET) Received: by mail-wm0-f45.google.com with SMTP id n11so17487619wma.1 for ; Fri, 24 Mar 2017 09:41:37 -0700 (PDT) In-Reply-To: <20170324145536.GA17076@bricha3-MOBL3.ger.corp.intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi Bruce, On Fri, 24 Mar 2017 14:55:36 +0000, Bruce Richardson wrote: > On Wed, Mar 15, 2017 at 03:01:49PM +0100, Thomas Monjalon wrote: > > clang error below: > > > > 2017-03-07 11:32, Bruce Richardson: > > > + union { > > > + uint32_t sp_enqueue; /**< True, if single producer. */ > > > + uint32_t sc_dequeue; /**< True, if single consumer. */ > > > + }; > > > > error: anonymous unions are a C11 extension > > Olivier, Thomas, feedback on suggestions for fixing this? Note: I'm > still waiting to hear back on what compiler settings are needed to > trigger this error. > > Two immediately obvious options: > * replace the union with a single variable called e.g. "single", i.e. > prod.single indicates single producer, and cons.single indicates > single consumer. The downside of this approach is that it makes the > patch a little bigger - as other code needs to be modified to use the > new name - and is not backward compatible for apps which > may reference this public structure memeber. > * just remove the union without renaming anything, leaving two structure > members called sp_enqueue and sc_dequeue. This uses a little more > space in the structure, which is not a big deal since it needs to fill > a cacheline anyway, but it is backward compatible in that no other > code should need to be modified. > > Other options? My preference is for the first one. Given we are breaking > the ring API anyway, I think we might as well use the shorter name and > eliminate the need for the union, or multiple variables. What about adding RTE_STD_C11 like it's done in rte_mbuf? I didn't try, but since mbuf compiles, it should solve this issue in ring. Regards, Olivier