From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id B5399A0561; Sun, 19 Apr 2020 12:08:01 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 724A31D632; Sun, 19 Apr 2020 12:03:22 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 7058F1D623 for ; Sun, 19 Apr 2020 12:03:14 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03JA18BI020144; Sun, 19 Apr 2020 03:02:56 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0818; bh=rwv0kf6g7Oi2Sn57UWV2W3gphfiF7neD0S7TgxC6pB0=; b=fQSPsTRfZzKEVgmQQXZT1AVM5POIBsAQVrH6EcmS/6H9cfdKPe+nixO4b0c/0Cz+O4Rp q4QQL74ZmQU+z2EHPIwLmEWzOp94RvPGscP4AbokQw6eyGnMBpEq7XqZru9gTwZ7/QCX MxShfrWQr8qoU889qw7pGZ1W/+wuIfLXSKbD60ockkkb/Rr7hnbhwu6Gs2dou+PVi+nX 8IjoUZ+JRGnz9lgILK/uE67Jbf1lAv6IY6XMmr+QtRM31e6PRpSsjFakoneBTFj/TXJY +OO7c4cCDJP22HkbYw3yn+zL2FfFy96fdVU36pGAgywIk3gUlLGrS9xHwDzA4RLVmgOv CQ== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 30g12njxdh-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Sun, 19 Apr 2020 03:02:56 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sun, 19 Apr 2020 03:02:54 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sun, 19 Apr 2020 03:02:54 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sun, 19 Apr 2020 03:02:53 -0700 Received: from jerin-lab.marvell.com (jerin-lab.marvell.com [10.28.34.14]) by maili.marvell.com (Postfix) with ESMTP id BB6763F703F; Sun, 19 Apr 2020 03:02:51 -0700 (PDT) From: To: Jerin Jacob , Sunil Kumar Kori , Bruce Richardson CC: , , , Date: Sun, 19 Apr 2020 15:31:21 +0530 Message-ID: <20200419100133.3232316-22-jerinj@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200419100133.3232316-1-jerinj@marvell.com> References: <20200413150116.734047-1-jerinj@marvell.com> <20200419100133.3232316-1-jerinj@marvell.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.676 definitions=2020-04-19_02:2020-04-17, 2020-04-19 signatures=0 Subject: [dpdk-dev] [PATCH v6 21/33] eal/trace: add thread tracepoints 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: Jerin Jacob Add the following thread related tracepoints. - rte_trace_lib_eal_thread_remote_launch() - rte_trace_lib_eal_thread_lcore_ready() Signed-off-by: Jerin Jacob --- lib/librte_eal/common/eal_common_trace_points.c | 8 ++++++++ lib/librte_eal/freebsd/eal_interrupts.c | 2 +- lib/librte_eal/freebsd/eal_thread.c | 12 ++++++++---- lib/librte_eal/include/rte_trace_eal.h | 17 +++++++++++++++++ lib/librte_eal/linux/eal_thread.c | 12 ++++++++---- lib/librte_eal/rte_eal_version.map | 2 ++ 6 files changed, 44 insertions(+), 9 deletions(-) diff --git a/lib/librte_eal/common/eal_common_trace_points.c b/lib/librte_eal/common/eal_common_trace_points.c index a3c9bc01b..9cecd8206 100644 --- a/lib/librte_eal/common/eal_common_trace_points.c +++ b/lib/librte_eal/common/eal_common_trace_points.c @@ -35,6 +35,9 @@ RTE_TRACE_POINT_DEFINE(rte_trace_lib_eal_memzone_reserve); RTE_TRACE_POINT_DEFINE(rte_trace_lib_eal_memzone_lookup); RTE_TRACE_POINT_DEFINE(rte_trace_lib_eal_memzone_free); +RTE_TRACE_POINT_DEFINE(rte_trace_lib_eal_thread_remote_launch); +RTE_TRACE_POINT_DEFINE(rte_trace_lib_eal_thread_lcore_ready); + RTE_INIT(eal_trace_init) { RTE_TRACE_POINT_REGISTER(rte_trace_lib_eal_generic_void, @@ -90,4 +93,9 @@ RTE_INIT(eal_trace_init) lib.eal.memzone.lookup); RTE_TRACE_POINT_REGISTER(rte_trace_lib_eal_memzone_free, lib.eal.memzone.free); + + RTE_TRACE_POINT_REGISTER(rte_trace_lib_eal_thread_remote_launch, + lib.eal.thread.remote.launch); + RTE_TRACE_POINT_REGISTER(rte_trace_lib_eal_thread_lcore_ready, + lib.eal.thread.lcore.ready); } diff --git a/lib/librte_eal/freebsd/eal_interrupts.c b/lib/librte_eal/freebsd/eal_interrupts.c index 00991f26a..7def3189b 100644 --- a/lib/librte_eal/freebsd/eal_interrupts.c +++ b/lib/librte_eal/freebsd/eal_interrupts.c @@ -85,7 +85,7 @@ rte_intr_callback_register(const struct rte_intr_handle *intr_handle, { struct rte_intr_callback *callback; struct rte_intr_source *src; - int ret, add_event = 0; + int ret = 0, add_event = 0; /* first do parameter checking */ if (intr_handle == NULL || intr_handle->fd < 0 || cb == NULL) { diff --git a/lib/librte_eal/freebsd/eal_thread.c b/lib/librte_eal/freebsd/eal_thread.c index c25b4a019..d6d0e3af2 100644 --- a/lib/librte_eal/freebsd/eal_thread.c +++ b/lib/librte_eal/freebsd/eal_thread.c @@ -20,8 +20,7 @@ #include #include #include -#include -#include +#include #include "eal_private.h" #include "eal_thread.h" @@ -42,9 +41,10 @@ rte_eal_remote_launch(int (*f)(void *), void *arg, unsigned slave_id) char c = 0; int m2s = lcore_config[slave_id].pipe_master2slave[1]; int s2m = lcore_config[slave_id].pipe_slave2master[0]; + int rc = -EBUSY; if (lcore_config[slave_id].state != WAIT) - return -EBUSY; + goto finish; lcore_config[slave_id].f = f; lcore_config[slave_id].arg = arg; @@ -64,7 +64,10 @@ rte_eal_remote_launch(int (*f)(void *), void *arg, unsigned slave_id) if (n <= 0) rte_panic("cannot read on configuration pipe\n"); - return 0; + rc = 0; +finish: + rte_trace_lib_eal_thread_remote_launch(f, arg, slave_id, rc); + return rc; } /* set affinity for current thread */ @@ -127,6 +130,7 @@ eal_thread_loop(__rte_unused void *arg) lcore_id, thread_id, cpuset, ret == 0 ? "" : "..."); __rte_trace_mem_per_thread_alloc(); + rte_trace_lib_eal_thread_lcore_ready(lcore_id, cpuset); /* read on our pipe to get commands */ while (1) { diff --git a/lib/librte_eal/include/rte_trace_eal.h b/lib/librte_eal/include/rte_trace_eal.h index d13b434ca..da805e804 100644 --- a/lib/librte_eal/include/rte_trace_eal.h +++ b/lib/librte_eal/include/rte_trace_eal.h @@ -205,6 +205,23 @@ RTE_TRACE_POINT( rte_trace_point_emit_int(rc); ) +/* Thread */ +RTE_TRACE_POINT( + rte_trace_lib_eal_thread_remote_launch, + RTE_TRACE_POINT_ARGS(int (*f)(void *), void *arg, + unsigned int slave_id, int rc), + rte_trace_point_emit_ptr(f); + rte_trace_point_emit_ptr(arg); + rte_trace_point_emit_u32(slave_id); + rte_trace_point_emit_int(rc); +) +RTE_TRACE_POINT( + rte_trace_lib_eal_thread_lcore_ready, + RTE_TRACE_POINT_ARGS(unsigned int lcore_id, const char *cpuset), + rte_trace_point_emit_u32(lcore_id); + rte_trace_point_emit_string(cpuset); +) + #ifdef __cplusplus } diff --git a/lib/librte_eal/linux/eal_thread.c b/lib/librte_eal/linux/eal_thread.c index 24772fc3d..c2940bc4a 100644 --- a/lib/librte_eal/linux/eal_thread.c +++ b/lib/librte_eal/linux/eal_thread.c @@ -20,8 +20,7 @@ #include #include #include -#include -#include +#include #include "eal_private.h" #include "eal_thread.h" @@ -42,9 +41,10 @@ rte_eal_remote_launch(int (*f)(void *), void *arg, unsigned slave_id) char c = 0; int m2s = lcore_config[slave_id].pipe_master2slave[1]; int s2m = lcore_config[slave_id].pipe_slave2master[0]; + int rc = -EBUSY; if (lcore_config[slave_id].state != WAIT) - return -EBUSY; + goto finish; lcore_config[slave_id].f = f; lcore_config[slave_id].arg = arg; @@ -64,7 +64,10 @@ rte_eal_remote_launch(int (*f)(void *), void *arg, unsigned slave_id) if (n <= 0) rte_panic("cannot read on configuration pipe\n"); - return 0; + rc = 0; +finish: + rte_trace_lib_eal_thread_remote_launch(f, arg, slave_id, rc); + return rc; } /* set affinity for current EAL thread */ @@ -127,6 +130,7 @@ eal_thread_loop(__rte_unused void *arg) lcore_id, (uintptr_t)thread_id, cpuset, ret == 0 ? "" : "..."); __rte_trace_mem_per_thread_alloc(); + rte_trace_lib_eal_thread_lcore_ready(lcore_id, cpuset); /* read on our pipe to get commands */ while (1) { diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map index 22455c7c0..83fb686f4 100644 --- a/lib/librte_eal/rte_eal_version.map +++ b/lib/librte_eal/rte_eal_version.map @@ -382,4 +382,6 @@ EXPERIMENTAL { __rte_trace_lib_eal_memzone_free; __rte_trace_lib_eal_memzone_lookup; __rte_trace_lib_eal_memzone_reserve; + __rte_trace_lib_eal_thread_lcore_ready; + __rte_trace_lib_eal_thread_remote_launch; }; -- 2.25.1