[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