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.
