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.
