From patchwork Wed Apr 3 17:16:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 52211 X-Patchwork-Delegate: thomas@monjalon.net 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 7624E1B512; Wed, 3 Apr 2019 19:16:23 +0200 (CEST) Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) by dpdk.org (Postfix) with ESMTP id E68201B4ED for ; Wed, 3 Apr 2019 19:16:17 +0200 (CEST) Received: by mail-pg1-f171.google.com with SMTP id i2so8635427pgj.11 for ; Wed, 03 Apr 2019 10:16:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=4ATaw2+J2yf9RUkQAsCJwSsb3985TdCTdsjttjhqaDw=; b=Jw+taltUSgn+axPS+Ic1NcMlhuatEz9qf+g7L7+08TEMlmooUgPXJVLQiYew9pd314 wELoE/eFaJNHIxtB22oRwzabcNr60HL6A6iDIHhKAL5IpOb9Y6GlOWxYw6E0NGU6XOYH 7kEWELdjua36u/c15uJm98kV9iF83b2CQlxoB6DYMlTMUNBNHYy4uZTFivtpRfZ+fPN8 1Noe3Rrl71pL+LrvrE9EmA8+REYc1jl/zdPQzycJGK+6YFUtGTA3uuH3g8aM94datXIe eIzrq+DFMkP6PrUn2BE3UyaywsQ2XXx1GCJZ7/hcRMw6D++tnluRj/jcHi7zAhVGOcrz l0rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=4ATaw2+J2yf9RUkQAsCJwSsb3985TdCTdsjttjhqaDw=; b=o0GI2ZJ20YHC5Z1GnX0370/gM5YK5fU81tgqTr0t+DH554gbxehTugkBmaf0s+6QuM z5vI9ufQlzKAHEqmtsnGECL+ljc8yon2ZhwR50xfUcojYihcSn8NpfMOWAgr8BEWOs+r h92iWrruatcjUMz1iMvFVnt8mcUVt8+puMC/Ou+X7OFkydd/+BBzGwXRR+WU6vYW/hCJ /7eaTF+o12jIS1Vdz4WdRC+apqfB/v/BFLlTNBomjCY4Q/uTgPVlq34k6/2r23IQNMox 17tj2g2Kj/XkUauWAXik6ZxNzhJ/12GTbkijCmIQ4CnOGTChDkAEITA/n/rGxsCnp3Kw 5tdQ== X-Gm-Message-State: APjAAAX7UpDOJhM01sMx3zhmoU2kyY80bCCWFeVNJW/uiPVi7eV7Iw// m3PuGXHFOcxJlp2uAC8a3flx+HGoKnFCcw== X-Google-Smtp-Source: APXvYqyRvhiMqzrpfjbnJnmbP6QGpNXfpyWP1fS0T1jDpoLqJebKckpUjvRqLuSCtUWLhWqNTx0/vw== X-Received: by 2002:a63:ff26:: with SMTP id k38mr802205pgi.123.1554311776453; Wed, 03 Apr 2019 10:16:16 -0700 (PDT) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id k14sm23041693pfb.125.2019.04.03.10.16.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Apr 2019 10:16:15 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Wed, 3 Apr 2019 10:16:06 -0700 Message-Id: <20190403171610.23970-2-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190403171610.23970-1-stephen@networkplumber.org> References: <20190403171610.23970-1-stephen@networkplumber.org> Subject: [dpdk-dev] [RFC 1/5] eal: add accessor functions for lcore_config 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" The fields of the internal EAL core configuration are currently laid bare as part of the API. This is not good practice and limits fixing issues with layout and sizes. Make new accessor functions for the fields used by current drivers and examples. Mark the state and return code functions as experimental since these values might change in the future and probably shouldn't have been used by non EAL code anyway. Signed-off-by: Stephen Hemminger --- doc/guides/rel_notes/release_19_05.rst | 7 +++ lib/librte_eal/common/eal_common_lcore.c | 46 ++++++++++++++++++ lib/librte_eal/common/include/rte_lcore.h | 57 +++++++++++++++++------ 3 files changed, 96 insertions(+), 14 deletions(-) diff --git a/doc/guides/rel_notes/release_19_05.rst b/doc/guides/rel_notes/release_19_05.rst index bdad1ddbeedf..995fbf177b93 100644 --- a/doc/guides/rel_notes/release_19_05.rst +++ b/doc/guides/rel_notes/release_19_05.rst @@ -188,6 +188,13 @@ ABI Changes alignment for ``rte_crypto_asym_op`` to restore expected ``rte_crypto_op`` layout and alignment. +* eal: the lcore config structure ``struct lcore_config`` will be made + internal to the EAL in a future release. This will allow the structure to + change without impacting API or ABI. All accesses to fields of this + structure should be done by the corresponding accessor functions. + For example, instead of using ``lcore_config[lcore_id].socket_id`` + the function ``rte_lcore_socket_id(lcore_id)`` should be used instead. + Shared Library Versions ----------------------- diff --git a/lib/librte_eal/common/eal_common_lcore.c b/lib/librte_eal/common/eal_common_lcore.c index 1cbac42286ba..806204d9f73d 100644 --- a/lib/librte_eal/common/eal_common_lcore.c +++ b/lib/librte_eal/common/eal_common_lcore.c @@ -16,6 +16,52 @@ #include "eal_private.h" #include "eal_thread.h" +int rte_lcore_index(int lcore_id) +{ + if (unlikely(lcore_id >= RTE_MAX_LCORE)) + return -1; + + if (lcore_id < 0) + lcore_id = (int)rte_lcore_id(); + + return lcore_config[lcore_id].core_index; +} + +int rte_lcore_to_cpu_id(int lcore_id) +{ + if (unlikely(lcore_id >= RTE_MAX_LCORE)) + return -1; + + if (lcore_id < 0) + lcore_id = (int)rte_lcore_id(); + + return lcore_config[lcore_id].core_id; +} + +rte_cpuset_t rte_lcore_cpuset(unsigned lcore_id) +{ + return lcore_config[lcore_id].cpuset; +} + +unsigned +rte_lcore_to_socket_id(unsigned int lcore_id) +{ + return lcore_config[lcore_id].socket_id; +} + +enum rte_lcore_state_t +rte_lcore_state(unsigned lcore_id) +{ + return lcore_config[lcore_id].state; +} + +int +rte_lcore_return_code(unsigned lcore_id) +{ + return lcore_config[lcore_id].ret; +} + + static int socket_id_cmp(const void *a, const void *b) { diff --git a/lib/librte_eal/common/include/rte_lcore.h b/lib/librte_eal/common/include/rte_lcore.h index dea17f500065..7477ed2d9550 100644 --- a/lib/librte_eal/common/include/rte_lcore.h +++ b/lib/librte_eal/common/include/rte_lcore.h @@ -121,15 +121,7 @@ rte_lcore_count(void) * @return * The relative index, or -1 if not enabled. */ -static inline int -rte_lcore_index(int lcore_id) -{ - if (lcore_id >= RTE_MAX_LCORE) - return -1; - if (lcore_id < 0) - lcore_id = (int)rte_lcore_id(); - return lcore_config[lcore_id].core_index; -} +int rte_lcore_index(int lcore_id); /** * Return the ID of the physical socket of the logical core we are @@ -177,11 +169,37 @@ rte_socket_id_by_idx(unsigned int idx); * @return * the ID of lcoreid's physical socket */ -static inline unsigned -rte_lcore_to_socket_id(unsigned lcore_id) -{ - return lcore_config[lcore_id].socket_id; -} +unsigned rte_lcore_to_socket_id(unsigned lcore_id); + +/** + * Return the id of the lcore on a socket starting from zero. + * + * @param lcore_id + * The targeted lcore, or -1 for the current one. + * @return + * The relative index, or -1 if not enabled. + */ +int rte_lcore_to_cpu_id(int lcore_id); + +/** + * Return the cpuset for a given lcore. + * @param lcore_id + * the targeted lcore, which MUST be between 0 and RTE_MAX_LCORE-1. + * @return + * The cpuset of that lcore + */ +rte_cpuset_t rte_lcore_cpuset(unsigned lcore_id); + +/** + * Get the return code from a lcore thread. + * @param lcore_id + * the targeted lcore, which MUST be between 0 and RTE_MAX_LCORE-1 + * and finished + * @return + * the return code from the lcore thread + */ +int __rte_experimental +rte_lcore_return_code(unsigned lcore_id); /** * Test if an lcore is enabled. @@ -201,6 +219,17 @@ rte_lcore_is_enabled(unsigned lcore_id) return cfg->lcore_role[lcore_id] == ROLE_RTE; } +/** + * Get the state of an lcore ID. + * + * @param lcore_id + * the targeted lcore, which MUST be between 0 and RTE_MAX_LCORE-1. + * @return + * the current state of that lcore + */ +enum rte_lcore_state_t __rte_experimental +rte_lcore_state(unsigned lcore_id); + /** * Get the next enabled lcore ID. * From patchwork Wed Apr 3 17:16:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 52212 X-Patchwork-Delegate: thomas@monjalon.net 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 A9EDD1B51A; Wed, 3 Apr 2019 19:16:28 +0200 (CEST) Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com [209.85.210.195]) by dpdk.org (Postfix) with ESMTP id C3A041B508 for ; Wed, 3 Apr 2019 19:16:18 +0200 (CEST) Received: by mail-pf1-f195.google.com with SMTP id 8so8481644pfr.4 for ; Wed, 03 Apr 2019 10:16:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=c40HeXx52VHI2D46+ok2id6Yb3hqj92EcHgJ5otlbYg=; b=b52/GCVeLA+4SF6BWfTKLGvPGQ1sk+Zo2Tji+TZgVSEGp2b46k5LmGVI/CM3qTiXuA oXvGoOMXaDGeh7pSaBBa52/eu0ARyd7rD7+syQgWgtwqwnreIju2DxPVNZU17O8MqKdi kAj3m00Z1ZiCpn/L8RH1WdeOPu0fLfBs4+9fEVlhqvir+HV58FDtjERZlkUtC7OiHeIQ CLaaOtW7+KZt78Qdwc178/ElEyU7rPGMFn0dsq469Jq+rG4++YU01GYWV5nxADh8QU2U L4dC87c0gvtWlhjhdc74fgY1zvQ/Oq1fApb0hvZFHyokKcAZ0G/BwPUQU8bfdwXTsRlz LtTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=c40HeXx52VHI2D46+ok2id6Yb3hqj92EcHgJ5otlbYg=; b=XszNGzqDZ5KhQPYlA40T4Xv4AlveheGjzTwbPt1ySqXMuciod0VhJ0Ulf/nZLZhIjT Rn/QF46HGEKuAD3Lz5Q/nRKg0dE2PAoqBLBkoxNGVptxOAcU23RmrrNBIBmD88B8Grv6 y3vOyku7uCY76liAVMeKctccbE09WxDIIDOeITy3FdAgRVEew0s/pYGHbpd5ymeDFasX 0wKK88csXaJZSNKDa49Xte7YE+ig959PhqmoD2zllJisiQjP7JAVhC0qZFzyp7IGO6L2 Xq8m/W0Qne85rH4xWPS2i2OlHdXfncIFUx4rqa3YtG52QyETWj6zLueXzB/7ez/mZktb VO+g== X-Gm-Message-State: APjAAAXVbbvCbIKv6geNsf6NBgcoHzogOfcHZ0kdFWO5lF5Ah1qC8MaW rBSfDPtSxegx+9ZIdECCf2eiJQNzb2V5Jg== X-Google-Smtp-Source: APXvYqxK/RTn8dB2i5OPl7UdILqpPR0G8eNm8sW/gzTZOrfcq70Bn8SGIqjhwob8CxrYj3+FzF57Ig== X-Received: by 2002:a62:b40b:: with SMTP id h11mr554917pfn.133.1554311777560; Wed, 03 Apr 2019 10:16:17 -0700 (PDT) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id k14sm23041693pfb.125.2019.04.03.10.16.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Apr 2019 10:16:16 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Wed, 3 Apr 2019 10:16:07 -0700 Message-Id: <20190403171610.23970-3-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190403171610.23970-1-stephen@networkplumber.org> References: <20190403171610.23970-1-stephen@networkplumber.org> Subject: [dpdk-dev] [RFC 2/5] bus: use lcore accessor functions 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" The lcore_config structure will be hidden in future release. Signed-off-by: Stephen Hemminger --- drivers/bus/dpaa/dpaa_bus.c | 6 ++++-- drivers/bus/fslmc/portal/dpaa2_hw_dpio.c | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c index ac20eccd53c1..08c822781d9d 100644 --- a/drivers/bus/dpaa/dpaa_bus.c +++ b/drivers/bus/dpaa/dpaa_bus.c @@ -254,6 +254,7 @@ int rte_dpaa_portal_init(void *arg) unsigned int cpu, lcore = rte_lcore_id(); int ret; struct dpaa_portal *dpaa_io_portal; + rte_cpuset_t cpuset; BUS_INIT_FUNC_TRACE(); @@ -263,12 +264,13 @@ int rte_dpaa_portal_init(void *arg) if (lcore >= RTE_MAX_LCORE) return -1; - cpu = lcore_config[lcore].core_id; + cpu = rte_lcore_to_cpu_id(lcore); /* Set CPU affinity for this thread.*/ id = pthread_self(); + cpuset = rte_lcore_cpuset(lcore); ret = pthread_setaffinity_np(id, sizeof(cpu_set_t), - &lcore_config[lcore].cpuset); + &cpuset); if (ret) { DPAA_BUS_LOG(ERR, "pthread_setaffinity_np failed on core :%u" " (lcore=%u) with ret: %d", cpu, lcore, ret); diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c index 7bcbde840e63..8efb24af5c6a 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c @@ -366,7 +366,9 @@ dpaa2_check_lcore_cpuset(void) for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) { for (i = 0; i < RTE_MAX_LCORE; i++) { - if (CPU_ISSET(i, &lcore_config[lcore_id].cpuset)) { + rte_cpuset_t cpuset = rte_lcore_cpuset(lcore_id); + + if (CPU_ISSET(i, &cpuset)) { RTE_LOG(DEBUG, EAL, "lcore id = %u cpu=%u\n", lcore_id, i); if (dpaa2_cpu[lcore_id] != 0xffffffff) { From patchwork Wed Apr 3 17:16:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 52214 X-Patchwork-Delegate: thomas@monjalon.net 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 EA5501B526; Wed, 3 Apr 2019 19:16:33 +0200 (CEST) Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) by dpdk.org (Postfix) with ESMTP id 6B0241B508 for ; Wed, 3 Apr 2019 19:16:20 +0200 (CEST) Received: by mail-pg1-f177.google.com with SMTP id y3so8633868pgk.12 for ; Wed, 03 Apr 2019 10:16:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=drsG6PqUHfe0cZHXQkrmqsDsFyPzAKvwVmFq3y9Ur0U=; b=nks9B+FUAAqngDpnnSaLA8lU4dJUbk8jQm7hyn0H3uXwtmfhuG5V6E6W2ynzbZff7m WglxuFSzSMJQJOfea8dFbhUr2SSWOsngEOUDFY+clEMKhfTm31JIbmm696lEcsFF8v2f SCJn6bJd4dl1u7LgFvIFcIAIHyfTDFaQlG2I+RUoty/KU3hHDaIymiJf2AfHI7z4BVYY No4tgrSctHbO5AS/bJZUtVnLB8qgho7c5WqyNlHM6zbic8wT0884l5CQCXnt2EBgkBFu /HRg0n8cszwJ5/vP8zMTebbzLqH1H7Y2ZqXql2eO4OKoeRIugc9rAtVdpW8dGOr5JzIA 4wBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=drsG6PqUHfe0cZHXQkrmqsDsFyPzAKvwVmFq3y9Ur0U=; b=CFiow2KdgqSaK/MWVo1ZkEuE90wQhGpAPRn9dNY/EPZo31tAwnQMyJqSN66TESDMCv Kgv5FBI7X+MFUnBSWxC4HY97C89xgZJTaXQh696kKhfF8k3WjdgUmgCS9uq76rUo8rWw GeoTMv9x8Jd9QlBtJkkRBxqk90rHnDQOawkTkyKqVnso7nrdRTCOiYPdGnbxvdBtViWZ Jm0NIy3grVEkeaImohd+FzO7F+kGV2XPXbFHovgUYplmOvbthzKsfggXzlC/sBZ6cBFB U1VaMOAEI+WT4eNKjlUt3zh5v3rsDj1xtLyy+N/8d/HJUdLbM42WK8EiXTurH3e8F9Oj 04FA== X-Gm-Message-State: APjAAAUGAw3usalH0oY1VVcoI8NyRZRwTngVtZLWVetw1lFmKQk7bVrN vjKVhsoKNtmOvRsRRmXqk6lRGhXEHYkarA== X-Google-Smtp-Source: APXvYqwS09r+4Vt18+kVE2PD1c5AHFBHNAf7NPPC0Pwl5l+u/M3VRle+K1KCMZU5IdTZ9e/H4X0dhA== X-Received: by 2002:a62:ee13:: with SMTP id e19mr584127pfi.224.1554311778941; Wed, 03 Apr 2019 10:16:18 -0700 (PDT) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id k14sm23041693pfb.125.2019.04.03.10.16.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Apr 2019 10:16:17 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Wed, 3 Apr 2019 10:16:08 -0700 Message-Id: <20190403171610.23970-4-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190403171610.23970-1-stephen@networkplumber.org> References: <20190403171610.23970-1-stephen@networkplumber.org> Subject: [dpdk-dev] [RFC 3/5] examples/bond: use lcore accessor 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" Refering to lcore_config directly is no longer recommended. Signed-off-by: Stephen Hemminger --- examples/bond/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/bond/main.c b/examples/bond/main.c index ef86194fff4a..48e6755ea294 100644 --- a/examples/bond/main.c +++ b/examples/bond/main.c @@ -526,8 +526,8 @@ static void cmd_start_parsed(__attribute__((unused)) void *parsed_result, int slave_core_id = rte_lcore_id(); rte_spinlock_trylock(&global_flag_stru_p->lock); - if (global_flag_stru_p->LcoreMainIsRunning == 0) { - if (lcore_config[global_flag_stru_p->LcoreMainCore].state != WAIT) { + if (global_flag_stru_p->LcoreMainIsRunning == 0) { + if (rte_lcore_state(global_flag_stru_p->LcoreMainCore) != WAIT) { rte_spinlock_unlock(&global_flag_stru_p->lock); return; } From patchwork Wed Apr 3 17:16:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 52216 X-Patchwork-Delegate: thomas@monjalon.net 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 886541B544; Wed, 3 Apr 2019 19:16:39 +0200 (CEST) Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) by dpdk.org (Postfix) with ESMTP id 7D26F1B4ED for ; Wed, 3 Apr 2019 19:16:21 +0200 (CEST) Received: by mail-pl1-f176.google.com with SMTP id cv12so8355823plb.9 for ; Wed, 03 Apr 2019 10:16:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=VLdGgOA7gWOU0pRdlnAPc9jYagTNPPVxr2crds8eLac=; b=mIzMCEIR213ZWxGjQcPHTcrGh5RqNP3oCK+fXE+t2pHaVL+bFii7cvCyMd8pjloPSh b3j7dC4Rb8go4j3bwAk8xetfd2aGZcPJPs6OnphSRC6OaPJBp7W81B6x+YYUHyg84qHr Jk6nOr9xghlXLR2NOCOSN5RfcO9RUPONdsTfXMqZS7ncpIy4ergytB9QjB/kIfyU1vjP 0yLjnt8DWMGYEJ/l4gvCRRgzCaa3g6638AKWmulr9UC/gNG9AUrI/Kg+bIhloeJ60mSW 3eOXhANmoxRoIfir4v9NRHhQUvOqOlQeTAHIXUOzpTUVl05KK1TJIhs7FhPHWYYCab1z +4vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=VLdGgOA7gWOU0pRdlnAPc9jYagTNPPVxr2crds8eLac=; b=nyxx9mLwQ6g2EabPO7s2lzVV1vokdyQcvbvjdNWcQfyZRIRl00lZ3QC9kGZtqSko+F acf+X/U12WvCMRhnHO0zzbwa8JiwbJeN+2yaJxaU9deHxKiREAQQR+Aha6HsYotAV6Fj zF6/qh2txZUl4Ex4z1KK7pxvXd/YZhEGes8m7DGI94opPfVk6CJXo2nG0RX1mhSsyxxJ /WG0oB4HBvAZbwnwo9945y0FIwa7BPVJKZxIQIoh7G9nX8R5Y5M7XUU4OmB99rBOmDWv M/mVf9YlKESLZu2d9ZB3IquDO0wnXCG7nafSzaYfwkbk3S5Pq2Zjf/r+3SMTTtZLmWd0 sf3w== X-Gm-Message-State: APjAAAVVo0jo0XD6h2590+AjUo8eeaqqFbek9vdxlikJ/cgZsTFAe0HQ 6yPAqEJUBbUMSY+5kkyWBFUsTBpc2Zk2mg== X-Google-Smtp-Source: APXvYqxubdvH4JItNrDNWnk2nSCMDsd7StIFMCosdk+s0lRxH2E+R3g5U2OdZ8lHBpB0taV5x69uGQ== X-Received: by 2002:a17:902:784d:: with SMTP id e13mr1172560pln.152.1554311780392; Wed, 03 Apr 2019 10:16:20 -0700 (PDT) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id k14sm23041693pfb.125.2019.04.03.10.16.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Apr 2019 10:16:19 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Wed, 3 Apr 2019 10:16:09 -0700 Message-Id: <20190403171610.23970-5-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190403171610.23970-1-stephen@networkplumber.org> References: <20190403171610.23970-1-stephen@networkplumber.org> Subject: [dpdk-dev] [RFC 4/5] app/test: use lcore accessor functions 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" Don't refer to lcore_config directly. Signed-off-by: Stephen Hemminger --- app/test/test_cryptodev.c | 2 +- app/test/test_hash_readwrite_lf.c | 12 ++++++------ app/test/test_ring_perf.c | 22 ++++++++++++---------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index 2ff204137157..55c5ef7d97a9 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -378,7 +378,7 @@ testsuite_setup(void) strcpy(temp_str, vdev_args); strlcat(temp_str, ";", sizeof(temp_str)); slave_core_count++; - socket_id = lcore_config[i].socket_id; + socket_id = rte_lcore_to_socket_id(i); } if (slave_core_count != 2) { RTE_LOG(ERR, USER1, diff --git a/app/test/test_hash_readwrite_lf.c b/app/test/test_hash_readwrite_lf.c index cbfd9322696b..4968d5b49dcd 100644 --- a/app/test/test_hash_readwrite_lf.c +++ b/app/test/test_hash_readwrite_lf.c @@ -622,7 +622,7 @@ test_hash_add_no_ks_lookup_hit(struct rwc_perf *rwc_perf_results, int rwc_lf, rte_eal_mp_wait_lcore(); for (i = 1; i <= rwc_core_cnt[n]; i++) - if (lcore_config[i].ret < 0) + if (rte_lcore_return_code(i) < 0) goto err; unsigned long long cycles_per_lookup = @@ -694,7 +694,7 @@ test_hash_add_no_ks_lookup_miss(struct rwc_perf *rwc_perf_results, int rwc_lf, if (ret < 0) goto err; for (i = 1; i <= rwc_core_cnt[n]; i++) - if (lcore_config[i].ret < 0) + if (rte_lcore_return_code(i) < 0) goto err; unsigned long long cycles_per_lookup = @@ -770,7 +770,7 @@ test_hash_add_ks_lookup_hit_non_sp(struct rwc_perf *rwc_perf_results, if (ret < 0) goto err; for (i = 1; i <= rwc_core_cnt[n]; i++) - if (lcore_config[i].ret < 0) + if (rte_lcore_return_code(i) < 0) goto err; unsigned long long cycles_per_lookup = @@ -846,7 +846,7 @@ test_hash_add_ks_lookup_hit_sp(struct rwc_perf *rwc_perf_results, int rwc_lf, if (ret < 0) goto err; for (i = 1; i <= rwc_core_cnt[n]; i++) - if (lcore_config[i].ret < 0) + if (rte_lcore_return_code(i) < 0) goto err; unsigned long long cycles_per_lookup = @@ -921,7 +921,7 @@ test_hash_add_ks_lookup_miss(struct rwc_perf *rwc_perf_results, int rwc_lf, int if (ret < 0) goto err; for (i = 1; i <= rwc_core_cnt[n]; i++) - if (lcore_config[i].ret < 0) + if (rte_lcore_return_code(i) < 0) goto err; unsigned long long cycles_per_lookup = @@ -1022,7 +1022,7 @@ test_hash_multi_add_lookup(struct rwc_perf *rwc_perf_results, int rwc_lf, rte_eal_mp_wait_lcore(); for (i = 1; i <= rwc_core_cnt[n]; i++) - if (lcore_config[i].ret < 0) + if (rte_lcore_return_code(i) < 0) goto err; unsigned long long cycles_per_lookup = diff --git a/app/test/test_ring_perf.c b/app/test/test_ring_perf.c index ebb3939f51d0..6eccccfe93b4 100644 --- a/app/test/test_ring_perf.c +++ b/app/test/test_ring_perf.c @@ -52,10 +52,11 @@ get_two_hyperthreads(struct lcore_pair *lcp) RTE_LCORE_FOREACH(id2) { if (id1 == id2) continue; - c1 = lcore_config[id1].core_id; - c2 = lcore_config[id2].core_id; - s1 = lcore_config[id1].socket_id; - s2 = lcore_config[id2].socket_id; + + c1 = rte_lcore_to_cpu_id(id1); + c2 = rte_lcore_to_cpu_id(id2); + s1 = rte_lcore_to_socket_id(id1); + s2 = rte_lcore_to_socket_id(id2); if ((c1 == c2) && (s1 == s2)){ lcp->c1 = id1; lcp->c2 = id2; @@ -75,10 +76,11 @@ get_two_cores(struct lcore_pair *lcp) RTE_LCORE_FOREACH(id2) { if (id1 == id2) continue; - c1 = lcore_config[id1].core_id; - c2 = lcore_config[id2].core_id; - s1 = lcore_config[id1].socket_id; - s2 = lcore_config[id2].socket_id; + + c1 = rte_lcore_to_cpu_id(id1); + c2 = rte_lcore_to_cpu_id(id2); + s1 = rte_lcore_to_socket_id(id1); + s2 = rte_lcore_to_socket_id(id2); if ((c1 != c2) && (s1 == s2)){ lcp->c1 = id1; lcp->c2 = id2; @@ -98,8 +100,8 @@ get_two_sockets(struct lcore_pair *lcp) RTE_LCORE_FOREACH(id2) { if (id1 == id2) continue; - s1 = lcore_config[id1].socket_id; - s2 = lcore_config[id2].socket_id; + s1 = rte_lcore_to_socket_id(id1); + s2 = rte_lcore_to_socket_id(id2); if (s1 != s2){ lcp->c1 = id1; lcp->c2 = id2; From patchwork Wed Apr 3 17:16:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 52218 X-Patchwork-Delegate: thomas@monjalon.net 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 D3E3D1B552; Wed, 3 Apr 2019 19:16:43 +0200 (CEST) Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by dpdk.org (Postfix) with ESMTP id 4F33B1B4ED for ; Wed, 3 Apr 2019 19:16:23 +0200 (CEST) Received: by mail-pl1-f172.google.com with SMTP id cv12so8355862plb.9 for ; Wed, 03 Apr 2019 10:16:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=1Wyg4VdHfKq4QGssJQdDeYpiRXh7Nvcr53RdAB9586o=; b=RjTYdXZBshmmzJqa0wiIJ+DrM8wSwTBqGX1/uzyp54zk1h4CV3/g1v+OslZxt9jY14 G5NhVFyq9VMWu6iFzIPR5pETrKveoGAkzWZ5za6eGiUOYi+i2klV125ZMh+ovUyMEUXL /Tpof4fE92Qbxk5X9z4/+Ml4l7dZX4Id460ahxpyD4hb31pXX0DTsoEt8a5/+DnvgTPh 3MRIt5m6MoVL+yvIRhjuRyb5bKbxJEn3olCD9TNMk3yjxFiE0k5ozseZjPk0DVdelvRd 1qVdlvvKFsPd80EhXu+nFGX7b9IeMo8/jscOs30thdMUI61FPBR6uRpDDRjPI/NtuEP4 BF8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=1Wyg4VdHfKq4QGssJQdDeYpiRXh7Nvcr53RdAB9586o=; b=ToV7mqKmYj8JyOmivrnNVtvg6QUfkJ64cv/v9y+qMN9wld/pdrl9OjUuaOsKYzeJYc 3RlVK9RlVDDIlX95aoN4pjxj8cl/UFTuf112t1hNuvIQryXKEtQoXcU+53r3dcAuY4zm rpqRcDiH/CKAHmD2aHeyPer9alm+/AZFX/uV7r4YZ/L0aTQUtG71wlzZunRYmql9L3t6 XkbLgkohoGAPtsz0srnRxw7QylMf4mt0PNGVKFuOJSSAz+FuTRoL0Pd0vg60dv//U2Vh UTYthLIUs2tC0PRTMO+bo+kxZ+8dz5GDc7wWWmFvdN5pXFBFfPFImhK0yXN8N1GwOch9 lwIw== X-Gm-Message-State: APjAAAWOObkVyFJ3dyURlJWUgJGpPVyNeO6au45ut+VH705IoRS4SlU6 Hje7UDqFrWeGN977Sn+Lu4F4EOlwHDKP/A== X-Google-Smtp-Source: APXvYqxfo1teMIlQr4CFDz52PC+g6Fb/RVL/GS68nomuCJ+Tcl644cRYhn6PWKoR4naTuw4B4Cti8Q== X-Received: by 2002:a17:902:bd92:: with SMTP id q18mr1159957pls.136.1554311782179; Wed, 03 Apr 2019 10:16:22 -0700 (PDT) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id k14sm23041693pfb.125.2019.04.03.10.16.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Apr 2019 10:16:20 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Wed, 3 Apr 2019 10:16:10 -0700 Message-Id: <20190403171610.23970-6-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190403171610.23970-1-stephen@networkplumber.org> References: <20190403171610.23970-1-stephen@networkplumber.org> Subject: [dpdk-dev] [RFC 5/5] eal: make lcore_config private 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" The internal structure of lcore_config should not be part of visible API/ABI. Make it private to EAL. Rearrange and resize the fields in the structure so it takes less memory (and cache footprint). Signed-off-by: Stephen Hemminger --- lib/librte_eal/common/eal_common_launch.c | 2 ++ lib/librte_eal/common/eal_private.h | 22 +++++++++++++++++++++ lib/librte_eal/common/include/rte_lcore.h | 24 ----------------------- lib/librte_eal/common/rte_service.c | 2 ++ lib/librte_eal/rte_eal_version.map | 1 - 5 files changed, 26 insertions(+), 25 deletions(-) diff --git a/lib/librte_eal/common/eal_common_launch.c b/lib/librte_eal/common/eal_common_launch.c index fe0ba3f0d617..cf52d717f68e 100644 --- a/lib/librte_eal/common/eal_common_launch.c +++ b/lib/librte_eal/common/eal_common_launch.c @@ -15,6 +15,8 @@ #include #include +#include "eal_private.h" + /* * Wait until a lcore finished its job. */ diff --git a/lib/librte_eal/common/eal_private.h b/lib/librte_eal/common/eal_private.h index 798ede553b21..25e80547904f 100644 --- a/lib/librte_eal/common/eal_private.h +++ b/lib/librte_eal/common/eal_private.h @@ -10,6 +10,28 @@ #include #include +#include + +/** + * Structure storing internal configuration (per-lcore) + */ +struct lcore_config { + uint32_t core_id; /**< core number on socket for this lcore */ + uint32_t core_index; /**< relative index, starting from 0 */ + uint16_t socket_id; /**< physical socket id for this lcore */ + uint8_t core_role; /**< role of core eg: OFF, RTE, SERVICE */ + uint8_t detected; /**< true if lcore was detected */ + volatile enum rte_lcore_state_t state; /**< lcore state */ + rte_cpuset_t cpuset; /**< cpu set which the lcore affinity to */ + pthread_t thread_id; /**< pthread identifier */ + int pipe_master2slave[2]; /**< communication pipe with master */ + int pipe_slave2master[2]; /**< communication pipe with master */ + lcore_function_t * volatile f; /**< function to call */ + void * volatile arg; /**< argument of function */ + volatile int ret; /**< return value of function */ +}; + +extern struct lcore_config lcore_config[RTE_MAX_LCORE]; /** * Initialize the memzone subsystem (private to eal). diff --git a/lib/librte_eal/common/include/rte_lcore.h b/lib/librte_eal/common/include/rte_lcore.h index 7477ed2d9550..0b157b3e07ce 100644 --- a/lib/librte_eal/common/include/rte_lcore.h +++ b/lib/librte_eal/common/include/rte_lcore.h @@ -37,30 +37,6 @@ typedef cpuset_t rte_cpuset_t; } while (0) #endif -/** - * Structure storing internal configuration (per-lcore) - */ -struct lcore_config { - unsigned detected; /**< true if lcore was detected */ - pthread_t thread_id; /**< pthread identifier */ - int pipe_master2slave[2]; /**< communication pipe with master */ - int pipe_slave2master[2]; /**< communication pipe with master */ - lcore_function_t * volatile f; /**< function to call */ - void * volatile arg; /**< argument of function */ - volatile int ret; /**< return value of function */ - volatile enum rte_lcore_state_t state; /**< lcore state */ - unsigned socket_id; /**< physical socket id for this lcore */ - unsigned core_id; /**< core number on socket for this lcore */ - int core_index; /**< relative index, starting from 0 */ - rte_cpuset_t cpuset; /**< cpu set which the lcore affinity to */ - uint8_t core_role; /**< role of core eg: OFF, RTE, SERVICE */ -}; - -/** - * Internal configuration (per-lcore) - */ -extern struct lcore_config lcore_config[RTE_MAX_LCORE]; - RTE_DECLARE_PER_LCORE(unsigned, _lcore_id); /**< Per thread "lcore id". */ RTE_DECLARE_PER_LCORE(rte_cpuset_t, _cpuset); /**< Per thread "cpuset". */ diff --git a/lib/librte_eal/common/rte_service.c b/lib/librte_eal/common/rte_service.c index 5f75e5a53fbf..8d53d966446a 100644 --- a/lib/librte_eal/common/rte_service.c +++ b/lib/librte_eal/common/rte_service.c @@ -21,6 +21,8 @@ #include #include +#include "eal_private.h" + #define RTE_SERVICE_NUM_MAX 64 #define SERVICE_F_REGISTERED (1 << 0) diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map index d6e375135ad1..291e56dabc91 100644 --- a/lib/librte_eal/rte_eal_version.map +++ b/lib/librte_eal/rte_eal_version.map @@ -4,7 +4,6 @@ DPDK_2.0 { __rte_panic; eal_parse_sysfs_value; eal_timer_source; - lcore_config; per_lcore__lcore_id; per_lcore__rte_errno; rte_calloc;