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 8FA6E459C6; Wed, 18 Sep 2024 10:55:59 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5CCFE42DE4; Wed, 18 Sep 2024 10:55:59 +0200 (CEST) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id CDBF14025C for ; Wed, 18 Sep 2024 10:55:57 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id 8BA0220F29; Wed, 18 Sep 2024 10:55:57 +0200 (CEST) Received: from dkrd4.smartsharesys.local ([192.168.4.26]) by smartserver.smartsharesystems.com with Microsoft SMTPSVC(6.0.3790.4675); Wed, 18 Sep 2024 10:55:55 +0200 From: =?UTF-8?q?Morten=20Br=C3=B8rup?= To: Jerin Jacob , Sunil Kumar Kori Cc: dev@dpdk.org, =?UTF-8?q?Morten=20Br=C3=B8rup?= Subject: [PATCH] eal: add build-time option to omit trace Date: Wed, 18 Sep 2024 08:55:50 +0000 Message-ID: <20240918085551.231015-1-mb@smartsharesystems.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 18 Sep 2024 08:55:55.0118 (UTC) FILETIME=[924C20E0:01DB09A8] 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 Some applications want to omit the trace feature. Either to reduce the memory footprint, to reduce the exposed attack surface, or for other reasons. This patch adds an option in rte_config.h to include or omit trace in the build. Trace is included by default. Omitting trace works by omitting all trace points. For API and ABI compatibility, the trace feature itself remains. Signed-off-by: Morten Brørup --- app/test/test_trace.c | 11 ++++++++++- config/rte_config.h | 1 + lib/eal/include/rte_trace_point.h | 6 +++++- lib/eal/include/rte_trace_point_register.h | 8 ++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/test/test_trace.c b/app/test/test_trace.c index 00809f433b..7918cc865d 100644 --- a/app/test/test_trace.c +++ b/app/test/test_trace.c @@ -12,7 +12,16 @@ int app_dpdk_test_tp_count; -#ifdef RTE_EXEC_ENV_WINDOWS +#if !defined(RTE_TRACE) + +static int +test_trace(void) +{ + printf("trace omitted at build-time, skipping test\n"); + return TEST_SKIPPED; +} + +#elif defined(RTE_EXEC_ENV_WINDOWS) static int test_trace(void) diff --git a/config/rte_config.h b/config/rte_config.h index dd7bb0d35b..fd6f8a2f1a 100644 --- a/config/rte_config.h +++ b/config/rte_config.h @@ -49,6 +49,7 @@ #define RTE_MAX_TAILQ 32 #define RTE_LOG_DP_LEVEL RTE_LOG_INFO #define RTE_MAX_VFIO_CONTAINERS 64 +#define RTE_TRACE 1 /* bsd module defines */ #define RTE_CONTIGMEM_MAX_NUM_BUFS 64 diff --git a/lib/eal/include/rte_trace_point.h b/lib/eal/include/rte_trace_point.h index 41e2a7f99e..1b60bba043 100644 --- a/lib/eal/include/rte_trace_point.h +++ b/lib/eal/include/rte_trace_point.h @@ -212,6 +212,7 @@ bool rte_trace_point_is_enabled(rte_trace_point_t *tp); __rte_experimental rte_trace_point_t *rte_trace_point_lookup(const char *name); +#ifdef RTE_TRACE /** * @internal * @@ -230,6 +231,7 @@ __rte_trace_point_fp_is_enabled(void) return false; #endif } +#endif /* RTE_TRACE */ /** * @internal @@ -356,6 +358,8 @@ __rte_trace_point_emit_ev_header(void *mem, uint64_t in) return RTE_PTR_ADD(mem, __RTE_TRACE_EVENT_HEADER_SZ); } +#ifdef RTE_TRACE + #define __rte_trace_point_emit_header_generic(t) \ void *mem; \ do { \ @@ -411,7 +415,7 @@ do { \ RTE_SET_USED(len); \ } while (0) - +#endif /* RTE_TRACE */ #endif /* ALLOW_EXPERIMENTAL_API */ #endif /* _RTE_TRACE_POINT_REGISTER_H_ */ diff --git a/lib/eal/include/rte_trace_point_register.h b/lib/eal/include/rte_trace_point_register.h index 41260e5964..78c0ede5f1 100644 --- a/lib/eal/include/rte_trace_point_register.h +++ b/lib/eal/include/rte_trace_point_register.h @@ -18,6 +18,8 @@ extern "C" { RTE_DECLARE_PER_LCORE(volatile int, trace_point_sz); +#ifdef RTE_TRACE + #define RTE_TRACE_POINT_REGISTER(trace, name) \ rte_trace_point_t __rte_section("__rte_trace_point") __##trace; \ static const char __##trace##_name[] = RTE_STR(name); \ @@ -27,6 +29,12 @@ RTE_INIT(trace##_init) \ (void (*)(void)) trace); \ } +#else + +#define RTE_TRACE_POINT_REGISTER(trace, name) + +#endif /* RTE_TRACE */ + #define __rte_trace_point_emit_header_generic(t) \ RTE_PER_LCORE(trace_point_sz) = __RTE_TRACE_EVENT_HEADER_SZ -- 2.43.0