All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Van Haaren, Harry" <harry.van.haaren@intel.com>
To: Pavan Nikhilesh Bhagavatula <pbhagavatula@caviumnetworks.com>
Cc: "thomas@monjalon.net" <thomas@monjalon.net>,
	"dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [PATCH] eal: added new `rte_lcore_is_service_lcore` API.
Date: Fri, 15 Sep 2017 14:44:57 +0000	[thread overview]
Message-ID: <E923DB57A917B54B9182A2E928D00FA640C7A175@IRSMSX102.ger.corp.intel.com> (raw)
In-Reply-To: <20170915144154.GA15346@PBHAGAVATULA-LT>



> -----Original Message-----
> From: Pavan Nikhilesh Bhagavatula [mailto:pbhagavatula@caviumnetworks.com]
> Sent: Friday, September 15, 2017 3:42 PM
> To: Van Haaren, Harry <harry.van.haaren@intel.com>
> Cc: thomas@monjalon.net; dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] eal: added new `rte_lcore_is_service_lcore`
> API.
> 
> On Fri, Sep 15, 2017 at 01:57:42PM +0000, Van Haaren, Harry wrote:
> > > From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > > Sent: Friday, September 15, 2017 2:53 PM
> > > To: Pavan Nikhilesh Bhagavatula <pbhagavatula@caviumnetworks.com>; Van
> Haaren,
> > > Harry <harry.van.haaren@intel.com>
> > > Cc: dev@dpdk.org
> > > Subject: Re: [dpdk-dev] [PATCH] eal: added new `rte_lcore_is_service_lcore`
> > > API.
> > >
> > > 28/08/2017 17:09, Pavan Nikhilesh Bhagavatula:
> > > > On Mon, Aug 28, 2017 at 01:49:37PM +0000, Van Haaren, Harry wrote:
> > > > > From: Pavan Nikhilesh Bhagavatula
> [mailto:pbhagavatula@caviumnetworks.com]
> > > > > > On Mon, Aug 28, 2017 at 10:59:51AM +0000, Van Haaren, Harry wrote:
> > > > > > > From: Pavan Nikhilesh [mailto:pbhagavatula@caviumnetworks.com]
> > > > > > > > --- a/lib/librte_eal/common/include/rte_lcore.h
> > > > > > > > +++ b/lib/librte_eal/common/include/rte_lcore.h
> > > > > > > > @@ -180,6 +180,24 @@ rte_lcore_is_enabled(unsigned lcore_id)
> > > > > > > >  }
> > > > > > > >
> > > > > > > >  /**
> > > > > > > > + * Test if an lcore is service lcore.
> > > > > > > > + *
> > > > > > > > + * @param lcore_id
> > > > > > > > + *   The identifier of the lcore, which MUST be between 0 and
> > > > > > > > + *   RTE_MAX_LCORE-1.
> > > > > > > > + * @return
> > > > > > > > + *   True if the given lcore is service; false otherwise.
> > > > > > > > + */
> > > > > > > > +static inline int
> > > > > > > > +rte_lcore_is_service_lcore(unsigned lcore_id)
> > > > > > > > +{
> > > > > > > > +	struct rte_config *cfg = rte_eal_get_configuration();
> > > > > > > > +	if (lcore_id >= RTE_MAX_LCORE)
> > > > > > > > +		return 0;
> > > > > > > > +	return cfg->lcore_role[lcore_id] == ROLE_SERVICE;
> > > > > > > > +}
> > > > > > >
> > > > > > > No header file and Static inline - so this is only to be used
> > > internally in the service
> > > > > > cores library?
> > > > > > > If so, the function should actually be used, instead of only added
> but
> > > not used in the
> > > > > > library itself.
> > > > > > >
> > > > > >
> > > > > > The enum rte_lcore_role_t has ROLE_SERVICE which tells that a
> particular
> > > lcore is
> > > > > > a service lcore as well as an EAL thread some libraries such as
> rte_timer
> > > allow
> > > > > > specific operations only over EAL threads.
> > > > >
> > > > > Understood that role of cores is important, and that rte_timer might
> > > require this information.
> > > > >
> > > > >
> > > > > > The rte_timer lib uses the rte_is_lcore_enabled() call to check if a
> > > lcore is an
> > > > > > EAL thread, Which checks if the lcore role is  ROLE_RTE. But it
> should
> > > also
> > > > > > allow timers to be registered on a service core as processing those
> > > timers can
> > > > > > be done on them.
> > > > >
> > > > > No problem from me here either - although it's the Timers library
> > > maintainer that should check this.
> > > > >
> > > > >
> > > > > > This new function allows such libraries to check if the role is
> > > > > > ROLE_SERVICE and allow those operations.
> > > > >
> > > > > If the timers library requires information about service-cores, it
> should
> > > use a public API to retrieve that information. Having "internal" functions
> > > between libraries is not nice.
> > > > >
> > > > > I think a better design would be to add this function as a public
> function,
> > > (add it to the .map files etc) and then call the public function from the
> > > timers library.
> > > > >
> > > > > Does that sound like a good solution? -Harry
> > > > >
> > > >
> > > > The file rte_lcore.h is in librte_eal/common/include I couldn't find a
> .map
> > > > file for eal/common and also other functions that are present in
> rte_lcore.h
> > > > aren't mapped in eal/linuxapp or eal/bsdapp.
> > > > I think it is fine as the functions are static inline.
> > >
> > > We must avoid adding more inline functions without a good justification.
> > > The inline functions are tolerated for performance reasons only.
> > >
> > > We could also choose to add this function to rte_service.h ?
> >
> > Yes that is an option, and OK with me.
> >
> > @Pavan what do you think of adding it to service.h, implement in .c and add
> to .map?
> >
> 
> The ROLE_SERVICE/ROLE_RTE defines the role of a lcore so it made sense to put
> it in rte_lcore.h as lcore properties are accessed mostly through this header.
> I'm fine with adding it to service.h as suggested by Harry.
> 
> -Pavan

