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 <[email protected]> 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 <[email protected]> 
> 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
>> <[email protected]> wrote:
>> >
>> > On Tue, 13 Dec 2022 13:55:10 +0000
>> > Ferruh Yigit <[email protected]> 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.

Reply via email to