> From: Bruce Richardson [mailto:bruce.richard...@intel.com]
> Sent: Tuesday, 5 November 2024 12.03
> 
> On Tue, Nov 05, 2024 at 11:49:52AM +0100, David Marchand wrote:
> > On Tue, Nov 5, 2024 at 11:20 AM Morten Brørup
> <m...@smartsharesystems.com> wrote:
> > > > But there is still the question of packed structures with MSVC.
> > > > Tyler proposal seemed to rely on the current __rte_packed
> conventional
> > > > position.
> > > > https://patchwork.dpdk.org/project/dpdk/patch/1713225913-20792-2-
> git-
> > > > send-email-roret...@linux.microsoft.com/
> > > > Note that I am not a fan of this push/pop stuff.
> > > >
> > > > Maybe Andre will find a better solution.
> > >
> > > If we cannot come up with a clean solution that looks like an
> attribute (like GCC), we should accept MSVC's style with push/pop and
> learn to live with it.
> >
> > Well, there is probably not many solutions.
> > OVS does the same as what you suggest.
> >
> >
> > >
> > > Perhaps something like:
> > >
> > > #ifdef RTE_TOOLCHAIN_MSVC
> > > #define __RTE_PACKED(...) \
> > > __pragma(pack(push, 1)) \
> > > __VA_ARGS__ \
> > > __pragma(pack(pop))
> > > #else
> > > #define __RTE_PACKED(...) __VA_ARGS__ __attribute__((__packed__))
> > > #endif
> > >
> > > This would also move the "packed" information to the top of the
> struct, making the code easier to read - i.e. easier to notice that the
> structure is packed when not hidden away at the end of the structure.
> >
> > __RTE_PACKED(struct __rte_aligned(2) rte_ipv4_hdr {
> > ...
> > });
> >
> > Agreed, looks better.
> >
> Not convinced it looks better myself. Rather than packing the
> structure,
> can we instead put aligned(2) on the 32-bit fields inside it?

No, MSVC aligned() can only increase alignment, not decrease it.
I checked it a few minutes ago, getting the same idea. ;-)

Reply via email to