From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B7A25A00C3; Thu, 12 May 2022 15:14:35 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 61788410EF; Thu, 12 May 2022 15:14:35 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 7B62240E64 for ; Thu, 12 May 2022 15:14:33 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id C501020ECB88; Thu, 12 May 2022 06:14:32 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com C501020ECB88 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1652361272; bh=jlMqMusjenGnxUOHoBwD9TrgldrD9yW56tuq7LLplzo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=co94EHUAVLikybM29JZr3rWmMb2ZOGBZCb7wnoDMT/MByyCH4ebaMYnWVlHyAWiL8 cJv8TzRR6QCX2HhwXR9hfikYQXzFfQKTLKeg22qMc6rkFhb3NyqIthcIWxFRgAsxCW ZRmHTTVa0d7gkCyjt6ck5fUlbPRAHXpRh9rOv8rg= From: Tyler Retzlaff To: dev@dpdk.org Cc: thomas@monjalon.net, dmitry.kozliuk@gmail.com, anatoly.burakov@intel.com, Tyler Retzlaff Subject: [PATCH v6 0/3] add eal functions for thread affinity and self Date: Thu, 12 May 2022 06:14:27 -0700 Message-Id: <1652361270-27116-1-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1648819793-18948-1-git-send-email-roretzla@linux.microsoft.com> References: <1648819793-18948-1-git-send-email-roretzla@linux.microsoft.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org this series provides basic dependencies for additional eal thread api additions. series includes * basic platform error number conversion. * function to get current thread identifier. * functions to get and set affinity with platform agnostic thread identifier. * minimal unit test of get and set affinity demonstrating usage. note: previous series introducing these functions is now superseded by this series. http://patches.dpdk.org/project/dpdk/list/?series=20472&state=* v6: * rebase for asan flag addition to app/test/meson.build * RTE_BUILD_BUG_ON(sizeof(pthread_t) > sizeof(uintptr_t)) to raise attention if pthread_t implementation exceeds storage available from uintptr_t. note: the macro is placed in rte_thread_self() body because it not valid syntax at file scope of the translation unit. ordinarily the macro would be used in headers but that would leak the pthread_t implementation detail into the public header. v5: * use rte_log instead of log_early. it appears that logging is now initialized before the call to eal_query_group_affinity. note: removal of log_early is off-topic for this series and will be done separately. * rte_log DEBUG for failure related to limitation where all processors must be in the same processor group. * remove redundant tests. get/get/compare, set/get/compare are both retained. v4: * combine patch eal/windows: translate Windows errors to errno-style errors into eal: implement functions for get/set thread affinity patch. the former introduced static functions that were not used without eal: implement functions for get/set thread affinity which would cause a build break when applied standalone. * remove struct tag from rte_thread_t struct typedef. * remove rte_ prefix from rte_convert_cpuset_to_affinity static function. v3: * fix memory leak on eal_create_cpu_map error paths. v2: * add missing boilerplate comments warning of experimental api for rte_thread_{set,get}_affinity_by_id(). * don't break literal format string to log_early to improve searchability. * fix multi-line comment style to match file. * return ENOTSUP instead of EINVAL from rte_convert_cpuset_to_affinity() if cpus in set are not part of the same processor group and note limitation in commit message. * expand series to include rte_thread_self(). * modify unit test to remove use of implementation detail and get thread identifier use added rte_thread_self(). * move literal value to rhs when using memcmp in RTE_TEST_ASSERT Tyler Retzlaff (3): eal: add basic thread ID and current thread identifier API eal: implement functions for get/set thread affinity test/threads: add unit test for thread API app/test/meson.build | 2 + app/test/test_threads.c | 81 +++++++++++++++++ lib/eal/include/rte_thread.h | 64 +++++++++++++ lib/eal/unix/rte_thread.c | 29 ++++++ lib/eal/version.map | 5 + lib/eal/windows/eal_lcore.c | 181 +++++++++++++++++++++++++++---------- lib/eal/windows/eal_windows.h | 10 ++ lib/eal/windows/include/rte_os.h | 2 + lib/eal/windows/rte_thread.c | 191 ++++++++++++++++++++++++++++++++++++++- 9 files changed, 517 insertions(+), 48 deletions(-) create mode 100644 app/test/test_threads.c -- 1.8.3.1