From patchwork Sun May 3 20:31:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 69679 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id BFB06A04AF; Sun, 3 May 2020 22:32:19 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9A69F1D514; Sun, 3 May 2020 22:32:12 +0200 (CEST) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by dpdk.org (Postfix) with ESMTP id 78F3B1D443 for ; Sun, 3 May 2020 22:32:10 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588537929; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DfOgG8Dcb6Wueiki6tsimoJ/g0w5/TXzh2+Wx/NBnaA=; b=cfJIqvlSJDTSwhMc0gGr4Rn0qvToVH7xsL4/ERid9uqQKyc4wqj2k9CDwRp5Ll5eMSaK41 iEDpJunIcSPnGesHRwY20aH5dyd0mE0SYFhdEHyyqhQWGPH291robJs3FnFKyKNHGMdP+n W16fX9LtLKiAeQP+ighqJC08Fwyul5Y= 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-358-HboU2D5sNRKGaJPgcI-irQ-1; Sun, 03 May 2020 16:32:07 -0400 X-MC-Unique: HboU2D5sNRKGaJPgcI-irQ-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D8C08800580; Sun, 3 May 2020 20:32:06 +0000 (UTC) Received: from dmarchan.remote.csb (unknown [10.40.192.236]) by smtp.corp.redhat.com (Postfix) with ESMTP id 05CF06F972; Sun, 3 May 2020 20:32:04 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: thomas@monjalon.net, Declan Doherty , Sunil Kumar Kori Date: Sun, 3 May 2020 22:31:28 +0200 Message-Id: <20200503203135.6493-2-david.marchand@redhat.com> In-Reply-To: <20200503203135.6493-1-david.marchand@redhat.com> References: <20200503203135.6493-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [dpdk-dev] [PATCH 1/8] cryptodev: fix trace points registration 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 trace points are defined but not registered. Fixes: 4cf30e3f3c35 ("cryptodev: add tracepoints") Signed-off-by: David Marchand Acked-by: Sunil Kumar Kori --- lib/librte_cryptodev/cryptodev_trace_points.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/librte_cryptodev/cryptodev_trace_points.c b/lib/librte_cryptodev/cryptodev_trace_points.c index 9df213e25b..7d03c93882 100644 --- a/lib/librte_cryptodev/cryptodev_trace_points.c +++ b/lib/librte_cryptodev/cryptodev_trace_points.c @@ -61,6 +61,12 @@ RTE_INIT(cryptodev_trace_init) RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_asym_session_init, lib.cryptodev.asym.init); + RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_clear, + lib.cryptodev.sym.clear); + + RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_asym_session_clear, + lib.cryptodev.asym.clear); + RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_enqueue_burst, lib.cryptodev.enq.burst); From patchwork Sun May 3 20:31:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 69681 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9A1FDA04AF; Sun, 3 May 2020 22:32:41 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8E9C41D52E; Sun, 3 May 2020 22:32:24 +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 6DE4F1D513 for ; Sun, 3 May 2020 22:32:22 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588537941; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/3YI06BlpIsR0NPmEJEljunRSaKum4nGd2gpkIw1qoc=; b=N7XEzKp2MULsgoz1I93SrHFHi0+JcqMjbhxO7TI6Js0yMJl4AdIPADFME7SKicnADwEqim l76S5e9TIVamiQW6SIZSu0+VEneYxoYgFeL451OvbsCOv4ouizxUnyfNTk5HUqHITDGHIf xJxEDuaN1/3yAU4Z/p0deQQirT4tpSg= 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-171-B-N9MhpxOkGWJ4VymoAhGw-1; Sun, 03 May 2020 16:32:14 -0400 X-MC-Unique: B-N9MhpxOkGWJ4VymoAhGw-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1B65D46B; Sun, 3 May 2020 20:32:12 +0000 (UTC) Received: from dmarchan.remote.csb (unknown [10.40.192.236]) by smtp.corp.redhat.com (Postfix) with ESMTP id 86DB76F972; Sun, 3 May 2020 20:32:07 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: thomas@monjalon.net, Jerin Jacob , Sunil Kumar Kori , John McNamara , Marko Kovacevic , Declan Doherty , Ferruh Yigit , Andrew Rybchenko , Olivier Matz Date: Sun, 3 May 2020 22:31:29 +0200 Message-Id: <20200503203135.6493-3-david.marchand@redhat.com> In-Reply-To: <20200503203135.6493-1-david.marchand@redhat.com> References: <20200503203135.6493-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [dpdk-dev] [PATCH 2/8] trace: simplify trace point registration 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" RTE_TRACE_POINT_DEFINE and RTE_TRACE_POINT_REGISTER must come in pairs. Merge them and let RTE_TRACE_POINT_REGISTER handle the constructor part. Signed-off-by: David Marchand Acked-by: Jerin Jacob --- app/test/test_trace_register.c | 12 +- doc/guides/prog_guide/trace_lib.rst | 12 +- lib/librte_cryptodev/cryptodev_trace_points.c | 84 +++---- .../common/eal_common_trace_points.c | 164 ++++++-------- lib/librte_eal/include/rte_eal_trace.h | 122 +++++------ lib/librte_eal/include/rte_trace_point.h | 14 +- .../include/rte_trace_point_register.h | 6 +- lib/librte_ethdev/ethdev_trace_points.c | 44 ++-- lib/librte_eventdev/eventdev_trace_points.c | 205 +++++++----------- lib/librte_mempool/mempool_trace_points.c | 124 ++++------- 10 files changed, 309 insertions(+), 478 deletions(-) diff --git a/app/test/test_trace_register.c b/app/test/test_trace_register.c index 8f40822cad..7feacfbabc 100644 --- a/app/test/test_trace_register.c +++ b/app/test/test_trace_register.c @@ -5,13 +5,5 @@ #include "test_trace.h" -/* Define trace points */ -RTE_TRACE_POINT_DEFINE(app_dpdk_test_tp); -RTE_TRACE_POINT_DEFINE(app_dpdk_test_fp); - -RTE_INIT(register_valid_trace_points) -{ - RTE_TRACE_POINT_REGISTER(app_dpdk_test_tp, app.dpdk.test.tp); - RTE_TRACE_POINT_REGISTER(app_dpdk_test_fp, app.dpdk.test.fp); -} - +RTE_TRACE_POINT_REGISTER(app_dpdk_test_tp, app.dpdk.test.tp) +RTE_TRACE_POINT_REGISTER(app_dpdk_test_fp, app.dpdk.test.fp) diff --git a/doc/guides/prog_guide/trace_lib.rst b/doc/guides/prog_guide/trace_lib.rst index 6a2016c7dc..9cad4ff4ac 100644 --- a/doc/guides/prog_guide/trace_lib.rst +++ b/doc/guides/prog_guide/trace_lib.rst @@ -101,12 +101,7 @@ Register the tracepoint #include - RTE_TRACE_POINT_DEFINE(app_trace_string); - - RTE_INIT(app_trace_init) - { - RTE_TRACE_POINT_REGISTER(app_trace_string, app.trace.string); - } + RTE_TRACE_POINT_REGISTER(app_trace_string, app.trace.string) The above code snippet registers the ``app_trace_string`` tracepoint to trace library. Here, the ``my_tracepoint_provider.h`` is the header file @@ -119,9 +114,6 @@ There is no requirement for the tracepoint function and its name to be similar. However, it is recommended to have a similar name for a better naming convention. -The user must register the tracepoint before the ``rte_eal_init`` invocation. -The user can use the ``RTE_INIT`` construction scheme to achieve this. - .. note:: The ``RTE_TRACE_POINT_REGISTER_SELECT`` must be defined before including the @@ -129,7 +121,7 @@ The user can use the ``RTE_INIT`` construction scheme to achieve this. .. note:: - The ``RTE_TRACE_POINT_DEFINE`` defines the placeholder for the + The ``RTE_TRACE_POINT_REGISTER`` defines the placeholder for the ``rte_trace_point_t`` tracepoint object. The user must export a ``__`` symbol in the library ``.map`` file for this tracepoint to be used out of the library, in shared builds. diff --git a/lib/librte_cryptodev/cryptodev_trace_points.c b/lib/librte_cryptodev/cryptodev_trace_points.c index 7d03c93882..aa31103404 100644 --- a/lib/librte_cryptodev/cryptodev_trace_points.c +++ b/lib/librte_cryptodev/cryptodev_trace_points.c @@ -6,70 +6,50 @@ #include "rte_cryptodev_trace.h" -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_configure); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_start); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_stop); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_close); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_queue_pair_setup); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_sym_session_pool_create); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_sym_session_create); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_asym_session_create); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_sym_session_free); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_asym_session_free); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_sym_session_init); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_asym_session_init); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_sym_session_clear); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_asym_session_clear); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_enqueue_burst); -RTE_TRACE_POINT_DEFINE(rte_cryptodev_trace_dequeue_burst); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_configure, + lib.cryptodev.configure) -RTE_INIT(cryptodev_trace_init) -{ - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_configure, - lib.cryptodev.configure); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_start, + lib.cryptodev.start) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_start, - lib.cryptodev.start); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_stop, + lib.cryptodev.stop) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_stop, - lib.cryptodev.stop); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_close, + lib.cryptodev.close) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_close, - lib.cryptodev.close); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_queue_pair_setup, + lib.cryptodev.queue.pair.setup) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_queue_pair_setup, - lib.cryptodev.queue.pair.setup); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_pool_create, + lib.cryptodev.sym.pool.create) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_pool_create, - lib.cryptodev.sym.pool.create); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_create, + lib.cryptodev.sym.create) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_create, - lib.cryptodev.sym.create); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_asym_session_create, + lib.cryptodev.asym.create) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_asym_session_create, - lib.cryptodev.asym.create); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_free, + lib.cryptodev.sym.free) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_free, - lib.cryptodev.sym.free); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_asym_session_free, + lib.cryptodev.asym.free) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_asym_session_free, - lib.cryptodev.asym.free); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_init, + lib.cryptodev.sym.init) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_init, - lib.cryptodev.sym.init); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_asym_session_init, + lib.cryptodev.asym.init) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_asym_session_init, - lib.cryptodev.asym.init); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_clear, + lib.cryptodev.sym.clear) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_clear, - lib.cryptodev.sym.clear); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_asym_session_clear, + lib.cryptodev.asym.clear) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_asym_session_clear, - lib.cryptodev.asym.clear); +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_enqueue_burst, + lib.cryptodev.enq.burst) - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_enqueue_burst, - lib.cryptodev.enq.burst); - - RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_dequeue_burst, - lib.cryptodev.deq.burst); -} +RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_dequeue_burst, + lib.cryptodev.deq.burst) diff --git a/lib/librte_eal/common/eal_common_trace_points.c b/lib/librte_eal/common/eal_common_trace_points.c index 7611977a15..d1d8d1875c 100644 --- a/lib/librte_eal/common/eal_common_trace_points.c +++ b/lib/librte_eal/common/eal_common_trace_points.c @@ -6,110 +6,70 @@ #include -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_void); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_u64); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_u32); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_u16); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_u8); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_i64); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_i32); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_i16); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_i8); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_int); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_long); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_float); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_double); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_ptr); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_str); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_generic_func); +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_void, + lib.eal.generic.void) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_u64, + lib.eal.generic.u64) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_u32, + lib.eal.generic.u32) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_u16, + lib.eal.generic.u16) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_u8, + lib.eal.generic.u8) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_i64, + lib.eal.generic.i64) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_i32, + lib.eal.generic.i32) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_i16, + lib.eal.generic.i16) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_i8, + lib.eal.generic.i8) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_int, + lib.eal.generic.int) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_long, + lib.eal.generic.long) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_float, + lib.eal.generic.float) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_double, + lib.eal.generic.double) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_ptr, + lib.eal.generic.ptr) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_str, + lib.eal.generic.string) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_func, + lib.eal.generic.func) -RTE_TRACE_POINT_DEFINE(rte_eal_trace_alarm_set); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_alarm_cancel); +RTE_TRACE_POINT_REGISTER(rte_eal_trace_alarm_set, + lib.eal.alarm.set) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_alarm_cancel, + lib.eal.alarm.cancel) -RTE_TRACE_POINT_DEFINE(rte_eal_trace_mem_zmalloc); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_mem_malloc); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_mem_realloc); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_mem_free); +RTE_TRACE_POINT_REGISTER(rte_eal_trace_mem_zmalloc, + lib.eal.mem.zmalloc) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_mem_malloc, + lib.eal.mem.malloc) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_mem_realloc, + lib.eal.mem.realloc) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_mem_free, + lib.eal.mem.free) -RTE_TRACE_POINT_DEFINE(rte_eal_trace_memzone_reserve); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_memzone_lookup); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_memzone_free); +RTE_TRACE_POINT_REGISTER(rte_eal_trace_memzone_reserve, + lib.eal.memzone.reserve) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_memzone_lookup, + lib.eal.memzone.lookup) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_memzone_free, + lib.eal.memzone.free) -RTE_TRACE_POINT_DEFINE(rte_eal_trace_thread_remote_launch); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_thread_lcore_ready); +RTE_TRACE_POINT_REGISTER(rte_eal_trace_thread_remote_launch, + lib.eal.thread.remote.launch) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_thread_lcore_ready, + lib.eal.thread.lcore.ready) -RTE_TRACE_POINT_DEFINE(rte_eal_trace_intr_callback_register); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_intr_callback_unregister); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_intr_enable); -RTE_TRACE_POINT_DEFINE(rte_eal_trace_intr_disable); - -RTE_INIT(eal_trace_init) -{ - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_void, - lib.eal.generic.void); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_u64, - lib.eal.generic.u64); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_u32, - lib.eal.generic.u32); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_u16, - lib.eal.generic.u16); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_u8, - lib.eal.generic.u8); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_i64, - lib.eal.generic.i64); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_i32, - lib.eal.generic.i32); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_i16, - lib.eal.generic.i16); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_i8, - lib.eal.generic.i8); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_int, - lib.eal.generic.int); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_long, - lib.eal.generic.long); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_float, - lib.eal.generic.float); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_double, - lib.eal.generic.double); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_ptr, - lib.eal.generic.ptr); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_str, - lib.eal.generic.string); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_func, - lib.eal.generic.func); - - RTE_TRACE_POINT_REGISTER(rte_eal_trace_alarm_set, - lib.eal.alarm.set); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_alarm_cancel, - lib.eal.alarm.cancel); - - RTE_TRACE_POINT_REGISTER(rte_eal_trace_mem_zmalloc, - lib.eal.mem.zmalloc); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_mem_malloc, - lib.eal.mem.malloc); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_mem_realloc, - lib.eal.mem.realloc); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_mem_free, - lib.eal.mem.free); - - RTE_TRACE_POINT_REGISTER(rte_eal_trace_memzone_reserve, - lib.eal.memzone.reserve); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_memzone_lookup, - lib.eal.memzone.lookup); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_memzone_free, - lib.eal.memzone.free); - - RTE_TRACE_POINT_REGISTER(rte_eal_trace_thread_remote_launch, - lib.eal.thread.remote.launch); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_thread_lcore_ready, - lib.eal.thread.lcore.ready); - - RTE_TRACE_POINT_REGISTER(rte_eal_trace_intr_callback_register, - lib.eal.intr.register); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_intr_callback_unregister, - lib.eal.intr.unregister); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_intr_enable, - lib.eal.intr.enable); - RTE_TRACE_POINT_REGISTER(rte_eal_trace_intr_disable, - lib.eal.intr.disable); -} +RTE_TRACE_POINT_REGISTER(rte_eal_trace_intr_callback_register, + lib.eal.intr.register) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_intr_callback_unregister, + lib.eal.intr.unregister) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_intr_enable, + lib.eal.intr.enable) +RTE_TRACE_POINT_REGISTER(rte_eal_trace_intr_disable, + lib.eal.intr.disable) diff --git a/lib/librte_eal/include/rte_eal_trace.h b/lib/librte_eal/include/rte_eal_trace.h index 1ebb2905a9..923200f054 100644 --- a/lib/librte_eal/include/rte_eal_trace.h +++ b/lib/librte_eal/include/rte_eal_trace.h @@ -19,6 +19,26 @@ extern "C" { #include #include +/* Alarm */ +RTE_TRACE_POINT( + rte_eal_trace_alarm_set, + RTE_TRACE_POINT_ARGS(uint64_t us, rte_eal_alarm_callback cb_fn, + void *cb_arg, int rc), + rte_trace_point_emit_u64(us); + rte_trace_point_emit_ptr(cb_fn); + rte_trace_point_emit_ptr(cb_arg); + rte_trace_point_emit_int(rc); +) + +RTE_TRACE_POINT( + rte_eal_trace_alarm_cancel, + RTE_TRACE_POINT_ARGS(rte_eal_alarm_callback cb_fn, void *cb_arg, + int count), + rte_trace_point_emit_ptr(cb_fn); + rte_trace_point_emit_ptr(cb_arg); + rte_trace_point_emit_int(count); +) + /* Generic */ RTE_TRACE_POINT( rte_eal_trace_generic_void, @@ -117,24 +137,52 @@ RTE_TRACE_POINT( #define RTE_EAL_TRACE_GENERIC_FUNC rte_eal_trace_generic_func(__func__) -/* Alarm */ +/* Interrupt */ RTE_TRACE_POINT( - rte_eal_trace_alarm_set, - RTE_TRACE_POINT_ARGS(uint64_t us, rte_eal_alarm_callback cb_fn, - void *cb_arg, int rc), - rte_trace_point_emit_u64(us); - rte_trace_point_emit_ptr(cb_fn); - rte_trace_point_emit_ptr(cb_arg); + rte_eal_trace_intr_callback_register, + RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, + rte_intr_callback_fn cb, void *cb_arg, int rc), rte_trace_point_emit_int(rc); + rte_trace_point_emit_int(handle->vfio_dev_fd); + rte_trace_point_emit_int(handle->fd); + rte_trace_point_emit_int(handle->type); + rte_trace_point_emit_u32(handle->max_intr); + rte_trace_point_emit_u32(handle->nb_efd); + rte_trace_point_emit_ptr(cb); + rte_trace_point_emit_ptr(cb_arg); ) - RTE_TRACE_POINT( - rte_eal_trace_alarm_cancel, - RTE_TRACE_POINT_ARGS(rte_eal_alarm_callback cb_fn, void *cb_arg, - int count), - rte_trace_point_emit_ptr(cb_fn); + rte_eal_trace_intr_callback_unregister, + RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, + rte_intr_callback_fn cb, void *cb_arg, int rc), + rte_trace_point_emit_int(rc); + rte_trace_point_emit_int(handle->vfio_dev_fd); + rte_trace_point_emit_int(handle->fd); + rte_trace_point_emit_int(handle->type); + rte_trace_point_emit_u32(handle->max_intr); + rte_trace_point_emit_u32(handle->nb_efd); + rte_trace_point_emit_ptr(cb); rte_trace_point_emit_ptr(cb_arg); - rte_trace_point_emit_int(count); +) +RTE_TRACE_POINT( + rte_eal_trace_intr_enable, + RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, int rc), + rte_trace_point_emit_int(rc); + rte_trace_point_emit_int(handle->vfio_dev_fd); + rte_trace_point_emit_int(handle->fd); + rte_trace_point_emit_int(handle->type); + rte_trace_point_emit_u32(handle->max_intr); + rte_trace_point_emit_u32(handle->nb_efd); +) +RTE_TRACE_POINT( + rte_eal_trace_intr_disable, + RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, int rc), + rte_trace_point_emit_int(rc); + rte_trace_point_emit_int(handle->vfio_dev_fd); + rte_trace_point_emit_int(handle->fd); + rte_trace_point_emit_int(handle->type); + rte_trace_point_emit_u32(handle->max_intr); + rte_trace_point_emit_u32(handle->nb_efd); ) /* Memory */ @@ -223,54 +271,6 @@ RTE_TRACE_POINT( rte_trace_point_emit_string(cpuset); ) -/* Interrupt */ -RTE_TRACE_POINT( - rte_eal_trace_intr_callback_register, - RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, - rte_intr_callback_fn cb, void *cb_arg, int rc), - rte_trace_point_emit_int(rc); - rte_trace_point_emit_int(handle->vfio_dev_fd); - rte_trace_point_emit_int(handle->fd); - rte_trace_point_emit_int(handle->type); - rte_trace_point_emit_u32(handle->max_intr); - rte_trace_point_emit_u32(handle->nb_efd); - rte_trace_point_emit_ptr(cb); - rte_trace_point_emit_ptr(cb_arg); -) -RTE_TRACE_POINT( - rte_eal_trace_intr_callback_unregister, - RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, - rte_intr_callback_fn cb, void *cb_arg, int rc), - rte_trace_point_emit_int(rc); - rte_trace_point_emit_int(handle->vfio_dev_fd); - rte_trace_point_emit_int(handle->fd); - rte_trace_point_emit_int(handle->type); - rte_trace_point_emit_u32(handle->max_intr); - rte_trace_point_emit_u32(handle->nb_efd); - rte_trace_point_emit_ptr(cb); - rte_trace_point_emit_ptr(cb_arg); -) -RTE_TRACE_POINT( - rte_eal_trace_intr_enable, - RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, int rc), - rte_trace_point_emit_int(rc); - rte_trace_point_emit_int(handle->vfio_dev_fd); - rte_trace_point_emit_int(handle->fd); - rte_trace_point_emit_int(handle->type); - rte_trace_point_emit_u32(handle->max_intr); - rte_trace_point_emit_u32(handle->nb_efd); -) -RTE_TRACE_POINT( - rte_eal_trace_intr_disable, - RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, int rc), - rte_trace_point_emit_int(rc); - rte_trace_point_emit_int(handle->vfio_dev_fd); - rte_trace_point_emit_int(handle->fd); - rte_trace_point_emit_int(handle->type); - rte_trace_point_emit_u32(handle->max_intr); - rte_trace_point_emit_u32(handle->nb_efd); -) - #ifdef __cplusplus } #endif diff --git a/lib/librte_eal/include/rte_trace_point.h b/lib/librte_eal/include/rte_trace_point.h index 4d956ec164..dbd648c054 100644 --- a/lib/librte_eal/include/rte_trace_point.h +++ b/lib/librte_eal/include/rte_trace_point.h @@ -29,10 +29,6 @@ extern "C" { /** The tracepoint object. */ typedef uint64_t rte_trace_point_t; -/** Macro to define the tracepoint. */ -#define RTE_TRACE_POINT_DEFINE(tp) \ -rte_trace_point_t __attribute__((section("__rte_trace_point"))) __##tp - /** * Macro to define the tracepoint arguments in RTE_TRACE_POINT macro. @@ -64,7 +60,7 @@ _tp _args \ * * @param tp * Tracepoint object. Before using the tracepoint, an application needs to - * define the tracepoint using RTE_TRACE_POINT_DEFINE macro. + * define the tracepoint using RTE_TRACE_POINT_REGISTER macro. * @param args * C function style input arguments to define the arguments to tracepoint * function. @@ -72,7 +68,7 @@ _tp _args \ * Define the payload of trace function. The payload will be formed using * rte_trace_point_emit_* macros. Use ";" delimiter between two payloads. * - * @see RTE_TRACE_POINT_ARGS, RTE_TRACE_POINT_DEFINE, rte_trace_point_emit_* + * @see RTE_TRACE_POINT_ARGS, RTE_TRACE_POINT_REGISTER, rte_trace_point_emit_* */ #define RTE_TRACE_POINT(tp, args, ...) \ __RTE_TRACE_POINT(generic, tp, args, __VA_ARGS__) @@ -85,7 +81,7 @@ _tp _args \ * * @param tp * Tracepoint object. Before using the tracepoint, an application needs to - * define the tracepoint using RTE_TRACE_POINT_DEFINE macro. + * define the tracepoint using RTE_TRACE_POINT_REGISTER macro. * @param args * C function style input arguments to define the arguments to tracepoint. * function. @@ -115,7 +111,7 @@ _tp _args \ * Register a tracepoint. * * @param trace - * The tracepoint object created using RTE_TRACE_POINT_DEFINE. + * The tracepoint object created using RTE_TRACE_POINT_REGISTER. * @param name * The name of the tracepoint object. * @return @@ -262,7 +258,7 @@ void __rte_trace_point_emit_field(size_t sz, const char *field, * Use RTE_TRACE_POINT_REGISTER macro for tracepoint registration. * * @param trace - * The tracepoint object created using RTE_TRACE_POINT_DEFINE. + * The tracepoint object created using RTE_TRACE_POINT_REGISTER. * @param name * The name of the tracepoint object. * @param register_fn diff --git a/lib/librte_eal/include/rte_trace_point_register.h b/lib/librte_eal/include/rte_trace_point_register.h index 4e2306f1af..26e383a8bb 100644 --- a/lib/librte_eal/include/rte_trace_point_register.h +++ b/lib/librte_eal/include/rte_trace_point_register.h @@ -14,8 +14,12 @@ RTE_DECLARE_PER_LCORE(volatile int, trace_point_sz); #define RTE_TRACE_POINT_REGISTER(trace, name) \ +rte_trace_point_t __attribute__((section("__rte_trace_point"))) __##trace; \ +RTE_INIT(trace##_init) \ +{ \ __rte_trace_point_register(&__##trace, RTE_STR(name), \ - (void (*)(void)) trace) + (void (*)(void)) trace); \ +} #define __rte_trace_point_emit_header_generic(t) \ RTE_PER_LCORE(trace_point_sz) = __RTE_TRACE_EVENT_HEADER_SZ diff --git a/lib/librte_ethdev/ethdev_trace_points.c b/lib/librte_ethdev/ethdev_trace_points.c index 05de34f3ca..5be377521c 100644 --- a/lib/librte_ethdev/ethdev_trace_points.c +++ b/lib/librte_ethdev/ethdev_trace_points.c @@ -6,38 +6,26 @@ #include -RTE_TRACE_POINT_DEFINE(rte_ethdev_trace_configure); -RTE_TRACE_POINT_DEFINE(rte_ethdev_trace_rxq_setup); -RTE_TRACE_POINT_DEFINE(rte_ethdev_trace_txq_setup); -RTE_TRACE_POINT_DEFINE(rte_ethdev_trace_start); -RTE_TRACE_POINT_DEFINE(rte_ethdev_trace_stop); -RTE_TRACE_POINT_DEFINE(rte_ethdev_trace_close); -RTE_TRACE_POINT_DEFINE(rte_ethdev_trace_rx_burst); -RTE_TRACE_POINT_DEFINE(rte_ethdev_trace_tx_burst); +RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_configure, + lib.ethdev.configure) -RTE_INIT(ethdev_trace_init) -{ - RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_configure, - lib.ethdev.configure); +RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rxq_setup, + lib.ethdev.rxq.setup) - RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rxq_setup, - lib.ethdev.rxq.setup); +RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_txq_setup, + lib.ethdev.txq.setup) - RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_txq_setup, - lib.ethdev.txq.setup); +RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_start, + lib.ethdev.start) - RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_start, - lib.ethdev.start); +RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_stop, + lib.ethdev.stop) - RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_stop, - lib.ethdev.stop); +RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_close, + lib.ethdev.close) - RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_close, - lib.ethdev.close); +RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_burst, + lib.ethdev.rx.burst) - RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_burst, - lib.ethdev.rx.burst); - - RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_tx_burst, - lib.ethdev.tx.burst); -} +RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_tx_burst, + lib.ethdev.tx.burst) diff --git a/lib/librte_eventdev/eventdev_trace_points.c b/lib/librte_eventdev/eventdev_trace_points.c index 2aa6e6bcf5..221a62b71c 100644 --- a/lib/librte_eventdev/eventdev_trace_points.c +++ b/lib/librte_eventdev/eventdev_trace_points.c @@ -7,167 +7,114 @@ #include "rte_eventdev_trace.h" /* Eventdev trace points */ -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_configure); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_queue_setup); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_port_setup); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_port_link); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_port_unlink); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_start); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_stop); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_close); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_enq_burst); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_deq_burst); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_configure, + lib.eventdev.configure) -/* Eventdev Rx adapter trace points */ -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_rx_adapter_create); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_rx_adapter_free); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_rx_adapter_queue_add); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_rx_adapter_queue_del); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_rx_adapter_start); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_rx_adapter_stop); - -/* Eventdev Tx adapter trace points */ -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_create); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_free); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_queue_add); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_queue_del); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_start); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_stop); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_eth_tx_adapter_enqueue); - -/* Eventdev Timer adapter trace points */ -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_adapter_create); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_adapter_start); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_adapter_stop); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_adapter_free); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_arm_burst); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_arm_tmo_tick_burst); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_timer_cancel_burst); - -/* Eventdev Crypto adapter trace points */ -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_crypto_adapter_create); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_crypto_adapter_free); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_crypto_adapter_queue_pair_add); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_crypto_adapter_queue_pair_del); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_crypto_adapter_start); -RTE_TRACE_POINT_DEFINE(rte_eventdev_trace_crypto_adapter_stop); - -RTE_INIT(eventdev_trace_init) -{ - /* Eventdev trace points */ - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_configure, - lib.eventdev.configure); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_queue_setup, + lib.eventdev.queue.setup) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_queue_setup, - lib.eventdev.queue.setup); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_port_setup, + lib.eventdev.port.setup) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_port_setup, - lib.eventdev.port.setup); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_port_link, + lib.eventdev.port.link) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_port_link, - lib.eventdev.port.link); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_port_unlink, + lib.eventdev.port.unlink) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_port_unlink, - lib.eventdev.port.unlink); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_start, + lib.eventdev.start) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_start, - lib.eventdev.start); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_stop, + lib.eventdev.stop) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_stop, - lib.eventdev.stop); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_close, + lib.eventdev.close) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_close, - lib.eventdev.close); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_enq_burst, + lib.eventdev.enq.burst) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_enq_burst, - lib.eventdev.enq.burst); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_deq_burst, + lib.eventdev.deq.burst) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_deq_burst, - lib.eventdev.deq.burst); - - - /* Eventdev Rx adapter trace points */ - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_create, - lib.eventdev.rx.adapter.create); - - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_free, - lib.eventdev.rx.adapter.free); +/* Eventdev Rx adapter trace points */ +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_create, + lib.eventdev.rx.adapter.create) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_queue_add, - lib.eventdev.rx.adapter.queue.add); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_free, + lib.eventdev.rx.adapter.free) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_queue_del, - lib.eventdev.rx.adapter.queue.del); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_queue_add, + lib.eventdev.rx.adapter.queue.add) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_start, - lib.eventdev.rx.adapter.start); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_queue_del, + lib.eventdev.rx.adapter.queue.del) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_stop, - lib.eventdev.rx.adapter.stop); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_start, + lib.eventdev.rx.adapter.start) - /* Eventdev Tx adapter trace points */ - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_create, - lib.eventdev.tx.adapter.create); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_rx_adapter_stop, + lib.eventdev.rx.adapter.stop) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_free, - lib.eventdev.tx.adapter.free); +/* Eventdev Tx adapter trace points */ +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_create, + lib.eventdev.tx.adapter.create) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_queue_add, - lib.eventdev.tx.adapter.queue.add); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_free, + lib.eventdev.tx.adapter.free) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_queue_del, - lib.eventdev.tx.adapter.queue.del); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_queue_add, + lib.eventdev.tx.adapter.queue.add) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_start, - lib.eventdev.tx.adapter.start); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_queue_del, + lib.eventdev.tx.adapter.queue.del) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_stop, - lib.eventdev.tx.adapter.stop); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_start, + lib.eventdev.tx.adapter.start) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_enqueue, - lib.eventdev.tx.adapter.enq); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_stop, + lib.eventdev.tx.adapter.stop) +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_eth_tx_adapter_enqueue, + lib.eventdev.tx.adapter.enq) - /* Eventdev Timer adapter trace points */ - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_adapter_create, - lib.eventdev.timer.create); +/* Eventdev Timer adapter trace points */ +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_adapter_create, + lib.eventdev.timer.create) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_adapter_start, - lib.eventdev.timer.start); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_adapter_start, + lib.eventdev.timer.start) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_adapter_stop, - lib.eventdev.timer.stop); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_adapter_stop, + lib.eventdev.timer.stop) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_adapter_free, - lib.eventdev.timer.free); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_adapter_free, + lib.eventdev.timer.free) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_arm_burst, - lib.eventdev.timer.burst); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_arm_burst, + lib.eventdev.timer.burst) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_arm_tmo_tick_burst, - lib.eventdev.timer.tick.burst); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_arm_tmo_tick_burst, + lib.eventdev.timer.tick.burst) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_cancel_burst, - lib.eventdev.timer.cancel); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_timer_cancel_burst, + lib.eventdev.timer.cancel) - /* Eventdev Crypto adapter trace points */ - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_create, - lib.eventdev.crypto.create); +/* Eventdev Crypto adapter trace points */ +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_create, + lib.eventdev.crypto.create) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_free, - lib.eventdev.crypto.free); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_free, + lib.eventdev.crypto.free) - RTE_TRACE_POINT_REGISTER( - rte_eventdev_trace_crypto_adapter_queue_pair_add, - lib.eventdev.crypto.queue.add); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_queue_pair_add, + lib.eventdev.crypto.queue.add) - RTE_TRACE_POINT_REGISTER( - rte_eventdev_trace_crypto_adapter_queue_pair_del, - lib.eventdev.crypto.queue.del); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_queue_pair_del, + lib.eventdev.crypto.queue.del) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_start, - lib.eventdev.crypto.start); +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_start, + lib.eventdev.crypto.start) - RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_stop, - lib.eventdev.crypto.stop); -} +RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_stop, + lib.eventdev.crypto.stop) diff --git a/lib/librte_mempool/mempool_trace_points.c b/lib/librte_mempool/mempool_trace_points.c index afab8dff68..3dac0bc536 100644 --- a/lib/librte_mempool/mempool_trace_points.c +++ b/lib/librte_mempool/mempool_trace_points.c @@ -6,102 +6,74 @@ #include "rte_mempool_trace.h" -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_ops_dequeue_bulk); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_ops_dequeue_contig_blocks); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_ops_enqueue_bulk); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_generic_put); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_put_bulk); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_generic_get); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_get_bulk); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_get_contig_blocks); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_create); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_create_empty); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_free); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_populate_iova); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_populate_virt); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_populate_default); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_populate_anon); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_cache_create); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_cache_free); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_default_cache); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_get_page_size); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_cache_flush); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_ops_populate); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_ops_alloc); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_ops_free); -RTE_TRACE_POINT_DEFINE(rte_mempool_trace_set_ops_byname); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_ops_dequeue_bulk, + lib.mempool.ops.deq.bulk) -RTE_INIT(mempool_trace_init) -{ - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_ops_dequeue_bulk, - lib.mempool.ops.deq.bulk); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_ops_dequeue_contig_blocks, + lib.mempool.ops.deq.contig) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_ops_dequeue_contig_blocks, - lib.mempool.ops.deq.contig); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_ops_enqueue_bulk, + lib.mempool.ops.enq.bulk) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_ops_enqueue_bulk, - lib.mempool.ops.enq.bulk); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_generic_put, + lib.mempool.generic.put) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_generic_put, - lib.mempool.generic.put); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_put_bulk, + lib.mempool.put.bulk) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_put_bulk, - lib.mempool.put.bulk); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_generic_get, + lib.mempool.generic.get) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_generic_get, - lib.mempool.generic.get); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_get_bulk, + lib.mempool.get.bulk) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_get_bulk, - lib.mempool.get.bulk); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_get_contig_blocks, + lib.mempool.get.blocks) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_get_contig_blocks, - lib.mempool.get.blocks); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_create, + lib.mempool.create) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_create, - lib.mempool.create); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_create_empty, + lib.mempool.create.empty) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_create_empty, - lib.mempool.create.empty); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_free, + lib.mempool.free) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_free, - lib.mempool.free); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_populate_iova, + lib.mempool.populate.iova) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_populate_iova, - lib.mempool.populate.iova); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_populate_virt, + lib.mempool.populate.virt) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_populate_virt, - lib.mempool.populate.virt); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_populate_default, + lib.mempool.populate.default) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_populate_default, - lib.mempool.populate.default); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_populate_anon, + lib.mempool.populate.anon) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_populate_anon, - lib.mempool.populate.anon); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_cache_create, + lib.mempool.cache_create) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_cache_create, - lib.mempool.cache_create); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_cache_free, + lib.mempool.cache.free) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_cache_free, - lib.mempool.cache.free); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_default_cache, + lib.mempool.default.cache) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_default_cache, - lib.mempool.default.cache); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_get_page_size, + lib.mempool.get.page.size) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_get_page_size, - lib.mempool.get.page.size); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_cache_flush, + lib.mempool.cache.flush) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_cache_flush, - lib.mempool.cache.flush); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_ops_populate, + lib.mempool.ops.populate) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_ops_populate, - lib.mempool.ops.populate); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_ops_alloc, + lib.mempool.ops.alloc) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_ops_alloc, - lib.mempool.ops.alloc); +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_ops_free, + lib.mempool.ops.free) - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_ops_free, - lib.mempool.ops.free); - - RTE_TRACE_POINT_REGISTER(rte_mempool_trace_set_ops_byname, - lib.mempool.set.ops.byname); -} +RTE_TRACE_POINT_REGISTER(rte_mempool_trace_set_ops_byname, + lib.mempool.set.ops.byname) From patchwork Sun May 3 20:31:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 69680 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1DCBEA04AF; Sun, 3 May 2020 22:32:29 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D4F691D51F; Sun, 3 May 2020 22:32:22 +0200 (CEST) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by dpdk.org (Postfix) with ESMTP id 269DD1D443 for ; Sun, 3 May 2020 22:32:21 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588537940; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3P05o+Cfa/MQE66lVH7a6KjhUYKn4Dpag2qhZuyHucM=; b=gWnP/Z4Lat7UoWByjYYeilR2nOXpaw4XhmnpKVW+p19quCQbcTu+TCwmprhLOxVlYUn29v zK1fMgvIq+OA1QKW8X9RahDSnd0pc5fBrztFGv3BfkknYx5qjG6srGXB2ER9jNlOjq8CkQ Nb2D9wRq3OmOKlvH1f60LpisM4EA0B4= 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-330-aN9ZVWLONWGnCwS7Lz1nlg-1; Sun, 03 May 2020 16:32:18 -0400 X-MC-Unique: aN9ZVWLONWGnCwS7Lz1nlg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 072E91895943; Sun, 3 May 2020 20:32:17 +0000 (UTC) Received: from dmarchan.remote.csb (unknown [10.40.192.236]) by smtp.corp.redhat.com (Postfix) with ESMTP id 02AFE6FDB2; Sun, 3 May 2020 20:32:12 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: thomas@monjalon.net, Jerin Jacob , Sunil Kumar Kori , John McNamara , Marko Kovacevic , Declan Doherty , Ferruh Yigit , Andrew Rybchenko , Olivier Matz Date: Sun, 3 May 2020 22:31:30 +0200 Message-Id: <20200503203135.6493-4-david.marchand@redhat.com> In-Reply-To: <20200503203135.6493-1-david.marchand@redhat.com> References: <20200503203135.6493-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [dpdk-dev] [PATCH 3/8] trace: simplify trace point headers 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" Invert the current trace point headers logic by making rte_trace_point_register.h include rte_trace_point.h. There is no more need for a RTE_TRACE_POINT_REGISTER_SELECT special macro since including rte_trace_point_register.h itself means we want to register trace points. The unexplained "provider" notion is removed from the documentation and rte_trace_point_provider.h is merged into rte_trace_point.h. Signed-off-by: David Marchand Acked-by: Jerin Jacob --- app/test/test_trace_register.c | 3 +- doc/guides/prog_guide/trace_lib.rst | 19 ++- lib/librte_cryptodev/cryptodev_trace_points.c | 2 +- .../common/eal_common_trace_points.c | 2 +- lib/librte_eal/include/meson.build | 1 - lib/librte_eal/include/rte_trace_point.h | 140 +++++++++++++++--- .../include/rte_trace_point_provider.h | 131 ---------------- .../include/rte_trace_point_register.h | 9 +- lib/librte_ethdev/ethdev_trace_points.c | 2 +- lib/librte_eventdev/eventdev_trace_points.c | 2 +- lib/librte_mempool/mempool_trace_points.c | 2 +- 11 files changed, 142 insertions(+), 171 deletions(-) delete mode 100644 lib/librte_eal/include/rte_trace_point_provider.h diff --git a/app/test/test_trace_register.c b/app/test/test_trace_register.c index 7feacfbabc..4891493687 100644 --- a/app/test/test_trace_register.c +++ b/app/test/test_trace_register.c @@ -1,7 +1,8 @@ /* SPDX-License-Identifier: BSD-3-Clause * Copyright(C) 2020 Marvell International Ltd. */ -#define RTE_TRACE_POINT_REGISTER_SELECT + +#include #include "test_trace.h" diff --git a/doc/guides/prog_guide/trace_lib.rst b/doc/guides/prog_guide/trace_lib.rst index 9cad4ff4ac..9bbfd165d8 100644 --- a/doc/guides/prog_guide/trace_lib.rst +++ b/doc/guides/prog_guide/trace_lib.rst @@ -52,10 +52,10 @@ How to add a tracepoint? This section steps you through the details of adding a simple tracepoint. -.. _create_provider_header_file: +.. _create_tracepoint_header_file: -Create the tracepoint provider header file -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Create the tracepoint header file +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c @@ -96,16 +96,15 @@ Register the tracepoint .. code-block:: c - /* Select tracepoint register macros */ - #define RTE_TRACE_POINT_REGISTER_SELECT + #include - #include + #include RTE_TRACE_POINT_REGISTER(app_trace_string, app.trace.string) The above code snippet registers the ``app_trace_string`` tracepoint to -trace library. Here, the ``my_tracepoint_provider.h`` is the header file -that the user created in the first step :ref:`create_provider_header_file`. +trace library. Here, the ``my_tracepoint.h`` is the header file +that the user created in the first step :ref:`create_tracepoint_header_file`. The second argument for the ``RTE_TRACE_POINT_REGISTER`` is the name for the tracepoint. This string will be used for tracepoint lookup or regular @@ -116,8 +115,8 @@ convention. .. note:: - The ``RTE_TRACE_POINT_REGISTER_SELECT`` must be defined before including the - header for the tracepoint registration to work properly. + The ``rte_trace_point_register.h`` header must be included before any + inclusion of the ``rte_trace_point.h`` header. .. note:: diff --git a/lib/librte_cryptodev/cryptodev_trace_points.c b/lib/librte_cryptodev/cryptodev_trace_points.c index aa31103404..5d58951fd5 100644 --- a/lib/librte_cryptodev/cryptodev_trace_points.c +++ b/lib/librte_cryptodev/cryptodev_trace_points.c @@ -2,7 +2,7 @@ * Copyright(C) 2020 Marvell International Ltd. */ -#define RTE_TRACE_POINT_REGISTER_SELECT +#include #include "rte_cryptodev_trace.h" diff --git a/lib/librte_eal/common/eal_common_trace_points.c b/lib/librte_eal/common/eal_common_trace_points.c index d1d8d1875c..292ec91bed 100644 --- a/lib/librte_eal/common/eal_common_trace_points.c +++ b/lib/librte_eal/common/eal_common_trace_points.c @@ -2,7 +2,7 @@ * Copyright(C) 2020 Marvell International Ltd. */ -#define RTE_TRACE_POINT_REGISTER_SELECT +#include #include diff --git a/lib/librte_eal/include/meson.build b/lib/librte_eal/include/meson.build index e9537c91f9..13315bfcec 100644 --- a/lib/librte_eal/include/meson.build +++ b/lib/librte_eal/include/meson.build @@ -43,7 +43,6 @@ headers += files( 'rte_time.h', 'rte_trace.h', 'rte_trace_point.h', - 'rte_trace_point_provider.h', 'rte_trace_point_register.h', 'rte_uuid.h', 'rte_version.h', diff --git a/lib/librte_eal/include/rte_trace_point.h b/lib/librte_eal/include/rte_trace_point.h index dbd648c054..942f458e7a 100644 --- a/lib/librte_eal/include/rte_trace_point.h +++ b/lib/librte_eal/include/rte_trace_point.h @@ -96,17 +96,6 @@ _tp _args \ #ifdef __DOXYGEN__ -/** - * Macro to select rte_trace_point_emit_* definition for trace register function - * - * rte_trace_point_emit_* emits different definitions for trace function. - * Application must define RTE_TRACE_POINT_REGISTER_SELECT before including - * rte_trace_point.h in the C file where RTE_TRACE_POINT_REGISTER used. - * - * @see RTE_TRACE_POINT_REGISTER - */ -#define RTE_TRACE_POINT_REGISTER_SELECT - /** * Register a tracepoint. * @@ -117,8 +106,6 @@ _tp _args \ * @return * - 0: Successfully registered the tracepoint. * - <0: Failure to register the tracepoint. - * - * @see RTE_TRACE_POINT_REGISTER_SELECT */ #define RTE_TRACE_POINT_REGISTER(trace, name) @@ -271,13 +258,128 @@ __rte_experimental int __rte_trace_point_register(rte_trace_point_t *trace, const char *name, void (*register_fn)(void)); -#ifdef RTE_TRACE_POINT_REGISTER_SELECT -#include +#ifndef __DOXYGEN__ + +#ifndef _RTE_TRACE_POINT_REGISTER_H_ +#ifdef ALLOW_EXPERIMENTAL_API + +#include +#include +#include +#include +#include + +#define __RTE_TRACE_EVENT_HEADER_ID_SHIFT (48) + +#define __RTE_TRACE_FIELD_SIZE_SHIFT 0 +#define __RTE_TRACE_FIELD_SIZE_MASK (0xffffULL << __RTE_TRACE_FIELD_SIZE_SHIFT) +#define __RTE_TRACE_FIELD_ID_SHIFT (16) +#define __RTE_TRACE_FIELD_ID_MASK (0xffffULL << __RTE_TRACE_FIELD_ID_SHIFT) +#define __RTE_TRACE_FIELD_ENABLE_MASK (1ULL << 63) +#define __RTE_TRACE_FIELD_ENABLE_DISCARD (1ULL << 62) + +struct __rte_trace_stream_header { + uint32_t magic; + rte_uuid_t uuid; + uint32_t lcore_id; + char thread_name[__RTE_TRACE_EMIT_STRING_LEN_MAX]; +} __rte_packed; + +struct __rte_trace_header { + uint32_t offset; + uint32_t len; + struct __rte_trace_stream_header stream_header; + uint8_t mem[]; +}; + +RTE_DECLARE_PER_LCORE(void *, trace_mem); + +static __rte_always_inline void * +__rte_trace_mem_get(uint64_t in) +{ + struct __rte_trace_header *trace = RTE_PER_LCORE(trace_mem); + const uint16_t sz = in & __RTE_TRACE_FIELD_SIZE_MASK; + + /* Trace memory is not initialized for this thread */ + if (unlikely(trace == NULL)) { + __rte_trace_mem_per_thread_alloc(); + trace = RTE_PER_LCORE(trace_mem); + if (unlikely(trace == NULL)) + return NULL; + } + /* Check the wrap around case */ + uint32_t offset = trace->offset; + if (unlikely((offset + sz) >= trace->len)) { + /* Disable the trace event if it in DISCARD mode */ + if (unlikely(in & __RTE_TRACE_FIELD_ENABLE_DISCARD)) + return NULL; + + offset = 0; + } + /* Align to event header size */ + offset = RTE_ALIGN_CEIL(offset, __RTE_TRACE_EVENT_HEADER_SZ); + void *mem = RTE_PTR_ADD(&trace->mem[0], offset); + offset += sz; + trace->offset = offset; + + return mem; +} + +static __rte_always_inline void * +__rte_trace_point_emit_ev_header(void *mem, uint64_t in) +{ + uint64_t val; + + /* Event header [63:0] = id [63:48] | timestamp [47:0] */ + val = rte_get_tsc_cycles() & + ~(0xffffULL << __RTE_TRACE_EVENT_HEADER_ID_SHIFT); + val |= ((in & __RTE_TRACE_FIELD_ID_MASK) << + (__RTE_TRACE_EVENT_HEADER_ID_SHIFT - __RTE_TRACE_FIELD_ID_SHIFT)); + + *(uint64_t *)mem = val; + return RTE_PTR_ADD(mem, __RTE_TRACE_EVENT_HEADER_SZ); +} + +#define __rte_trace_point_emit_header_generic(t) \ +void *mem; \ +do { \ + const uint64_t val = __atomic_load_n(t, __ATOMIC_ACQUIRE); \ + if (likely(!(val & __RTE_TRACE_FIELD_ENABLE_MASK))) \ + return; \ + mem = __rte_trace_mem_get(val); \ + if (unlikely(mem == NULL)) \ + return; \ + mem = __rte_trace_point_emit_ev_header(mem, val); \ +} while (0) + +#define __rte_trace_point_emit_header_fp(t) \ + if (!__rte_trace_point_fp_is_enabled()) \ + return; \ + __rte_trace_point_emit_header_generic(t) + +#define __rte_trace_point_emit(in, type) \ +do { \ + memcpy(mem, &(in), sizeof(in)); \ + mem = RTE_PTR_ADD(mem, sizeof(in)); \ +} while (0) + +#define rte_trace_point_emit_string(in) \ +do { \ + if (unlikely(in == NULL)) \ + return; \ + rte_strscpy(mem, in, __RTE_TRACE_EMIT_STRING_LEN_MAX); \ + mem = RTE_PTR_ADD(mem, __RTE_TRACE_EMIT_STRING_LEN_MAX); \ +} while (0) + #else -#include -#endif -#ifndef __DOXYGEN__ +#define __rte_trace_point_emit_header_generic(t) RTE_SET_USED(t) +#define __rte_trace_point_emit_header_fp(t) RTE_SET_USED(t) +#define __rte_trace_point_emit(in, type) RTE_SET_USED(in) +#define rte_trace_point_emit_string(in) RTE_SET_USED(in) + +#endif /* ALLOW_EXPERIMENTAL_API */ +#endif #define rte_trace_point_emit_u64(in) __rte_trace_point_emit(in, uint64_t) #define rte_trace_point_emit_i64(in) __rte_trace_point_emit(in, int64_t) @@ -293,7 +395,7 @@ int __rte_trace_point_register(rte_trace_point_t *trace, const char *name, #define rte_trace_point_emit_double(in) __rte_trace_point_emit(in, double) #define rte_trace_point_emit_ptr(in) __rte_trace_point_emit(in, uintptr_t) -#endif +#endif /* __DOXYGEN__ */ #ifdef __cplusplus } diff --git a/lib/librte_eal/include/rte_trace_point_provider.h b/lib/librte_eal/include/rte_trace_point_provider.h deleted file mode 100644 index bf53282f38..0000000000 --- a/lib/librte_eal/include/rte_trace_point_provider.h +++ /dev/null @@ -1,131 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause - * Copyright(C) 2020 Marvell International Ltd. - */ - -#ifndef _RTE_TRACE_POINT_H_ -#error do not include this file directly, use instead -#endif - -#ifndef _RTE_TRACE_POINT_PROVIDER_H_ -#define _RTE_TRACE_POINT_PROVIDER_H_ - -#ifdef ALLOW_EXPERIMENTAL_API - -#include -#include -#include -#include -#include - -#define __RTE_TRACE_EVENT_HEADER_ID_SHIFT (48) - -#define __RTE_TRACE_FIELD_SIZE_SHIFT 0 -#define __RTE_TRACE_FIELD_SIZE_MASK (0xffffULL << __RTE_TRACE_FIELD_SIZE_SHIFT) -#define __RTE_TRACE_FIELD_ID_SHIFT (16) -#define __RTE_TRACE_FIELD_ID_MASK (0xffffULL << __RTE_TRACE_FIELD_ID_SHIFT) -#define __RTE_TRACE_FIELD_ENABLE_MASK (1ULL << 63) -#define __RTE_TRACE_FIELD_ENABLE_DISCARD (1ULL << 62) - -struct __rte_trace_stream_header { - uint32_t magic; - rte_uuid_t uuid; - uint32_t lcore_id; - char thread_name[__RTE_TRACE_EMIT_STRING_LEN_MAX]; -} __rte_packed; - -struct __rte_trace_header { - uint32_t offset; - uint32_t len; - struct __rte_trace_stream_header stream_header; - uint8_t mem[]; -}; - -RTE_DECLARE_PER_LCORE(void *, trace_mem); - -static __rte_always_inline void * -__rte_trace_mem_get(uint64_t in) -{ - struct __rte_trace_header *trace = RTE_PER_LCORE(trace_mem); - const uint16_t sz = in & __RTE_TRACE_FIELD_SIZE_MASK; - - /* Trace memory is not initialized for this thread */ - if (unlikely(trace == NULL)) { - __rte_trace_mem_per_thread_alloc(); - trace = RTE_PER_LCORE(trace_mem); - if (unlikely(trace == NULL)) - return NULL; - } - /* Check the wrap around case */ - uint32_t offset = trace->offset; - if (unlikely((offset + sz) >= trace->len)) { - /* Disable the trace event if it in DISCARD mode */ - if (unlikely(in & __RTE_TRACE_FIELD_ENABLE_DISCARD)) - return NULL; - - offset = 0; - } - /* Align to event header size */ - offset = RTE_ALIGN_CEIL(offset, __RTE_TRACE_EVENT_HEADER_SZ); - void *mem = RTE_PTR_ADD(&trace->mem[0], offset); - offset += sz; - trace->offset = offset; - - return mem; -} - -static __rte_always_inline void * -__rte_trace_point_emit_ev_header(void *mem, uint64_t in) -{ - uint64_t val; - - /* Event header [63:0] = id [63:48] | timestamp [47:0] */ - val = rte_get_tsc_cycles() & - ~(0xffffULL << __RTE_TRACE_EVENT_HEADER_ID_SHIFT); - val |= ((in & __RTE_TRACE_FIELD_ID_MASK) << - (__RTE_TRACE_EVENT_HEADER_ID_SHIFT - __RTE_TRACE_FIELD_ID_SHIFT)); - - *(uint64_t *)mem = val; - return RTE_PTR_ADD(mem, __RTE_TRACE_EVENT_HEADER_SZ); -} - -#define __rte_trace_point_emit_header_generic(t) \ -void *mem; \ -do { \ - const uint64_t val = __atomic_load_n(t, __ATOMIC_ACQUIRE); \ - if (likely(!(val & __RTE_TRACE_FIELD_ENABLE_MASK))) \ - return; \ - mem = __rte_trace_mem_get(val); \ - if (unlikely(mem == NULL)) \ - return; \ - mem = __rte_trace_point_emit_ev_header(mem, val); \ -} while (0) - -#define __rte_trace_point_emit_header_fp(t) \ - if (!__rte_trace_point_fp_is_enabled()) \ - return; \ - __rte_trace_point_emit_header_generic(t) - -#define __rte_trace_point_emit(in, type) \ -do { \ - memcpy(mem, &(in), sizeof(in)); \ - mem = RTE_PTR_ADD(mem, sizeof(in)); \ -} while (0) - -#define rte_trace_point_emit_string(in) \ -do { \ - if (unlikely(in == NULL)) \ - return; \ - rte_strscpy(mem, in, __RTE_TRACE_EMIT_STRING_LEN_MAX); \ - mem = RTE_PTR_ADD(mem, __RTE_TRACE_EMIT_STRING_LEN_MAX); \ -} while (0) - -#else - -#define __rte_trace_point_emit_header_generic(t) RTE_SET_USED(t) -#define __rte_trace_point_emit_header_fp(t) RTE_SET_USED(t) -#define __rte_trace_point_emit(in, type) RTE_SET_USED(in) -#define rte_trace_point_emit_string(in) RTE_SET_USED(in) - -#endif - -#endif /* _RTE_TRACE_POINT_PROVIDER_H_ */ diff --git a/lib/librte_eal/include/rte_trace_point_register.h b/lib/librte_eal/include/rte_trace_point_register.h index 26e383a8bb..548fe4dab3 100644 --- a/lib/librte_eal/include/rte_trace_point_register.h +++ b/lib/librte_eal/include/rte_trace_point_register.h @@ -2,14 +2,15 @@ * Copyright(C) 2020 Marvell International Ltd. */ -#ifndef _RTE_TRACE_POINT_H_ -#error do not include this file directly, use instead -#endif - #ifndef _RTE_TRACE_POINT_REGISTER_H_ #define _RTE_TRACE_POINT_REGISTER_H_ +#ifdef _RTE_TRACE_POINT_H_ +#error for tracepoint registration, include this file first before +#endif + #include +#include RTE_DECLARE_PER_LCORE(volatile int, trace_point_sz); diff --git a/lib/librte_ethdev/ethdev_trace_points.c b/lib/librte_ethdev/ethdev_trace_points.c index 5be377521c..2919409a15 100644 --- a/lib/librte_ethdev/ethdev_trace_points.c +++ b/lib/librte_ethdev/ethdev_trace_points.c @@ -2,7 +2,7 @@ * Copyright(C) 2020 Marvell International Ltd. */ -#define RTE_TRACE_POINT_REGISTER_SELECT +#include #include diff --git a/lib/librte_eventdev/eventdev_trace_points.c b/lib/librte_eventdev/eventdev_trace_points.c index 221a62b71c..1a0ccc4481 100644 --- a/lib/librte_eventdev/eventdev_trace_points.c +++ b/lib/librte_eventdev/eventdev_trace_points.c @@ -2,7 +2,7 @@ * Copyright(C) 2020 Marvell International Ltd. */ -#define RTE_TRACE_POINT_REGISTER_SELECT +#include #include "rte_eventdev_trace.h" diff --git a/lib/librte_mempool/mempool_trace_points.c b/lib/librte_mempool/mempool_trace_points.c index 3dac0bc536..4ad76deb34 100644 --- a/lib/librte_mempool/mempool_trace_points.c +++ b/lib/librte_mempool/mempool_trace_points.c @@ -2,7 +2,7 @@ * Copyright(C) 2020 Marvell International Ltd. */ -#define RTE_TRACE_POINT_REGISTER_SELECT +#include #include "rte_mempool_trace.h" From patchwork Sun May 3 20:31:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 69682 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6D058A04AF; Sun, 3 May 2020 22:32:51 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D41691D532; Sun, 3 May 2020 22:32:25 +0200 (CEST) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by dpdk.org (Postfix) with ESMTP id 6FDBC1D52B for ; Sun, 3 May 2020 22:32:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588537943; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jwLArlOAImSvqi3uQvKcXQv4IO8pCHM1WmwREFG8XMQ=; b=FvWPDngn/pyU1HLD2EtMEfYEjsm26pfs7DIl+JMPfwb+TWiKLgQgRR0c0dskvWUJKOb/a6 0cjdPRVbAc7AeeWKxr3jaM/1YWOjXb10wi6lriysQE/SK1l1PyFHC7N1LGdQRUuqR3AhH6 nntKKwbcFhYkvh3p+ude3fCxEmIc/D8= 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-166-LnhfKoBkO6OPE7Kjmb5sCg-1; Sun, 03 May 2020 16:32:20 -0400 X-MC-Unique: LnhfKoBkO6OPE7Kjmb5sCg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 755CD1895944; Sun, 3 May 2020 20:32:19 +0000 (UTC) Received: from dmarchan.remote.csb (unknown [10.40.192.236]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9BC3A6F972; Sun, 3 May 2020 20:32:17 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: thomas@monjalon.net, Jerin Jacob , Sunil Kumar Kori Date: Sun, 3 May 2020 22:31:31 +0200 Message-Id: <20200503203135.6493-5-david.marchand@redhat.com> In-Reply-To: <20200503203135.6493-1-david.marchand@redhat.com> References: <20200503203135.6493-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [dpdk-dev] [PATCH 4/8] trace: avoid confusion on optarg 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" Prefer a local name to optarg which is a global symbol from the C library. Fixes: 8c8066ea6a7b ("trace: add trace mode configuration parameter") Signed-off-by: David Marchand Acked-by: Sunil Kumar Kori --- .../common/eal_common_trace_utils.c | 32 +++++++++---------- lib/librte_eal/common/eal_trace.h | 8 ++--- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/lib/librte_eal/common/eal_common_trace_utils.c b/lib/librte_eal/common/eal_common_trace_utils.c index fce8892c38..a7c5893b00 100644 --- a/lib/librte_eal/common/eal_common_trace_utils.c +++ b/lib/librte_eal/common/eal_common_trace_utils.c @@ -135,7 +135,7 @@ trace_dir_update(const char *str) } int -eal_trace_args_save(const char *optarg) +eal_trace_args_save(const char *val) { struct trace *trace = trace_obj_get(); char *trace_args; @@ -144,17 +144,17 @@ eal_trace_args_save(const char *optarg) nb_args = trace->args.nb_args; if (nb_args >= TRACE_MAX_ARGS) { - trace_err("ignoring trace %s as limit exceeds", optarg); + trace_err("ignoring trace %s as limit exceeds", val); return 0; } - trace_args = calloc(1, (strlen(optarg) + 1)); + trace_args = calloc(1, (strlen(val) + 1)); if (trace_args == NULL) { - trace_err("fail to allocate memory for %s", optarg); + trace_err("fail to allocate memory for %s", val); return -ENOMEM; } - memcpy(trace_args, optarg, strlen(optarg)); + memcpy(trace_args, val, strlen(val)); trace->args.args[nb_args++] = trace_args; trace->args.nb_args = nb_args; return 0; @@ -194,17 +194,17 @@ trace_args_apply(const char *arg) } int -eal_trace_bufsz_args_save(char const *optarg) +eal_trace_bufsz_args_save(char const *val) { struct trace *trace = trace_obj_get(); uint64_t bufsz; - if (optarg == NULL) { + if (val == NULL) { trace_err("no optarg is passed"); return -EINVAL; } - bufsz = rte_str_to_size(optarg); + bufsz = rte_str_to_size(val); if (bufsz == 0) { trace_err("buffer size cannot be zero"); return -EINVAL; @@ -224,14 +224,14 @@ trace_bufsz_args_apply(void) } int -eal_trace_mode_args_save(const char *optarg) +eal_trace_mode_args_save(const char *val) { struct trace *trace = trace_obj_get(); - size_t len = strlen(optarg); + size_t len = strlen(val); unsigned long tmp; char *pattern; - if (optarg == NULL) { + if (val == NULL) { trace_err("no optarg is passed"); return -EINVAL; } @@ -247,7 +247,7 @@ eal_trace_mode_args_save(const char *optarg) return -ENOMEM; } - sprintf(pattern, "%s*", optarg); + sprintf(pattern, "%s*", val); if (fnmatch(pattern, "overwrite", 0) == 0) tmp = RTE_TRACE_MODE_OVERWRITE; @@ -264,19 +264,19 @@ eal_trace_mode_args_save(const char *optarg) } int -eal_trace_dir_args_save(char const *optarg) +eal_trace_dir_args_save(char const *val) { struct trace *trace = trace_obj_get(); uint32_t size = sizeof(trace->dir); char *dir_path = NULL; int rc; - if (optarg == NULL) { + if (val == NULL) { trace_err("no optarg is passed"); return -EINVAL; } - if (strlen(optarg) >= size) { + if (strlen(val) >= size) { trace_err("input string is too big"); return -ENAMETOOLONG; } @@ -287,7 +287,7 @@ eal_trace_dir_args_save(char const *optarg) return -ENOMEM; } - sprintf(dir_path, "%s/", optarg); + sprintf(dir_path, "%s/", val); rc = trace_dir_update(dir_path); free(dir_path); diff --git a/lib/librte_eal/common/eal_trace.h b/lib/librte_eal/common/eal_trace.h index f53ccc0d50..7d95bd2aa9 100644 --- a/lib/librte_eal/common/eal_trace.h +++ b/lib/librte_eal/common/eal_trace.h @@ -111,10 +111,10 @@ void trace_mem_per_thread_free(void); /* EAL interface */ int eal_trace_init(void); void eal_trace_fini(void); -int eal_trace_args_save(const char *optarg); +int eal_trace_args_save(const char *val); void eal_trace_args_free(void); -int eal_trace_dir_args_save(const char *optarg); -int eal_trace_mode_args_save(const char *optarg); -int eal_trace_bufsz_args_save(const char *optarg); +int eal_trace_dir_args_save(const char *val); +int eal_trace_mode_args_save(const char *val); +int eal_trace_bufsz_args_save(const char *val); #endif /* __EAL_TRACE_H */ From patchwork Sun May 3 20:31:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 69683 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D6A8BA04AF; Sun, 3 May 2020 22:33:01 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 75D0D1D537; Sun, 3 May 2020 22:32:28 +0200 (CEST) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by dpdk.org (Postfix) with ESMTP id 30E321D53B for ; Sun, 3 May 2020 22:32:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588537946; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+rW43JpaOcpWMyjQQFCSo4YYPHrBWPee2IW7LUwszhM=; b=MyebIqKcd3hUvbvg1MyZOPu0d9iXUcdJB08A/66FaDgtAmEeqYOod2iiJCEej4uswukZQ7 057wTyTAVu6UbcL9hxD0T/Sh/X8hL6Z/sXL7+WukIM1HF1HayUqxuhzwPNkjUv7dFjVU9j UAXPVNqrKgE4f28a42S0wBsn9JYllWI= 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-450-Jx-1qaXvOQy0IuHqqJnjjQ-1; Sun, 03 May 2020 16:32:23 -0400 X-MC-Unique: Jx-1qaXvOQy0IuHqqJnjjQ-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CBC1B800580; Sun, 3 May 2020 20:32:21 +0000 (UTC) Received: from dmarchan.remote.csb (unknown [10.40.192.236]) by smtp.corp.redhat.com (Postfix) with ESMTP id 489AA5798D; Sun, 3 May 2020 20:32:19 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: thomas@monjalon.net, Jerin Jacob , Sunil Kumar Kori Date: Sun, 3 May 2020 22:31:32 +0200 Message-Id: <20200503203135.6493-6-david.marchand@redhat.com> In-Reply-To: <20200503203135.6493-1-david.marchand@redhat.com> References: <20200503203135.6493-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [dpdk-dev] [PATCH 5/8] trace: remove unneeded checks in internal API 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 trace framework can be configured via 4 EAL options: - --trace which calls eal_trace_args_save, - --trace-dir which calls eal_trace_dir_args_save, - --trace-bufsz which calls eal_trace_bufsz_args_save, - --trace-mode which calls eal_trace_mode_args_save. Those 4 internal callbacks are getting passed a non NULL value: optarg won't be NULL since those options are declared with required_argument (man getopt_long). eal_trace_bufsz_args_save() already trusted passed value, align the other 3 internal callbacks. Coverity issue: 357768 Fixes: 8c8066ea6a7b ("trace: add trace mode configuration parameter") Signed-off-by: David Marchand Acked-by: Sunil Kumar Kori --- lib/librte_eal/common/eal_common_trace_utils.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/lib/librte_eal/common/eal_common_trace_utils.c b/lib/librte_eal/common/eal_common_trace_utils.c index a7c5893b00..4077acf428 100644 --- a/lib/librte_eal/common/eal_common_trace_utils.c +++ b/lib/librte_eal/common/eal_common_trace_utils.c @@ -199,11 +199,6 @@ eal_trace_bufsz_args_save(char const *val) struct trace *trace = trace_obj_get(); uint64_t bufsz; - if (val == NULL) { - trace_err("no optarg is passed"); - return -EINVAL; - } - bufsz = rte_str_to_size(val); if (bufsz == 0) { trace_err("buffer size cannot be zero"); @@ -231,11 +226,6 @@ eal_trace_mode_args_save(const char *val) unsigned long tmp; char *pattern; - if (val == NULL) { - trace_err("no optarg is passed"); - return -EINVAL; - } - if (len == 0) { trace_err("value is not provided with option"); return -EINVAL; @@ -271,11 +261,6 @@ eal_trace_dir_args_save(char const *val) char *dir_path = NULL; int rc; - if (val == NULL) { - trace_err("no optarg is passed"); - return -EINVAL; - } - if (strlen(val) >= size) { trace_err("input string is too big"); return -ENAMETOOLONG; From patchwork Sun May 3 20:31:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 69684 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8FDE2A04AF; Sun, 3 May 2020 22:33:10 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BABAD1D551; Sun, 3 May 2020 22:32:30 +0200 (CEST) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by dpdk.org (Postfix) with ESMTP id 58DA31D54E for ; Sun, 3 May 2020 22:32:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588537948; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1jnK42+XP6JFecF5s+LCfXD+UQxTRe1OlOSNrAY1a+c=; b=YYClXdZWWBNdLtohbN9rIEG/+HotzyOM9VgByHvCVuzzwLqMTrR0xVo4f/aG+fCDJn4tfg Gmebm85M5fs6dFMNlv65TGmGhGBm8WvmAA/ef5Mvq3Lz6cGLnE1AUM5nHi7IEbi7REU+Ma Nwbo5558aVuBOpRf/RqP1D5r7QdGqus= 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-44-BJcW6_m3MYWLOBut-R_Cyg-1; Sun, 03 May 2020 16:32:25 -0400 X-MC-Unique: BJcW6_m3MYWLOBut-R_Cyg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4299F107ACCA; Sun, 3 May 2020 20:32:24 +0000 (UTC) Received: from dmarchan.remote.csb (unknown [10.40.192.236]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9ABEA5798D; Sun, 3 May 2020 20:32:22 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: thomas@monjalon.net, Jerin Jacob , Sunil Kumar Kori Date: Sun, 3 May 2020 22:31:33 +0200 Message-Id: <20200503203135.6493-7-david.marchand@redhat.com> In-Reply-To: <20200503203135.6493-1-david.marchand@redhat.com> References: <20200503203135.6493-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [dpdk-dev] [PATCH 6/8] trace: remove limitation on patterns number 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" There is nothing performance sensitive in this list, use dynamic allocations and remove the arbitrary limit on the number of trace patterns a user can pass. Signed-off-by: David Marchand --- lib/librte_eal/common/eal_common_trace.c | 10 +++--- .../common/eal_common_trace_utils.c | 33 ++++++++----------- lib/librte_eal/common/eal_trace.h | 8 ++--- 3 files changed, 23 insertions(+), 28 deletions(-) diff --git a/lib/librte_eal/common/eal_common_trace.c b/lib/librte_eal/common/eal_common_trace.c index 5a365c61da..875553d7e5 100644 --- a/lib/librte_eal/common/eal_common_trace.c +++ b/lib/librte_eal/common/eal_common_trace.c @@ -21,7 +21,7 @@ static RTE_DEFINE_PER_LCORE(char, ctf_field[TRACE_CTF_FIELD_SIZE]); static RTE_DEFINE_PER_LCORE(int, ctf_count); static struct trace_point_head tp_list = STAILQ_HEAD_INITIALIZER(tp_list); -static struct trace trace; +static struct trace trace = { .args = STAILQ_HEAD_INITIALIZER(trace.args), }; struct trace * trace_obj_get(void) @@ -38,7 +38,7 @@ trace_list_head_get(void) int eal_trace_init(void) { - uint8_t i; + struct trace_arg *arg; /* Trace memory should start with 8B aligned for natural alignment */ RTE_BUILD_BUG_ON((offsetof(struct __rte_trace_header, mem) % 8) != 0); @@ -49,7 +49,7 @@ eal_trace_init(void) goto fail; } - if (trace.args.nb_args) + if (!STAILQ_EMPTY(&trace.args)) trace.status = true; if (!rte_trace_is_enabled()) @@ -82,8 +82,8 @@ eal_trace_init(void) goto fail; /* Apply global configurations */ - for (i = 0; i < trace.args.nb_args; i++) - trace_args_apply(trace.args.args[i]); + STAILQ_FOREACH(arg, &trace.args, next) + trace_args_apply(arg->val); rte_trace_mode_set(trace.mode); diff --git a/lib/librte_eal/common/eal_common_trace_utils.c b/lib/librte_eal/common/eal_common_trace_utils.c index 4077acf428..15384ce4f1 100644 --- a/lib/librte_eal/common/eal_common_trace_utils.c +++ b/lib/librte_eal/common/eal_common_trace_utils.c @@ -138,25 +138,20 @@ int eal_trace_args_save(const char *val) { struct trace *trace = trace_obj_get(); - char *trace_args; - uint8_t nb_args; + struct trace_arg *arg = malloc(sizeof(*arg)); - nb_args = trace->args.nb_args; - - if (nb_args >= TRACE_MAX_ARGS) { - trace_err("ignoring trace %s as limit exceeds", val); - return 0; + if (arg == NULL) { + trace_err("failed to allocate memory for %s", val); + return -ENOMEM; } - trace_args = calloc(1, (strlen(val) + 1)); - if (trace_args == NULL) { - trace_err("fail to allocate memory for %s", val); + arg->val = strdup(val); + if (arg->val == NULL) { + trace_err("failed to allocate memory for %s", val); return -ENOMEM; } - memcpy(trace_args, val, strlen(val)); - trace->args.args[nb_args++] = trace_args; - trace->args.nb_args = nb_args; + STAILQ_INSERT_TAIL(&trace->args, arg, next); return 0; } @@ -164,13 +159,13 @@ void eal_trace_args_free(void) { struct trace *trace = trace_obj_get(); - int i; + struct trace_arg *arg; - for (i = 0; i < trace->args.nb_args; i++) { - if (trace->args.args[i]) { - free((void *)trace->args.args[i]); - trace->args.args[i] = NULL; - } + while (!STAILQ_EMPTY(&trace->args)) { + arg = STAILQ_FIRST(&trace->args); + STAILQ_REMOVE_HEAD(&trace->args, next); + free(arg->val); + free(arg); } } diff --git a/lib/librte_eal/common/eal_trace.h b/lib/librte_eal/common/eal_trace.h index 7d95bd2aa9..943b5ecbc5 100644 --- a/lib/librte_eal/common/eal_trace.h +++ b/lib/librte_eal/common/eal_trace.h @@ -46,9 +46,9 @@ struct thread_mem_meta { enum trace_area_e area; }; -struct trace_args { - uint8_t nb_args; - char *args[TRACE_MAX_ARGS]; +struct trace_arg { + STAILQ_ENTRY(trace_arg) next; + char *val; }; struct trace { @@ -59,7 +59,7 @@ struct trace { enum rte_trace_mode mode; rte_uuid_t uuid; uint32_t buff_len; - struct trace_args args; + STAILQ_HEAD(trace_arg_head, trace_arg) args; uint32_t nb_trace_points; uint32_t nb_trace_mem_list; struct thread_mem_meta *lcore_meta; From patchwork Sun May 3 20:31:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 69685 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id DE47BA04AF; Sun, 3 May 2020 22:33:20 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id F2EF21D538; Sun, 3 May 2020 22:32:32 +0200 (CEST) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by dpdk.org (Postfix) with ESMTP id B931C1D538 for ; Sun, 3 May 2020 22:32:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588537951; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QQVYtiqDrU7HTbfmYPboqT1hH4YkOAaLI6hAOv/G7GI=; b=Kr5PwDFxi0VdUWDJ+dz6PglLbGOVyfIMa/gCAnKjClnFeH8MenspwnpoJwfiqcHCq0fO+E Fiwo2orsK++Sha5HIphkfk8Tnt+HIhwpA25clchBpNBbad27JXOFv8LvvEgRqGF75DR2dL XHD2JRqUXi6EHulR31VboUy7dzGVdFE= 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-48-PvYXs-D8MD6D9llhDqaubQ-1; Sun, 03 May 2020 16:32:27 -0400 X-MC-Unique: PvYXs-D8MD6D9llhDqaubQ-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D0FFC800580; Sun, 3 May 2020 20:32:26 +0000 (UTC) Received: from dmarchan.remote.csb (unknown [10.40.192.236]) by smtp.corp.redhat.com (Postfix) with ESMTP id F1ECC5798D; Sun, 3 May 2020 20:32:24 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: thomas@monjalon.net, Jerin Jacob , Sunil Kumar Kori Date: Sun, 3 May 2020 22:31:34 +0200 Message-Id: <20200503203135.6493-8-david.marchand@redhat.com> In-Reply-To: <20200503203135.6493-1-david.marchand@redhat.com> References: <20200503203135.6493-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [dpdk-dev] [PATCH 7/8] trace: remove string duplication 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" No need to duplicate an untouched string. Signed-off-by: David Marchand Acked-by: Sunil Kumar Kori --- lib/librte_eal/common/eal_common_trace_utils.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/lib/librte_eal/common/eal_common_trace_utils.c b/lib/librte_eal/common/eal_common_trace_utils.c index 15384ce4f1..49cc8d7b1d 100644 --- a/lib/librte_eal/common/eal_common_trace_utils.c +++ b/lib/librte_eal/common/eal_common_trace_utils.c @@ -172,19 +172,11 @@ eal_trace_args_free(void) int trace_args_apply(const char *arg) { - char *str; - - str = strdup(arg); - if (str == NULL) - return -1; - - if (rte_trace_regexp(str, true) < 0) { - trace_err("cannot enable trace for %s", str); - free(str); + if (rte_trace_regexp(arg, true) < 0) { + trace_err("cannot enable trace for %s", arg); return -1; } - free(str); return 0; } From patchwork Sun May 3 20:31:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 69686 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 17D4EA04AF; Sun, 3 May 2020 22:33:32 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 210151D531; Sun, 3 May 2020 22:32:38 +0200 (CEST) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by dpdk.org (Postfix) with ESMTP id 3439A1D531 for ; Sun, 3 May 2020 22:32:36 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588537955; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+G2G8xmuewZdTyMbmxIUuDphi8hXsG05WKfwnHLKfhQ=; b=LYTJd9ZzKuhHX4ksBIn4uaUbMwWgukKjHWLfrQcCCoY7v+x9PAbGpOgifre2B1atkoJ+ba urG+3chE52V+H4JW3w8Dn7/7EzyIIdZsPu8D+vErtY3/iGJcPPde0B7xa8Ik/jskdtvJnH zLpAtau5HFppa5wIr8BCRJL0kLGGth0= 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-509-gJwzfdDOOdCxh0ovaxj5RQ-1; Sun, 03 May 2020 16:32:31 -0400 X-MC-Unique: gJwzfdDOOdCxh0ovaxj5RQ-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E52EF107ACCA; Sun, 3 May 2020 20:32:29 +0000 (UTC) Received: from dmarchan.remote.csb (unknown [10.40.192.236]) by smtp.corp.redhat.com (Postfix) with ESMTP id B83E85798D; Sun, 3 May 2020 20:32:27 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: thomas@monjalon.net, Phil Yang , Lijian Zhang , Sunil Kumar Kori , Jerin Jacob Date: Sun, 3 May 2020 22:31:35 +0200 Message-Id: <20200503203135.6493-9-david.marchand@redhat.com> In-Reply-To: <20200503203135.6493-1-david.marchand@redhat.com> References: <20200503203135.6493-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [dpdk-dev] [PATCH 8/8] trace: fix build with gcc 10 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" From: Phil Yang Prevent from writing beyond the allocated memory. GCC 10 compiling output: eal_common_trace_utils.c: In function 'eal_trace_dir_args_save': eal_common_trace_utils.c:290:24: error: '__builtin___sprintf_chk' \ may write a terminating nul past the end of the destination \ [-Werror=format-overflow=] 290 | sprintf(dir_path, "%s/", optarg); | ^ Fixes: 8af866df8d8c ("trace: add trace directory configuration parameter") Signed-off-by: Phil Yang Reviewed-by: Lijian Zhang Tested-by: Lijian Zhang Acked-by: Sunil Kumar Kori Signed-off-by: David Marchand --- Changes since Phil patch: - removed single-use 'size' variable, - removed comment on PATH_MAX (this comment will get obsolete if trace->dir definition changes), - asprintf return code is not used, no need to store, --- lib/librte_eal/common/eal_common_trace_utils.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/librte_eal/common/eal_common_trace_utils.c b/lib/librte_eal/common/eal_common_trace_utils.c index 49cc8d7b1d..988d7593e1 100644 --- a/lib/librte_eal/common/eal_common_trace_utils.c +++ b/lib/librte_eal/common/eal_common_trace_utils.c @@ -244,22 +244,19 @@ int eal_trace_dir_args_save(char const *val) { struct trace *trace = trace_obj_get(); - uint32_t size = sizeof(trace->dir); - char *dir_path = NULL; + char *dir_path; int rc; - if (strlen(val) >= size) { + if (strlen(val) >= sizeof(trace->dir) - 1) { trace_err("input string is too big"); return -ENAMETOOLONG; } - dir_path = (char *)calloc(1, size); - if (dir_path == NULL) { - trace_err("fail to allocate memory"); + if (asprintf(&dir_path, "%s/", val) == -1) { + trace_err("failed to copy directory: %s", strerror(errno)); return -ENOMEM; } - sprintf(dir_path, "%s/", val); rc = trace_dir_update(dir_path); free(dir_path);