*as suggested by Thomas ;)

Initially I thought it made more sense in lcore.h too, however the application
should only require knowing if core X is a service core if it cares about
services / service-cores, hence I'm fine with rte_service.h too.

-Harry

  reply	other threads:[~2017-09-15 14:45 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-23 15:10 [PATCH] eal: added new `rte_lcore_is_service_lcore` API Pavan Nikhilesh
2017-08-28 10:59 ` Van Haaren, Harry
2017-08-28 11:33   ` Pavan Nikhilesh Bhagavatula
2017-08-28 13:49     ` Van Haaren, Harry
2017-08-28 15:09       ` Pavan Nikhilesh Bhagavatula
2017-08-28 15:24         ` Van Haaren, Harry
2017-08-28 15:43           ` Pavan Nikhilesh Bhagavatula
2017-08-29 13:17             ` Van Haaren, Harry
2017-08-29 13:44               ` Pavan Nikhilesh Bhagavatula
2017-09-15 13:52         ` Thomas Monjalon
2017-09-15 13:57           ` Van Haaren, Harry
2017-09-15 14:41             ` Pavan Nikhilesh Bhagavatula
2017-09-15 14:44               ` Van Haaren, Harry [this message]
2017-09-15 14:59                 ` Pavan Nikhilesh Bhagavatula
2017-09-15 15:51                   ` Thomas Monjalon
2017-09-15 17:37                     ` Pavan Nikhilesh Bhagavatula
2017-09-20 14:53                       ` Van Haaren, Harry
2017-09-20 15:53                         ` Thomas Monjalon
2017-09-20 17:31                           ` Pavan Nikhilesh Bhagavatula
2017-09-21  8:58 ` [PATCH v2] eal: add function to check lcore role Pavan Nikhilesh
2017-09-21  9:41   ` Van Haaren, Harry
2017-09-21 10:03     ` Pavan Nikhilesh Bhagavatula
2017-09-21 10:59   ` [PATCH v3] " Pavan Nikhilesh
2017-10-11 20:14     ` Thomas Monjalon

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=E923DB57A917B54B9182A2E928D00FA640C7A175@IRSMSX102.ger.corp.intel.com \
    --to=harry.van.haaren@intel.com \
    --cc=dev@dpdk.org \
    --cc=pbhagavatula@caviumnetworks.com \
    --cc=thomas@monjalon.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.