From patchwork Tue Aug 29 12:32:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavan Nikhilesh X-Patchwork-Id: 28060 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 3EFCE137C; Tue, 29 Aug 2017 14:33:22 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0088.outbound.protection.outlook.com [104.47.32.88]) by dpdk.org (Postfix) with ESMTP id 1A22B11F5 for ; Tue, 29 Aug 2017 14:33:20 +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=yYlVkUF2wTos93pA9xA+uZddu0ow7cse2qpSt2Ry16E=; b=jSzC+uOvnHI9uz7aDoXtODMLXrJ0wvh1vXjIfqsxCmwbAOdEpkkEFmp8ueNTZkrxkhtJyC65shABl/RxrkWliuiHwJgTHXvAe9WJujM6s0jxMwTa3+FCLVCPm5jTRjYK/UbjjCUTce2c5SpaiKe0Yflg8hb2+6Cq0SDVYPNT5VA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Pavan.Bhagavatula@cavium.com; Received: from PBHAGAVATULA-LT.caveonetworks.com (111.93.218.67) by CY4PR07MB3462.namprd07.prod.outlook.com (10.171.252.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.13.10; Tue, 29 Aug 2017 12:33:16 +0000 From: Pavan Nikhilesh To: harry.van.haaren@intel.com Cc: dev@dpdk.org, Pavan Nikhilesh Date: Tue, 29 Aug 2017 18:02:51 +0530 Message-Id: <1504009971-11282-1-git-send-email-pbhagavatula@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BM1PR01CA0080.INDPRD01.PROD.OUTLOOK.COM (10.174.208.148) To CY4PR07MB3462.namprd07.prod.outlook.com (10.171.252.143) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8b6b4a22-b928-4546-b796-08d4eeda2012 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:CY4PR07MB3462; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3462; 3:JztEKwMz9IfupYU4qDch3hsntrXWRiaJnHsNTpQlBifjRSP1J716AMukaYDCcZlWkM8l1jmlVGNwhjHdiOP9yfuXeGp/P78UCyG/2FSBjMSX6P+fIYkcgkyCTvna5VlIFlyhi4RdXHXw6yp+Oswc4vzhqg90i78MU2yzkPn430DqMKk116hG6bKcclRpXmnmpLkbiPIgfjrGdrdfwsgo0OFFneOP7LGNVmnSpA31dRT39/1pmEsQJr/AbOQk8W0r; 25:/MZr1OCBdhw/8m1JPagXU2+L1k82Fi+ChjepUvjs2aIL4rEvhpjdsxsM23i30Ftc0OtpKmBSZ7OoJt9ilU5Q4PWj10lMMLZbc98LL3DX7ofUik8x1ex8jY6FBu+JWZoU/I03k2XSQoT4Vfp3Kvupb62VrKjTA8H2nBcL2ibUvoXHz95fkRxI6z793NL/dTRxvphTWxBlNDSOU1b3khKAWf+gRcWBggZRe3oH8LluH7zsuv3EC20XfUkz6s3KeII9yRwNEmEys27qdCufjozL9TDDuM5Tb2JHmlZLEL5jzev5gQWIiNt9RheVExsiWiPchMlYQtmZ5YTLnMX7KSAs6w==; 31:e6gBfKSiKu4pdS4+n2kux6UgMzwJjIyViccXMUemvF6FVhjbjI4smbxRrnzi0MegUzzSNyPwDmEKheYOkC/1Qq8nQ9q2X63+voiKhaoEOMUwVdleYPE6R2pCaHeoEN6Yqo4Sa0HsE4dYkzLW9x1mkBdc8fQSYkEvKfeFuAZr/tFfs3iX83lIp0b0Xa+VRQYmkwtlWoVpQeK59cALfg9UIbHloFN+ATeE4GnCL2dnChg= X-MS-TrafficTypeDiagnostic: CY4PR07MB3462: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3462; 20:CG5DR3qy7YQswS0SV/gQDvE36uUDVN1Xjg/xeBfSOxLZNCvAdqRM/fobCgAm033LzieqTnt0sK/ayU4y6PsGaxLa38uBgzSrtb7w5HcJ7E9srRqZsMLNRxjmZyKAoeKnL2eqILIeL/XICL/IcTBX037FqskA+kb8FnT9Io5F/A2t+D4PSSN987RaN9j6EH6HIRaGq3tRVIw63sVEbwxu6fb1IXEUalQ1UBNpY9ENHdVBzAFtQiFUpCk5Fwq6hFYH4mYyk6Onyg258ainzlGuVecMbpphoFStD2L7Q5NpiA+9muQYP5e6ni5NK5HJoK3aI/P4NaHsuwWZPKthZX5PpzcWCJRdwg9UtqiZ784z4NGJcqjFYZjRSFIr0lUOEwBHwHuSH9gCNjZkVV221uk6ncD6wSV85hhV+k7k7bbX0GqlTsZ8zjFqwMGfg7ZjcDOHbvlO5dQspL7ej9UBhxnebi+d+sq/647dNfhr3ONj6lkQHlHuak6ymTMxmbNe3dC1NVuAgQpqTYugGEqCblSolkFdJRAvaFTPrbT6vdHIEhxb2KLAFij6Hc6InymZ0UqHiAG6y4pcBgfWcrOWLS9c/wNsS3p7uL/jRayvQODwhzw=; 4:TkkNcBXSs3LYkOM2U6XtUIpCdxa7F43w4R5zib/AXx9LWLjub+BEv4tRMw4C7QROoc9zw0vYgUwCb5LpQNCvoeRzdyS5w2TUhY0h9i8HoJnfyjuRttkNd53nkb18/TpzHXjeOc2k2c68DGYkDH1m19KN7gxSZ+QBMZpRiu+6OhIf6lOXxRLIF4UFydTHcOi5RErLWqrgRT/pcPmlGeo+Ztl/CAfvHvV2OxwcisJQXVyfb8Yk0UFrj1dyJo2L4amX X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(3002001)(93006095)(10201501046)(6041248)(20161123562025)(20161123564025)(20161123558100)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY4PR07MB3462; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY4PR07MB3462; X-Forefront-PRVS: 0414DF926F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(7370300001)(6009001)(199003)(189002)(107886003)(110136004)(36756003)(6512007)(53936002)(50986999)(5009440100003)(305945005)(4326008)(7736002)(81166006)(81156014)(8676002)(101416001)(50226002)(97736004)(7350300001)(189998001)(106356001)(105586002)(42186005)(6486002)(6506006)(53416004)(42882006)(6916009)(33646002)(2351001)(6666003)(2361001)(69596002)(25786009)(47776003)(5660300001)(66066001)(50466002)(68736007)(48376002)(478600001)(5003940100001)(3846002)(6116002)(2906002)(72206003)(42262002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3462; H:PBHAGAVATULA-LT.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR07MB3462; 23:LBMs0qqDQ8Ofh9LV8Xg/9uda2LlArJadNP7djX0zd?= kXyW/oCtL+pwWF5WqLshmJ3kORFFZsLw8ImScT2bvHVr2/lBXDml84C2ix9ooNCfwi78BeUUVAJmstoUNVnrJR5TKKaCdlKBTZqPn7hGT1TR/31WM+Uy5KX3TNBNb9XwhqFagpkkNcMDb7KsxnnBsdlwkaTP+xE2ZoX3eeUrruCkY3Wjh2VJtZXwFSry6R+4799Nt2zyI32JLaCgX6pyA13iMHWj7MSFrd5m1TpXMKF7QIMI7pKuUo56V7EtE1F9+EHgL6G3L1V36Fd7lQv0DZfsH8NCvOqy1fqtAIGKj3hg8t7rZE6ToLIeFZcUg7+P4zGt4Thv7nGtILAB/h8I2VawGlXX6T+9MYv/ztAznYQVoOkmgw5uGrKCE+wKpknyM8xoCyil38bbhEuayzTMKqozUBpaS1G/+9bn6SBG1fYmqJipXWG9lcqXqRWPr3uzZvQCWtboq3Z0pC4gPyq0NhItC9NqfAkb5lQRTi3oPyB6oFrjVycAHSexEbr5Gcx1EVez0mK9De1pTrcc1ghg8nQDvDEcoIRY/KEMVGM3FIOzlsDZDA2SMsNsqzFvceT9LAhM6abXQf8jEUvVRNMn7sdfzAdW0h3wCdW2cSMCLeqv1cGS2Gl2hsvyJG6Shuo276QOSOHufeQxKKhuB+NiMwvaFnUE0vrc0S95f8GBo5jfbCuiyTl7AQ3dseXM+DhSJoZ/H84eQ8za/sSU+6yei1RABBosgucUzM1Y8wI3x0dLHSfwB0Co4//rl9cL96pl64KR4dvQTmja3fHh7rChyj+qRbOrfRkxXxjS054m7ZtD955LD7DtgdRBdGP76NrgXpLDk85KjmWqA0rDFh2s6YBrJDHSExpwVzhcaciW3kOGHxvPy/XSjIAhFHsgmJgvjAGNrKn6qmLqMzD14CSNF+eDSGAkwkriBmQXQyuBfYJjIDnfB3RrQwK7db7Si0Wml8pkDcMLDY1EJCxsshlA2eTsdRW5IFx9n1qa2J75MUzkKyl/df4zZsBjJ4rh1eyp8kKy0yiPM1hRyMtvab/g1PD80j/0Le2GcfKo8YRfJZEPXeVFCv6XlSXWFg+R3rI959woc2WitZblQIZ/iNhnSnxGDuttlxqaFTUKaCjvmuX0Jqhv2GKRqwoD81xiy3YH9ynxv++0Gh8oatcpSozbsvr X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3462; 6:AkH+G77XXoqOpt2Y0fVHTj1jlJHZvdFwi2O5+7uCRBxTFEmSj8YUMBwDH5/2rZgRZNx/AIadyaSCanBzM2E85m7XeBgHzIgKKGQWXYqE9J2xzwmjBwHgoUGNf/0+Ie3i3OimLzGZK8a2y1LX0hyDqOeM/WwvfK+aeGoqjGrlKioxhZ0IKhrHgoSGdwsyhYDHCU3plYSdAfml85VGwqQbTB1/7zmBmZM7HHQGr3vrbniiU0y+SXVCucnPC96QbRk+oBdbjrqdiz8UCF/D/iA2QgjxE1Sq1dM5eqZIhunByqp5IkaWGxdEdveQD+auykHw5vU3IJWZ4ErLI7uXnAg/oQ==; 5:hLyX6yy8GgBS/iA8G9kWMib2RQev01XuZ/4Tbiv6PKOzxh6VRE4JFuu6QNBFM8o2K5NCAmrnbjsLaT0Z0KjnptBC+91BLP/GTyjeiIbm0PAd6gw979Udvgmxgo5Q6w0R9e/NprsrwqwmvifaGlQBtg==; 24:fYAgaxu3gvopPm5iwl/SJJbq6pzB6FbHG0YEpnB3DubyLeRmwQBqjmk4iEX0YUHGr+747GJ8guVA5XjMQUnIb53hNZIIPIci6sS/6/vbp2Y=; 7:0cjih3RejtSJG5dv1cLpmskDR0pgPYLJIVTt0XWyWB2pa85Y+yVPDRgXxAhCZWfPRg2gqhwwWKs1HuC0dlJHfUCJ2/t8DJ1vPj9zpc9hr6k7H6NbTZXNgLcF920cu9VTgGvMIZ9Vz+B6aGOWnBDlqWw9MrNraXuVUWCs1uFi12Dwuo3bFhoMdWHOr0yqkFnpz746TNGkgqEOeVleZV13KFLkNwLzRgemW84wDSOQqdo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2017 12:33:16.0242 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3462 Subject: [dpdk-dev] [PATCH v4] service: add API for service count per lcore 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This new API returns the number of services that are running on a specific service core. It allows an application to decide which service core to run a new service on. Signed-off-by: Pavan Nikhilesh Acked-by: Harry van Haaren --- v4 changes: - fix doxygen errors v3 changes: - fix compilation issues with .map files v2 changes: - reword the commit title according to the check-git-log.sh - modify return types - add function to .map file lib/librte_eal/bsdapp/eal/rte_eal_version.map | 1 + lib/librte_eal/common/include/rte_service.h | 13 +++++++++++++ lib/librte_eal/common/rte_service.c | 13 +++++++++++++ lib/librte_eal/linuxapp/eal/rte_eal_version.map | 1 + 4 files changed, 28 insertions(+) -- 2.7.4 diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map index aac6fd7..79e7d31 100644 --- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map @@ -222,6 +222,7 @@ EXPERIMENTAL { rte_service_is_running; rte_service_lcore_add; rte_service_lcore_count; + rte_service_lcore_count_services; rte_service_lcore_del; rte_service_lcore_list; rte_service_lcore_reset_all; diff --git a/lib/librte_eal/common/include/rte_service.h b/lib/librte_eal/common/include/rte_service.h index 7c6f738..5ea81c4 100644 --- a/lib/librte_eal/common/include/rte_service.h +++ b/lib/librte_eal/common/include/rte_service.h @@ -374,6 +374,19 @@ int32_t rte_service_lcore_list(uint32_t array[], uint32_t n); * @warning * @b EXPERIMENTAL: this API may change without prior notice * + * Get the numer of services running on the supplied lcore. + * + * @param lcore Id of the service core. + * @retval >=0 Number of services registered to this core. + * @retval -EINVAL Invalid lcore provided + * @retval -ENOTSUP The provided lcore is not a service core. + */ +int32_t rte_service_lcore_count_services(uint32_t lcore); + +/** + * @warning + * @b EXPERIMENTAL: this API may change without prior notice + * * Dumps any information available about the service. If service is NULL, * dumps info for all services. */ diff --git a/lib/librte_eal/common/rte_service.c b/lib/librte_eal/common/rte_service.c index 7efb76d..616bad3 100644 --- a/lib/librte_eal/common/rte_service.c +++ b/lib/librte_eal/common/rte_service.c @@ -397,6 +397,19 @@ rte_service_lcore_list(uint32_t array[], uint32_t n) } int32_t +rte_service_lcore_count_services(uint32_t lcore) +{ + if (lcore >= RTE_MAX_LCORE) + return -EINVAL; + + struct core_state *cs = &lcore_states[lcore]; + if (!cs->is_service_core) + return -ENOTSUP; + + return __builtin_popcountll(cs->service_mask); +} + +int32_t rte_service_start_with_defaults(void) { /* create a default mapping from cores to services, then start the diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map index 3a8f154..468c706 100644 --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map @@ -227,6 +227,7 @@ EXPERIMENTAL { rte_service_is_running; rte_service_lcore_add; rte_service_lcore_count; + rte_service_lcore_count_services; rte_service_lcore_del; rte_service_lcore_list; rte_service_lcore_reset_all;