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.


-- 
David Marchand

Reply via email to