Anonymous structs in DPDK
Antonio Di Bacco
a.dibacco.ks at gmail.com
Wed Dec 14 09:16:13 CET 2022
Right, I'm trying to avoid PIMPL because there are a few cases where I
need to put a DPDK data type in my classes. Anyway, I will propose a
patch adding a tag name to rte_spinlock_t that shouldn't be harmful.
Regards,
Antonio.
On Wed, Dec 14, 2022 at 9:12 AM Pavel Vazharov <freakpv at gmail.com> wrote:
>
> Hi,
>
> In my opinion, in that case you'll need to use things like PIMPL to hide the implementation in the .cpp files. (I guess you were just trying to avoid the need of PIMPL by other means?)
> And if you need to pass some DPDK related types to the outside world you'll need to wrap them as well. You may need type erasure here and there. It depends on the final goal.
>
> Regards,
> Pavel.
>
> On Wed, Dec 14, 2022 at 10:03 AM Antonio Di Bacco <a.dibacco.ks at gmail.com> wrote:
>>
>> Hi,
>>
>> I need to completely isolate my application from DPDK, I'm building a
>> C++ library that encapsulates the DPDK in order that the application
>> doesn't need to include (either directly or indirectly) any DPDK
>> header file. In the library cpp files I can include rte_spinlock.h but
>> not in the .hpp files.
>>
>> Best regards.
>>
>> On Wed, Dec 14, 2022 at 1:34 AM Stephen Hemminger
>> <stephen at networkplumber.org> wrote:
>> >
>> > On Tue, 13 Dec 2022 13:55:10 +0000
>> > Ferruh Yigit <ferruh.yigit at amd.com> wrote:
>> >
>> > > On 12/13/2022 12:51 PM, Antonio Di Bacco wrote:
>> > > > I noticed that DPDK include files have a number of anonymous/unnamed struct:
>> > > >
>> > > > For example:
>> > > >
>> > > > /**
>> > > > * The rte_spinlock_t type.
>> > > > */
>> > > > typedef struct {
>> > > > volatile int locked; /**< lock status 0 = unlocked, 1 = locked */
>> > > > } rte_spinlock_t;
>> > > >
>> > > > This choice doesn't allow to use forward declaration. I need forward
>> > > > declaration because I'm using a rte_spinlock_t pointer in a C++ class
>> > > > and I don't want to include rte_spinlock.h to prevent my application
>> > > > to include it as well.
>> > > >
>> > > > Is there any reason to use unnamed structures?
>> > > >
>> > >
>> > > Hi Antonio Di,
>> > >
>> > > I don't think there is a specific reason to not use named struct, I
>> > > assume that is only because there was no need to have it.
>> > >
>> > > So if you need, you can send a simple patch to convert anonymous struct
>> > > to named struct, although I am not clear why you can't include
>> > > 'rte_spinlock.h' in the file you declare your class.
>> > >
>> > > Cheers,
>> > > ferruh
>> >
>> > Why not include rte_spinlock.h? Spinlocks are meant to be embedded
>> > in the object using it. Using spinlocks by reference adds more space
>> > and causes a cache miss.
More information about the users
mailing list