[PATCH v7 08/39] mbuf: use C11 alignas
David Marchand
david.marchand at redhat.com
Tue Mar 5 21:00:38 CET 2024
On Tue, Mar 5, 2024 at 6:37 PM Tyler Retzlaff
<roretzla at linux.microsoft.com> wrote:
> > > diff --git a/lib/mbuf/rte_mbuf_core.h b/lib/mbuf/rte_mbuf_core.h
> > > index 5688683..917a811 100644
> > > --- a/lib/mbuf/rte_mbuf_core.h
> > > +++ b/lib/mbuf/rte_mbuf_core.h
> > > @@ -463,7 +463,7 @@ enum {
> > > /**
> > > * The generic rte_mbuf, containing a packet mbuf.
> > > */
> > > -struct rte_mbuf {
> > > +struct __rte_cache_aligned rte_mbuf {
> > > RTE_MARKER cacheline0;
> > >
> > > void *buf_addr; /**< Virtual address of segment buffer. */
> > > @@ -476,7 +476,7 @@ struct rte_mbuf {
> > > * same mbuf cacheline0 layout for 32-bit and 64-bit. This makes
> > > * working on vector drivers easier.
> > > */
> > > - rte_iova_t buf_iova __rte_aligned(sizeof(rte_iova_t));
> > > + alignas(sizeof(rte_iova_t)) rte_iova_t buf_iova;
> > > #else
> > > /**
> > > * Next segment of scattered packet.
> > > @@ -662,7 +662,7 @@ struct rte_mbuf {
> > > uint16_t timesync;
> > >
> > > uint32_t dynfield1[9]; /**< Reserved for dynamic fields. */
> > > -} __rte_cache_aligned;
> > > +};
> >
> > I probably missed the discussion, but why is cacheline1 not handled in
> > this patch?
> > I was expecting a:
> > - RTE_MARKER cacheline1 __rte_cache_min_aligned;
> > + alignas(RTE_CACHE_LINE_MIN_SIZE) RTE_MARKER cacheline1;
>
> I should have replaced it I just missed it. Could I get you to fix it up?
> We have 2 options.
>
> 1. You can leave it as is, eventually the other series I have dealing
> with the markers I will probably remove the cacheline1 marker anyway.
>
> 2. You could adjust it as you've identified above, just move alignas
> before the field type and name.
I like consistency, let's go with option 2.
I'll adjust as I mentionned, no need for a v8.
I already tested it in my builds.
Thanks.
--
David Marchand
More information about the dev
mailing list