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 BCC654612D; Fri, 24 Jan 2025 17:25:47 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7F3D942798; Fri, 24 Jan 2025 17:25:47 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 3254140E48 for ; Fri, 24 Jan 2025 17:25:46 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1737735945; 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; bh=IiXIwzYBP0B8aWM/ue1a/NSVDddQ3/AJLsGuqsE598s=; b=Or6iMfSeq4vjR9darj0yGGUipb9RY2qRRELaH4yN9I+zZfeIHUOlLew9NthiQNWMua8y/c 74JnqECfuA3gSm1lNk4TYZ1R9SRr5IQm6B7cIrwNydDp0Zd/6YOopRCE+ChknZhiNjdZDu edWLaPKnB03MX/u2Lxiw9zB9WntVHZM= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-332-iQ_aT8beMWSBJSJ200bDnA-1; Fri, 24 Jan 2025 11:25:43 -0500 X-MC-Unique: iQ_aT8beMWSBJSJ200bDnA-1 X-Mimecast-MFC-AGG-ID: iQ_aT8beMWSBJSJ200bDnA Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 9DD2E1CA12B7; Fri, 24 Jan 2025 16:14:21 +0000 (UTC) Received: from dmarchan.com (unknown [10.45.224.253]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B7F6D30001BE; Fri, 24 Jan 2025 16:14:18 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: Jerin Jacob , Sunil Kumar Kori , Tyler Retzlaff , Thomas Monjalon , Ferruh Yigit , Andrew Rybchenko Subject: [PATCH 1/2] trace: support expression for blob length Date: Fri, 24 Jan 2025 17:14:07 +0100 Message-ID: <20250124161408.310581-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: zJ8edeZC0O0eABmqoHu1jeGmQBbKR_sCO4oIV-M85xA_1737735942 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true 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 Support any expression as a blob length by using an intermediate variable in the trace point emitter itself. This also avoids any side effect on the passed variable. Signed-off-by: David Marchand --- lib/eal/include/rte_trace_point.h | 11 +++++---- lib/eal/include/rte_trace_point_register.h | 3 ++- lib/ethdev/ethdev_trace.h | 27 ++++++---------------- 3 files changed, 15 insertions(+), 26 deletions(-) diff --git a/lib/eal/include/rte_trace_point.h b/lib/eal/include/rte_trace_point.h index b24db3b6da..62a972db92 100644 --- a/lib/eal/include/rte_trace_point.h +++ b/lib/eal/include/rte_trace_point.h @@ -392,13 +392,14 @@ do { \ #define rte_trace_point_emit_blob(in, len) \ do { \ + uint8_t size = len; \ if (unlikely(in == NULL)) \ return; \ - if (len > RTE_TRACE_BLOB_LEN_MAX) \ - len = RTE_TRACE_BLOB_LEN_MAX; \ - __rte_trace_point_emit(len, uint8_t); \ - memcpy(mem, in, len); \ - memset(RTE_PTR_ADD(mem, len), 0, RTE_TRACE_BLOB_LEN_MAX - len); \ + if (size > RTE_TRACE_BLOB_LEN_MAX) \ + size = RTE_TRACE_BLOB_LEN_MAX; \ + __rte_trace_point_emit(size, uint8_t); \ + memcpy(mem, in, size); \ + memset(RTE_PTR_ADD(mem, size), 0, RTE_TRACE_BLOB_LEN_MAX - size); \ mem = RTE_PTR_ADD(mem, RTE_TRACE_BLOB_LEN_MAX); \ } while (0) diff --git a/lib/eal/include/rte_trace_point_register.h b/lib/eal/include/rte_trace_point_register.h index 748c931830..cb1015eb88 100644 --- a/lib/eal/include/rte_trace_point_register.h +++ b/lib/eal/include/rte_trace_point_register.h @@ -51,8 +51,9 @@ do { \ #define rte_trace_point_emit_blob(in, len) \ do { \ + uint8_t size = len; \ RTE_SET_USED(in); \ - __rte_trace_point_emit(len, uint8_t); \ + __rte_trace_point_emit(size, uint8_t); \ __rte_trace_point_emit_field(RTE_TRACE_BLOB_LEN_MAX, \ RTE_STR(in)"[" RTE_STR(RTE_TRACE_BLOB_LEN_MAX)"]", \ RTE_STR(uint8_t)); \ diff --git a/lib/ethdev/ethdev_trace.h b/lib/ethdev/ethdev_trace.h index 5951ae2d99..c65b78590a 100644 --- a/lib/ethdev/ethdev_trace.h +++ b/lib/ethdev/ethdev_trace.h @@ -860,10 +860,8 @@ RTE_TRACE_POINT( rte_ethdev_trace_mac_addr_add, RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct rte_ether_addr *addr, uint32_t pool, int ret), - uint8_t len = RTE_ETHER_ADDR_LEN; - rte_trace_point_emit_u16(port_id); - rte_trace_point_emit_blob(addr->addr_bytes, len); + rte_trace_point_emit_blob(addr->addr_bytes, RTE_ETHER_ADDR_LEN); rte_trace_point_emit_u32(pool); rte_trace_point_emit_int(ret); ) @@ -872,20 +870,16 @@ RTE_TRACE_POINT( rte_ethdev_trace_mac_addr_remove, RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct rte_ether_addr *addr), - uint8_t len = RTE_ETHER_ADDR_LEN; - rte_trace_point_emit_u16(port_id); - rte_trace_point_emit_blob(addr->addr_bytes, len); + rte_trace_point_emit_blob(addr->addr_bytes, RTE_ETHER_ADDR_LEN); ) RTE_TRACE_POINT( rte_ethdev_trace_default_mac_addr_set, RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct rte_ether_addr *addr), - uint8_t len = RTE_ETHER_ADDR_LEN; - rte_trace_point_emit_u16(port_id); - rte_trace_point_emit_blob(addr->addr_bytes, len); + rte_trace_point_emit_blob(addr->addr_bytes, RTE_ETHER_ADDR_LEN); ) RTE_TRACE_POINT( @@ -1102,11 +1096,9 @@ RTE_TRACE_POINT( RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct rte_ether_addr *mc_addr_set, uint32_t nb_mc_addr, int ret), - uint8_t len = nb_mc_addr * RTE_ETHER_ADDR_LEN; - rte_trace_point_emit_u16(port_id); rte_trace_point_emit_u32(nb_mc_addr); - rte_trace_point_emit_blob(mc_addr_set, len); + rte_trace_point_emit_blob(mc_addr_set, nb_mc_addr * RTE_ETHER_ADDR_LEN); rte_trace_point_emit_int(ret); ) @@ -1214,13 +1206,10 @@ RTE_TRACE_POINT( rte_ethdev_trace_get_dcb_info, RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct rte_eth_dcb_info *dcb_info, int ret), - uint8_t num_user_priorities = RTE_ETH_DCB_NUM_USER_PRIORITIES; - uint8_t num_tcs = RTE_ETH_DCB_NUM_TCS; - rte_trace_point_emit_u16(port_id); rte_trace_point_emit_u8(dcb_info->nb_tcs); - rte_trace_point_emit_blob(dcb_info->prio_tc, num_user_priorities); - rte_trace_point_emit_blob(dcb_info->tc_bws, num_tcs); + rte_trace_point_emit_blob(dcb_info->prio_tc, RTE_ETH_DCB_NUM_USER_PRIORITIES); + rte_trace_point_emit_blob(dcb_info->tc_bws, RTE_ETH_DCB_NUM_TCS); rte_trace_point_emit_int(ret); ) @@ -2126,10 +2115,8 @@ RTE_TRACE_POINT_FP( rte_eth_trace_macaddr_get, RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct rte_ether_addr *mac_addr), - uint8_t len = RTE_ETHER_ADDR_LEN; - rte_trace_point_emit_u16(port_id); - rte_trace_point_emit_blob(mac_addr->addr_bytes, len); + rte_trace_point_emit_blob(mac_addr->addr_bytes, RTE_ETHER_ADDR_LEN); ) /* Called in loop in examples/ip_pipeline */ -- 2.47.1