[dpdk-dev] [PATCH v2 02/14] ring: create common structure for prod and cons metadata

Bruce Richardson bruce.richardson at intel.com
Fri Mar 24 15:55:36 CET 2017


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.

/Bruce


More information about the dev mailing list