[dpdk-dev] [PATCH v2 02/14] ring: create common structure for prod and cons metadata
    Olivier Matz 
    olivier.matz at 6wind.com
       
    Fri Mar 24 17:41:34 CET 2017
    
    
  
Hi Bruce,
On Fri, 24 Mar 2017 14:55:36 +0000, Bruce Richardson <bruce.richardson at intel.com> 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
    
    
More information about the dev
mailing list