From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 320B0A2EDB for ; Wed, 2 Oct 2019 21:40:48 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 233251BF59; Wed, 2 Oct 2019 21:40:47 +0200 (CEST) Received: from mail-pf1-f194.google.com (mail-pf1-f194.google.com [209.85.210.194]) by dpdk.org (Postfix) with ESMTP id 3AB061BF54 for ; Wed, 2 Oct 2019 21:40:45 +0200 (CEST) Received: by mail-pf1-f194.google.com with SMTP id q10so40509pfl.0 for ; Wed, 02 Oct 2019 12:40:45 -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 :mime-version:content-transfer-encoding; bh=/TW/+6CJh/B5GF9WUO+WMZn5rrHZBYGBEC7268GO8XQ=; b=B5kzcDeGdPK88+XVfMRg0sD90/ZCnVJAMtoHZ5VFSIqKJVRIEfdKre+ddh4SR2L3HF msHwrFI+6Wezj6VGuVB7sqynGMbC2vaXfk8838owkJODFee5IvwerITNyK8XjSMHKYBD BA5n1BItyY6VpX6iXOzzYXRIHxW9SeOt3gs/b4wsiTRH7grKX9EcUbMEfDFKvprvJVu+ 0rSLFW9Gtu3YbNz103gvqO1jeQWEqLxOMkdFAHr0Zdaci5EplAo5tMUDUYm40oyL0E63 KJuWL8zpUeO+rwkVdlRU57v5fWAovZjej5gg9e+tEhXpUg1qhVJV8sEgV7895CUxHda7 IbxA== 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:mime-version:content-transfer-encoding; bh=/TW/+6CJh/B5GF9WUO+WMZn5rrHZBYGBEC7268GO8XQ=; b=f/fNl2Dh7A+GfcMeKjfZHUPMuOi6kk33nAeKsHssJZhI13NMWfbCgW5mubAmZBRZ2h vFbYSHQdcU2h4T4EMW/I8jMhzoxb1+K27sVibC0QdHztY/j/NjpAQjo2UlnX+vZVelXN 7nu4rEayDD6jIUQ8WHWEVOrM5HxirtgRWbWYVSGcEbz8fOjr6pw/GZyykf2zOXsTAQRG 20qjQEfC6H7WkdgEHHEIexBUtIVHV/1V0gD9ONtIWacUL4gjOcoH11UPTLiAPfhQFM9o aAJh4Uo74XN2ylLAszFdxb9Zm8qYL03c8F5M4jjXTfZPU/jH+DrdAl2o5HMv9yf6tk0f NpZg== X-Gm-Message-State: APjAAAV+rn1tJvufx8Z9GEFUM1BvSxfXXC+7LC9Ef7bRNu8PsNGAptaB OefOWTEC/oGC3essPPBFcBfgbRVjGhn7ag== X-Google-Smtp-Source: APXvYqyfgTTRdBUNa87c1ycscSBnP/H0CmVmXRWiu6X6SFNd2WylzkSg5mWqxYnnX6TTbUzzBJWQHQ== X-Received: by 2002:a62:fc8c:: with SMTP id e134mr6710110pfh.132.1570045243755; Wed, 02 Oct 2019 12:40:43 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id w134sm264161pfd.4.2019.10.02.12.40.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Oct 2019 12:40:42 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Wed, 2 Oct 2019 12:40:24 -0700 Message-Id: <20191002194024.28782-1-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190925161013.3656-1-stephen@networkplumber.org> References: <20190925161013.3656-1-stephen@networkplumber.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v8] 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 is no longer 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 --- v8 - update release notes rearrange to move cpuset to second cache line doc/guides/rel_notes/deprecation.rst | 4 ---- doc/guides/rel_notes/release_19_11.rst | 2 ++ lib/librte_eal/common/eal_common_launch.c | 2 ++ lib/librte_eal/common/eal_private.h | 24 +++++++++++++++++++++++ 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 - lib/librte_eal/windows/eal/eal_thread.c | 1 + 8 files changed, 31 insertions(+), 29 deletions(-) diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 0ee8533b133c..89811a622591 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -23,10 +23,6 @@ Deprecation Notices * eal: The function ``rte_eal_remote_launch`` will return new error codes after read or write error on the pipe, instead of calling ``rte_panic``. -* eal: The ``lcore_config`` struct and global symbol will be made private to - remove it from the externally visible ABI and allow it to be updated in the - future. - * eal: both declaring and identifying devices will be streamlined in v18.11. New functions will appear to query a specific port from buses, classes of device and device drivers. Device declaration will be made coherent with the diff --git a/doc/guides/rel_notes/release_19_11.rst b/doc/guides/rel_notes/release_19_11.rst index 27cfbd9e38c6..e8d4f9d2ba28 100644 --- a/doc/guides/rel_notes/release_19_11.rst +++ b/doc/guides/rel_notes/release_19_11.rst @@ -110,6 +110,8 @@ ABI Changes Also, make sure to start the actual text at the margin. ========================================================= +* eal: The ``lcore_config`` struct and global symbol are now private. + Shared Library Versions ----------------------- 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..e63eaa5d262d 100644 --- a/lib/librte_eal/common/eal_private.h +++ b/lib/librte_eal/common/eal_private.h @@ -10,6 +10,30 @@ #include #include +#include + +/** + * Structure storing internal configuration (per-lcore) + */ +struct lcore_config { + 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 */ + + 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 */ +}; + +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 c86f72eb12a8..0c683919564e 100644 --- a/lib/librte_eal/common/include/rte_lcore.h +++ b/lib/librte_eal/common/include/rte_lcore.h @@ -66,30 +66,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 c3653ebae46c..6e21f549051b 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 7cbf82d37b0a..aeedf397764f 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; diff --git a/lib/librte_eal/windows/eal/eal_thread.c b/lib/librte_eal/windows/eal/eal_thread.c index 906502f90982..0591d4c7fb06 100644 --- a/lib/librte_eal/windows/eal/eal_thread.c +++ b/lib/librte_eal/windows/eal/eal_thread.c @@ -12,6 +12,7 @@ #include #include +#include "eal_private.h" RTE_DEFINE_PER_LCORE(unsigned int, _lcore_id) = LCORE_ID_ANY; -- 2.20.1