From patchwork Wed Oct 23 18:54:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 61791 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9B25A1D410; Wed, 23 Oct 2019 20:55:20 +0200 (CEST) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by dpdk.org (Postfix) with ESMTP id D9CF41D415 for ; Wed, 23 Oct 2019 20:55:13 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1571856913; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DgRbD52LTAx3TtN6GaNzKi8yEI4r4Gf48b4yPJcUamM=; b=NaOqYwjjFtW9EXVP25VVvz4vJc/pTDjtkLJS/ZxNx+CkKjVr6IBzkTHLG98xd4VGj6haFV lONzrwiZTNPnIGQRGgKmpwd5e3zNSyTQipY+cM6kf/8p/ZrzCDWd/t+gZcV/gs8Wfv/iL1 6OqK/VB9HloP/l6ESCBLjIgcC8jFL2w= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-229-vKvIopoNOJWXr6Yh3IWdGw-1; Wed, 23 Oct 2019 14:55:10 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1BB8C1005500; Wed, 23 Oct 2019 18:55:09 +0000 (UTC) Received: from dmarchan.remote.csb (ovpn-204-129.brq.redhat.com [10.40.204.129]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4CB8560872; Wed, 23 Oct 2019 18:55:07 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: stephen@networkplumber.org, anatoly.burakov@intel.com, thomas@monjalon.net Date: Wed, 23 Oct 2019 20:54:22 +0200 Message-Id: <1571856864-8779-11-git-send-email-david.marchand@redhat.com> In-Reply-To: <1571856864-8779-1-git-send-email-david.marchand@redhat.com> References: <1571736761-32134-1-git-send-email-david.marchand@redhat.com> <1571856864-8779-1-git-send-email-david.marchand@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-MC-Unique: vKvIopoNOJWXr6Yh3IWdGw-1 X-Mimecast-Spam-Score: 0 Subject: [dpdk-dev] [PATCH v2 10/12] eal: deinline lcore APIs 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" Those functions are used to setup or take control decisions. Move them into the EAL common code and put them directly in the stable ABI. Signed-off-by: David Marchand --- lib/librte_eal/common/eal_common_lcore.c | 38 ++++++++++++++++++++++++++++ lib/librte_eal/common/include/rte_lcore.h | 41 +++---------------------------- lib/librte_eal/rte_eal_version.map | 10 ++++++++ 3 files changed, 52 insertions(+), 37 deletions(-) diff --git a/lib/librte_eal/common/eal_common_lcore.c b/lib/librte_eal/common/eal_common_lcore.c index 38af260..abd2cf8 100644 --- a/lib/librte_eal/common/eal_common_lcore.c +++ b/lib/librte_eal/common/eal_common_lcore.c @@ -16,6 +16,16 @@ #include "eal_private.h" #include "eal_thread.h" +unsigned int rte_get_master_lcore(void) +{ + return rte_eal_get_configuration()->master_lcore; +} + +unsigned int rte_lcore_count(void) +{ + return rte_eal_get_configuration()->lcore_count; +} + int rte_lcore_index(int lcore_id) { if (unlikely(lcore_id >= RTE_MAX_LCORE)) @@ -43,6 +53,34 @@ rte_cpuset_t rte_lcore_cpuset(unsigned int lcore_id) return lcore_config[lcore_id].cpuset; } +int rte_lcore_is_enabled(unsigned int 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_RTE; +} + +unsigned int rte_get_next_lcore(unsigned int i, int skip_master, int wrap) +{ + i++; + if (wrap) + i %= RTE_MAX_LCORE; + + while (i < RTE_MAX_LCORE) { + if (!rte_lcore_is_enabled(i) || + (skip_master && (i == rte_get_master_lcore()))) { + i++; + if (wrap) + i %= RTE_MAX_LCORE; + continue; + } + break; + } + return i; +} + unsigned int rte_lcore_to_socket_id(unsigned int lcore_id) { diff --git a/lib/librte_eal/common/include/rte_lcore.h b/lib/librte_eal/common/include/rte_lcore.h index 0c68391..ea40c25 100644 --- a/lib/librte_eal/common/include/rte_lcore.h +++ b/lib/librte_eal/common/include/rte_lcore.h @@ -93,11 +93,7 @@ rte_lcore_id(void) * @return * the id of the master lcore */ -static inline unsigned -rte_get_master_lcore(void) -{ - return rte_eal_get_configuration()->master_lcore; -} +unsigned int rte_get_master_lcore(void); /** * Return the number of execution units (lcores) on the system. @@ -105,12 +101,7 @@ rte_get_master_lcore(void) * @return * the number of execution units (lcores) on the system. */ -static inline unsigned -rte_lcore_count(void) -{ - const struct rte_config *cfg = rte_eal_get_configuration(); - return cfg->lcore_count; -} +unsigned int rte_lcore_count(void); /** * Return the index of the lcore starting from zero. @@ -215,14 +206,7 @@ rte_lcore_cpuset(unsigned int lcore_id); * @return * True if the given lcore is enabled; false otherwise. */ -static inline int -rte_lcore_is_enabled(unsigned int 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_RTE; -} +int rte_lcore_is_enabled(unsigned int lcore_id); /** * Get the next enabled lcore ID. @@ -237,25 +221,8 @@ rte_lcore_is_enabled(unsigned int lcore_id) * @return * The next lcore_id or RTE_MAX_LCORE if not found. */ -static inline unsigned int -rte_get_next_lcore(unsigned int i, int skip_master, int wrap) -{ - i++; - if (wrap) - i %= RTE_MAX_LCORE; +unsigned int rte_get_next_lcore(unsigned int i, int skip_master, int wrap); - while (i < RTE_MAX_LCORE) { - if (!rte_lcore_is_enabled(i) || - (skip_master && (i == rte_get_master_lcore()))) { - i++; - if (wrap) - i %= RTE_MAX_LCORE; - continue; - } - break; - } - return i; -} /** * Macro to browse all running lcores. */ diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map index ca9ace0..e7422d4 100644 --- a/lib/librte_eal/rte_eal_version.map +++ b/lib/librte_eal/rte_eal_version.map @@ -309,6 +309,16 @@ DPDK_19.08 { } DPDK_19.05; +DPDK_19.11 { + global: + + rte_get_master_lcore; + rte_get_next_lcore; + rte_lcore_count; + rte_lcore_is_enabled; + +} DPDK_19.08; + EXPERIMENTAL { global: