From patchwork Fri Oct 25 13:56:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 61989 X-Patchwork-Delegate: david.marchand@redhat.com 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 A55C51C2A3; Fri, 25 Oct 2019 15:57:11 +0200 (CEST) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by dpdk.org (Postfix) with ESMTP id 57AA91C25E for ; Fri, 25 Oct 2019 15:57:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1572011823; 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=KnY2Y51SevAsP+9NEJ90fDewZjRPOJvtI+2I5mhre2c=; b=OzgR1r+FHUONC3Kp3q0m7EKhslm7AX6XkCnBATopmMeY6lVv4NJdIXlO8Jubx0kLwv1xwF M4Wi5pNF/kkwBJ3Hov6gvEJhF40Tx91p5i2gkibEgEX+J+Nrkkp3wsgBI9whz4JJqYlUOX XcMa8m8CUKT/k7EiSm0Jp+7dm0HtobE= 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-253-84ZdfKyrOhSGYl4WLNodHg-1; Fri, 25 Oct 2019 09:57:02 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0B2201005509; Fri, 25 Oct 2019 13:57:01 +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 1411E10013A1; Fri, 25 Oct 2019 13:56:58 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: stephen@networkplumber.org, anatoly.burakov@intel.com, thomas@monjalon.net, ktraynor@redhat.com Date: Fri, 25 Oct 2019 15:56:08 +0200 Message-Id: <1572011772-23271-10-git-send-email-david.marchand@redhat.com> In-Reply-To: <1572011772-23271-1-git-send-email-david.marchand@redhat.com> References: <1571736761-32134-1-git-send-email-david.marchand@redhat.com> <1572011772-23271-1-git-send-email-david.marchand@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-MC-Unique: 84ZdfKyrOhSGYl4WLNodHg-1 X-Mimecast-Spam-Score: 0 Subject: [dpdk-dev] [PATCH v3 09/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 Acked-by: Thomas Monjalon --- 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 59a2fd1..b01a210 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 6d7e0e4..d88649e 100644 --- a/lib/librte_eal/rte_eal_version.map +++ b/lib/librte_eal/rte_eal_version.map @@ -310,6 +310,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: