DPDK usage discussions
 help / color / mirror / Atom feed
From: Antonio Di Bacco <a.dibacco.ks@gmail.com>
To: Pavel Vazharov <freakpv@gmail.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>,
	Ferruh Yigit <ferruh.yigit@amd.com>,
	users@dpdk.org
Subject: Re: Anonymous structs in DPDK
Date: Wed, 14 Dec 2022 09:16:13 +0100	[thread overview]
Message-ID: <CAO8pfFk_Y9bQ0oPKx6a1LH9QuO8PDGkhth_or23fcaOp2dXRMw@mail.gmail.com> (raw)
In-Reply-To: <CAK9EM1_0H=44+vH4Uxw4YPcBLUzjdr5E0VOtGZvgzLx7wvjH_w@mail.gmail.com>

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@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@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@networkplumber.org> wrote:
>> >
>> > On Tue, 13 Dec 2022 13:55:10 +0000
>> > Ferruh Yigit <ferruh.yigit@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.

      reply	other threads:[~2022-12-14  8:16 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-13 12:51 Antonio Di Bacco
2022-12-13 13:55 ` Ferruh Yigit
2022-12-14  0:34   ` Stephen Hemminger
2022-12-14  8:03     ` Antonio Di Bacco
2022-12-14  8:12       ` Pavel Vazharov
2022-12-14  8:16         ` Antonio Di Bacco [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAO8pfFk_Y9bQ0oPKx6a1LH9QuO8PDGkhth_or23fcaOp2dXRMw@mail.gmail.com \
    --to=a.dibacco.ks@gmail.com \
    --cc=ferruh.yigit@amd.com \
    --cc=freakpv@gmail.com \
    --cc=stephen@networkplumber.org \
    --cc=users@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).