From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0075.outbound.protection.outlook.com [104.47.33.75]) by dpdk.org (Postfix) with ESMTP id 23B547CBE for ; Thu, 4 May 2017 14:01:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=HYjtkheXRopB/xs4jeBYuVrOYMrNljXvTz62qTxmdsw=; b=PlkSE16A02aPZMjjGOal6YBLOvUJdx6MF8oiB2Qy3ZJVqAbPf1QyxXk5O6uqEnPIb7+10P5R0GQwQm3i+AELTyHofUksm5Cmp6+oRc81fW0UBH/dmtTH4kntMErpLD7dpCIot4A4DnXpug4jjFQ/3Yy7+Ai2wYknnuFT4EwMLRk= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=caviumnetworks.com; Received: from jerin (122.167.66.17) by BY1PR0701MB1721.namprd07.prod.outlook.com (10.162.111.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1061.12; Thu, 4 May 2017 12:01:46 +0000 Date: Thu, 4 May 2017 17:31:24 +0530 From: Jerin Jacob To: Harry van Haaren Cc: dev@dpdk.org, bruce.richardson@intel.com, hemant.agrawal@nxp.com, nipun.gupta@nxp.com, narender.vangati@intel.com, gage.eads@intel.com Message-ID: <20170504120121.GA29312@jerin> References: <1493810961-139469-1-git-send-email-harry.van.haaren@intel.com> <1493810961-139469-2-git-send-email-harry.van.haaren@intel.com> <20170504063543.GA2794@jerin> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170504063543.GA2794@jerin> User-Agent: Mutt/1.8.2 (2017-04-18) X-Originating-IP: [122.167.66.17] X-ClientProxiedBy: BM1PR01CA0039.INDPRD01.PROD.OUTLOOK.COM (10.163.199.11) To BY1PR0701MB1721.namprd07.prod.outlook.com (10.162.111.140) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: da86f31f-905c-43d6-2259-08d492e55820 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:BY1PR0701MB1721; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 3:3f0YbmaCTFK1Sui8kYHYJHDXQpEJBXvpGXRSHeH2AQCdc2N2KFTJBglDHQj7siDlbvUOtRIhnMP1zBFFpetW8p7qzJDcG7SLgpm6MPO101F79LBAHUxNUIZuYD1pvmpFqr/FDrsQfmoSKI3u/sU2qMswlDHPa3N9lky1gzsWH81cloXouV0FFPpN9kX59mANH+HtJDuQawFMYBiWOf1UNeN+Z7yKQHZOUPtEBl7sWo+px6hMXMkd/gABP1F4ywkcEX+JRzlFOstHMXPUOnWgDucnYTlCUmMGNOdW6w8UL4yfhBsXxIBXMlTj5xEoav/r9x4yG5Mlam8OMSzHvEVDqw==; 25:HRdFlv11wWvFQqSUxajoTeiywtoDB8SzpNga8vgSaTM2Gm8nSK+2vMvSO2XK8GCShfyd95Nu/3LLNalurRdPR9hDRlEodK8hqdGuxslAqMWcvMc1A3ehM/xquYPG7INgdnHhwdrsHO2Zeew5ckHHlWlVAynU2ofd9X74DMW60vi2eOcNLzNnB+FEWJYK0txeRO7XgXUftvR6RoJN87zsUrEFznIUBaKKivAL4VulatkqYlPRDF7n3cp6bSl4zp5VkakseKT5XbRGshQORBv/X3WOliIZbgmn612mF/kjP4v45n/erFoRBwTYx1joYgZ1LjbIRcy3tzgQ10XbNUtbLiMV6k+eImmfG4lIF0yR/q+aAXde3HfaCbyESTQmCd+/+A4ijchJ4qdpYR+zUY80ma4RAgVcixrASy/c3YvXJgSb4afU/K0dgiyxUn0yfY4gY03PJuZXCjGoDUkiloLvFQ== X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 31:bPZ1AFv9ev3lu2vYU6W2Q8l/t6pSV6sb40TyMiui009QQK3ENQffpfjOVAJNJ/P6mfAxv+1MkWYPAw/EHfgSGkLrvNWMz3YN6Md7vbdtmNUAogmiBda0IzhNQg/HsvStXdEdMqJKL8Ay8AS56e0WKIoPLHmL47x8iNUP3I9JO11qZvvyhyAJPYpP6rIOUiob17F+MiqJwx7mft8U+Ktrq87778kQOAeQu5JkY9aJ6zi+024urQICp7yu6pZ7H2UcMqTDybGOQ1xyzgnTDMz6/w==; 20:6M9AMay8+tpPHNV+LUz1rzeEtr0OP+Gfmm2M3WumPH6L15hQIhyGX2kPogoIT4dGhQgefHvXtNjwON6kL9CWxBtyOs0RhSK6sWe35O0Q/Y+0KgV+IHMgEkHZl5oqdrZbHFaY4Tz/8FUuDn9vTJNK0kMuSmeHwxmkGQuL36DoU9/eyocjUbJ4I/hCUwcRzT1GBjMN6wIl9bUPzCGQ3va18xb+sUERQmqe+A2P1fUgR89qxNfuH1v9sTo5ZCy+Udj3BSYQ6klkcIn+8gf8vQDVLWdcOa8n1NbLU8o9+m5gOYPIJZK2PTXoT56MxdQfeQb3RVuR9WtguPDC0lHkA2AJK8ecseFgJtYXkLK98THRAclQZeewcm6i4g7PfYPFjsd/Tk+R3vk2Tkn4Wapk1jvn41f7Nqek3bhcPHbd1HjfUJUgqtvI9YkhEnX9bJriOQbAqi7XQpygoxi5OTtTWFUOnB8EIM4A78pBuxgT5fFCGOuKpXnFzyii97hscNyzF7Am+cwejoLxxq1/sf9/7BHBDh5sa4+ukBIE1+mDQuoUmI9UXJ9NxXhf5uN8kTD9eGrMlxd8d6CevD1yFJ4mc8svqE6arVJSy0h8VZzkfFtyQto= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(35073007944872)(185117386973197)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(3002001)(10201501046)(6041248)(20161123562025)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(6072148); SRVR:BY1PR0701MB1721; BCL:0; PCL:0; RULEID:; SRVR:BY1PR0701MB1721; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 4:f6Sjd1dXx+axzpr2XgxypHiNYtE6Hl8aIpGtLtKlxOFlw7wE0zL2+GF66d33Cwwhw+Dlj5LBMHYB+ioiKS1gd+ABtzXU73ZOTu/qibjVaaGo7XUzw/8GtCjcRcljb/tR1KfBCyiqtk3EfZ1YVug/YArQH2SOVhuicI5+gDs1GETaTA9ab2QxhmPWXdgsM2V3SdExK+aJ/HFKLxQP9YrlPv8HVcF4OvJYwU2HcCaqJu73SThXigPkdl2fasW/KvLNz+ot7GEMBunZlbSIe+ifc9+QvUsIXp8kCDG32Z3Md4wcEk9LSlkd82xu0Oixx8Zy7Fh6xfU0JbCv3ImCMsRY6LnJF6Mmb2ArXGx9L0/2bi7ovUoOFy00W8+mzubKs53XYtCFPtjWF/jEAwICyQLmYZksttuM//nw9E8U9m+89LezovxW32auP9sYvJwO2XP8X1/hhjQSyhCh0pUh0qlOUsRbs3S6PbArALL1pjh/FT2R8eWpg8ddFFxmwjdSQcNBEdPchwv76N5ZTioPaDc106PzWrWwVvo4ftLAZ9BKN6l52bigw5SuYf6TZnLOPeaQ+A1fOXPG79AKqtriFHrC6SG3jrrT0wFh9yc05wa9eQCEW+DqRNvVxkElvfH5rt1G71PK7eHyG0uNbTp8n3jcNspzanXnDRd6OY6smumhGz+NUin2q2Yjwongyvii5ncGuhgytFmFOcx5w9vUjzebrVj/qyDIxOH6DQvY/TI+OMeuKs+CnJ8nzyUUjcG0ab/N2jw1ddaRNERpVsdN9TYBLyaYd9I46m+kF20kCxuGWyIFtJG2aehUeq+eN8/9rPk38BUAiZvbdhTzxRHFTJDPQb7gC930gxrNBnUV1BpvZJDIJZeaIU/Z3FIXeRkQyMle X-Forefront-PRVS: 02973C87BC X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39450400003)(39840400002)(39850400002)(39400400002)(39410400002)(377424004)(13464003)(4001350100001)(9686003)(38730400002)(76176999)(1076002)(5660300001)(23726003)(110136004)(42882006)(2906002)(478600001)(6496005)(6116002)(6916009)(53936002)(55016002)(50986999)(2950100002)(81166006)(50466002)(54356999)(229853002)(25786009)(8676002)(189998001)(83506001)(4326008)(33656002)(6666003)(8656002)(3846002)(42186005)(47776003)(305945005)(33716001)(7736002)(66066001)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0701MB1721; H:jerin; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0701MB1721; 23:0ywHW97ccgA9k1UvXRfns9F+vQ7LCrOAAsEE+RA?= =?us-ascii?Q?rVPlzfawkohL8Q2zZHKZWa/fAkSpwyngDVpxd9v1Fq6JOmgUpEhfSDIeVhGk?= =?us-ascii?Q?iyrqAOBfKNq+xiTh8UDLoDyCaMKBVU7n4P6Wc3yblGAPrAJ4oOjMvuh4smG4?= =?us-ascii?Q?/M9kadRXOLjEXrE8vTPTLey5exk5zjMPCWncvQTrCEkyGaPbt7Vd0ly3CrtY?= =?us-ascii?Q?e7K5tjQ2NWOHCLOk461tbktI4b0sdc4IC5KF2iORNOWBby95IuTGZrz7C/7P?= =?us-ascii?Q?dSEM7YZ7yOuXn7D0Q06GKOX/4pLOi6hmOw4yoj89zqmNW36rfNcQAOitpTHj?= =?us-ascii?Q?/wiGIZ4xagoP8lZqihsYMKlepoC+yZWa6CfVJeGcloIkD9Q9xe5b+j9S9Hed?= =?us-ascii?Q?SjvlD/ON1CGRQnK1pa79eVzro2XfcCJOR7LjMg++1tWxXDfxtUTSgaQLmYP0?= =?us-ascii?Q?v05mo5M83jMJAxX9Q7AgnxYq0+DrnDMe4qT/wWnkAWTK7Rq6fbQWt+AF3KcB?= =?us-ascii?Q?aP8ccanVoIhDPDAewLeTldWffj5h/VmxVokqhCbSv6EExTCWKAy96b834xyK?= =?us-ascii?Q?PY25o39Kz9Ptelb6uZzKnDjX/YzIGN0qcLnaIE+GgWDUecchGDkMoOvMQQRu?= =?us-ascii?Q?/5V2QXumU/gZxbTwaLCJ3B/wHe59PsBVCfpBLqbzD0qIoMx0Scql24D5l834?= =?us-ascii?Q?OyONaTtgktyozyFwlKq1w1cluskdG7G6OjPWATvEbQXkSRptpexiW00pUlae?= =?us-ascii?Q?bXODcGrxjmdw7MX29oHsu5bK4mu+F+waUOIWd7hxghyvopYYIZtVO9W7vl+a?= =?us-ascii?Q?EE7Bi1NRncdxzY2At6PGkr/qixVE9TRWODU26whN5xgQE6q/r3Geky7Ufv+T?= =?us-ascii?Q?m3F+v5mdMus/8z4WKIsVROlASkPfaxonvkwCJ/T/b66puZZmLabEOzipk8W5?= =?us-ascii?Q?rcpumm4lNBqOr3hFr0uY6+BgBmg4ttgqflrFlXE68KRniX0tvPoRlcyozCWM?= =?us-ascii?Q?paDWXfpDDH3kZi/Guj6/f2PgZv+7NQJEfUlqvQ8HNQdq8HyIJAk4fpOg7WF+?= =?us-ascii?Q?k6gPp2TAWwe6+aWZCyb6qz9HAFkjxPT2goJR8bGL7S1aHgajkmbaXnxqdsYJ?= =?us-ascii?Q?V/VABBku3vOGmhehJvnZBaQexT5DMURzjm7bYQkhkgdYsqOQUk8XixidCT1r?= =?us-ascii?Q?tmmFNY3pWepFhWAc=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 6:25N1XfVDbWVaUvScFrcNz6pfImgatHlGqnmBzUOr2zpOGl6N8Xrtm2XERra334vejD3geQ/70aMmZTyTLFvKj8MrUrm4LUJP5Ml1sgXyEJUQxw5EMkI0JUAMZVDI2fpb8ytAjb0xb1LYtRKEzbxa6IYpJGa5M2UZqHjW+hU9NhGIJY3iD4SJLqeET2tuAJTE7yIJAfDbTsuo6n1qP54LeBiYK8AvDmMA9LbetPKJFs/FrHQFS7NVdW2JJhCRu4Cl85PW2y0gaAZ7UcyC13fnBREORR3BXcHcJyPSGVPFPxf4DEy+75kgFZpbdZ/BQQC0nVoSmwsUL1K8wfa4ZIfZabImO7vr8r3GvD5lC5uEwwAYv8exBGQPlv7Y6VTPyZ/+4Q/qrMYCTcXUoaPT84EiW6DuyXUY3sxST8GNfCWj19bdVA0HIk7nAjZAW887r4pum7AwVidZkPN8ILEBmdj6k7qdZIrqkCoogvuvlwRzdv6otcuRhvnZEHECPqrrcguHYoW4pWbqrJ5RIqdV0ChyXw==; 5:jDwy64RSA/o+cRAADUrKYqKzfxfzZ1GY1hAQpIASmXijJ1GXmywwsp9Pc2o4lyNEd6zsBqkUi3dCN9yNnezaHXZoOz2WoShaCxVnzPKE1TEh7xuLHDmJgIqdy//p+zZJ4JMtK0Bu/+8oNAFzNaLRag==; 24:DqHu3QM3i9KKAWsJWOBtBofroKkWzzh9W8hkSvkBtnX1pxorEXHUUYmhWaLFm1dsXSUTsUndV81f1GqgNXongMT4s5Lh8OTMGS+pfa7cwiQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 7:1+j06Fg2+/tNHwDWJjSxn6CKvfmOKRLuEqb1m/QTuQ71QKA46ci954pTNJazDziTY+BkS17V0u4L1Yf2B4zgAlwr9Y89z9/S7Cz3hBbi/sCJT6nJXbtDGq1eDVLOKKvFbqzK0EzTTiikiRnA6mAxOPtGIjx3RGIuiNkCyJHlUi9UQELW0IIILT+/VsyPwpXI9ZizEc4Tu/pjHQyY9Ngdb4IE2DcirUAgyy+2jwnp7j9b0wCNWejWMz28rB2biU24JA4O2Gs7aJ+efDg1x84DpYBUZFWBg3Ih6jo20b3iPUdVNT5PzDAjfGjLGjDZtfsnUiVWv6q74kCrIIF0h7ZlkQ== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2017 12:01:46.1066 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0701MB1721 Subject: Re: [dpdk-dev] [RFC] service core concept header implementation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 May 2017 12:01:53 -0000 -----Original Message----- > Date: Thu, 4 May 2017 12:05:54 +0530 > From: Jerin Jacob > To: Harry van Haaren > Cc: dev@dpdk.org, bruce.richardson@intel.com, hemant.agrawal@nxp.com, > nipun.gupta@nxp.com, narender.vangati@intel.com, gage.eads@intel.com > Subject: Re: [RFC] service core concept header implementation > User-Agent: Mutt/1.8.2 (2017-04-18) > > -----Original Message----- > > Date: Wed, 3 May 2017 12:29:21 +0100 > > From: Harry van Haaren > > To: dev@dpdk.org > > CC: Harry van Haaren , > > bruce.richardson@intel.com, hemant.agrawal@nxp.com, nipun.gupta@nxp.com, > > narender.vangati@intel.com, jerin.jacob@caviumnetworks.com, > > gage.eads@intel.com > > Subject: [RFC] service core concept header implementation > > X-Mailer: git-send-email 2.7.4 > > Hi Harry, > > Overall it looks good. Some initial comments > > > > > This patch adds a service header to DPDK EAL. This header is > > an RFC for a mechanism to allow DPDK components request a > > callback function to be invoked. > > > > The application can set the number of service cores, and > > a coremask for each particular services. The implementation > > of this functionality in rte_services.c (not completed) would > > use atomics to ensure that a service can only be polled by a > > single lcore at a time. > > single lcore at a time "if multipthread_capable flag is not set". Right? > > > > > Signed-off-by: Harry van Haaren > > --- > > lib/librte_eal/common/include/rte_service.h | 211 ++++++++++++++++++++++++++++ > > 1 file changed, 211 insertions(+) > > create mode 100644 lib/librte_eal/common/include/rte_service.h > > > > diff --git a/lib/librte_eal/common/include/rte_service.h b/lib/librte_eal/common/include/rte_service.h > > new file mode 100644 > > index 0000000..cfa26f3 > > --- /dev/null > > +++ b/lib/librte_eal/common/include/rte_service.h > > @@ -0,0 +1,211 @@ > > +/* > > + * BSD LICENSE > > + * > > + * Copyright(c) 2017 Intel Corporation. All rights reserved. > > + * > > + * Redistribution and use in source and binary forms, with or without > > + * modification, are permitted provided that the following conditions > > + * are met: > > + * > > + * * Redistributions of source code must retain the above copyright > > + * notice, this list of conditions and the following disclaimer. > > + * * Redistributions in binary form must reproduce the above copyright > > + * notice, this list of conditions and the following disclaimer in > > + * the documentation and/or other materials provided with the > > + * distribution. > > + * * Neither the name of Intel Corporation nor the names of its > > + * contributors may be used to endorse or promote products derived > > + * from this software without specific prior written permission. > > + * > > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > > + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > > + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR > > + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT > > + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > > + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > > + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, > > + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY > > + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > > + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > > + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > > + */ > > + > > +#ifndef _RTE_SERVICE_H_ > > +#define _RTE_SERVICE_H_ > > + > > +/** > > + * @file > > + * > > + * Service functions > > + * > > + * The service functionality provided by this header allows a DPDK component > > + * to indicate that it requires a function call in order for it to perform > > + * its processing. > > + * > > + * An example usage of this functionality would be a component that registers > > + * a service to perform a particular packet processing duty: for example the > > + * eventdev software PMD. At startup the application requests all services > > + * that have been registered, and the app decides how many cores will run the > > s/app/application > > > + * required services. The EAL removes these number of cores from the available > > + * runtime cores, and dedicates them to performing service-core workloads. The > > + * application has access to the remaining lcores as normal. > > + * > > + * An example of the service core infrastructure with an application > > + * configuring a single service (the eventdev sw PMD), and dedicating one core > > + * exclusively to run the service would interact with the API as follows: > > + * > > + * 1. Eventdev SW PMD calls *rte_eal_service_register*, indicating that it > > + * requires an lcore to call a function in order to operate. EAL registers > > + * this service, but performs no other actions yet. > > + * > > + * 2. Application calls *rte_eal_service_get*, allowing EAL to provide it > > + * with an array of *rte_service_config* structures. These structures > > + * provide the application with the name of the service, along with > > + * metadata provided by the service when it was registered. > > + * > > + * 3. The application logic iterates over the services that require running, > > + * and decides to run the eventdev sw PMD service using one lcore. > > + * > > + * 4. The application calls *rte_eal_service_use_lcore* multiple times, once > > + * for each lcore that should be used as a service core. These cores are > > + * removed from the application usage, and EAL will refuse to launch > > + * user-specified functions on these cores. > > + * > > + * 5. The application calls *rte_eal_service_set_coremask* to set the coremask > > + * for the service. Note that EAL is already aware of ALL lcores that will > > + * be used for service-core purposes (see step 4 above) which allows EAL to > > + * error-check the coremask here, and ensure at least one core is going to > > + * be running the service. > > Regarding step 4 and 5, It looks like, > a) The lcore_id information is duplicate in step 4 and 5. > b) On rte_eal_service_set_coremask() failure, you may the need > inverse of rte_eal_service_use_lcore()(setting back to worker/normal > lcore) > > But I understand the need for step 5. > > How about changing the (4) and (5) as > > step 4) rte_eal_service_set_coremask > step 5) rte_eal_service_apply(void)(or similar name) for error check and > ensure at least on core is going to be running the service. > > > + * > > + * 6. The application now calls remote_launch() as usual, and the application > > + * can perform its processing as required without manually handling the > > + * partitioning of lcore resources for DPDK functionality. > > + */ > > + > > +#ifdef __cplusplus > > +extern "C" { > > +#endif > > + > > +#include > > + > > +#define RTE_SERVICE_NAMESIZE 32 > > + > > +/** > > + * Signature of callback back function to run a service. > > + */ > > +typedef void (*rte_eal_service_func)(void *args); > > + > > +struct rte_service_config { > > I think, better name is rte_service_spec or something similar > > > + /* name of the service */ > > + char name[RTE_SERVICE_NAMESIZE]; > > + /* cores that run this service */ > > If I understand it correctly, > a) Its for NUMA > b) Basically advertising the core(s) which capable or preferred to run the > service. Not the number of cores "required" to run the service. > if so, update the comments > > > + uint64_t coremask; > > 64bits are not enough to represent the coremask. May be array of > uint64_t or array of int can be used. I think, latter is more inline > with exiting eal scheme Two more questions, 1) If its for only for NUMA. Is it socket_id mask enough ? 2) What would be the tear down sequence of the service core especially when device stop or close happens? > > > + /* when set, multiple lcores can run this service simultaneously without > > + * the need for software atomics to ensure that two cores do not > > + * attempt to run the service at the same time. > > + */ > > + uint8_t multithread_capable; > > +}; > > + . s