From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
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 <dev@dpdk.org>; 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: <jerinj@marvell.com>
To: Jerin Jacob <jerinj@marvell.com>, Sunil Kumar Kori <skori@marvell.com>,
 Bruce Richardson <bruce.richardson@intel.com>
CC: <dev@dpdk.org>, <thomas@monjalon.net>, <david.marchand@redhat.com>,
 <mattias.ronnblom@ericsson.com>
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 <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

From: Jerin Jacob <jerinj@marvell.com>

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 <jerinj@marvell.com>
---
 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 <rte_per_lcore.h>
 #include <rte_eal.h>
 #include <rte_lcore.h>
-#include <rte_trace.h>
-#include <rte_trace_point.h>
+#include <rte_trace_eal.h>
 
 #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 <rte_per_lcore.h>
 #include <rte_eal.h>
 #include <rte_lcore.h>
-#include <rte_trace.h>
-#include <rte_trace_point.h>
+#include <rte_trace_eal.h>
 
 #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