All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org, linux-trace-devel@vger.kernel.org
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Ingo Molnar <mingo@kernel.org>, Jiri Olsa <jolsa@redhat.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com>
Subject: [PATCH 10/23 v3] tools lib traceevent: Add offset option for function plugin
Date: Tue, 21 Jul 2020 21:16:38 -0400	[thread overview]
Message-ID: <20200722011753.827936853@goodmis.org> (raw)
In-Reply-To: 20200722011628.925541477@goodmis.org

From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>

When the offset option is set for the function plugin enabled, it will
display the offset of the functions along with their names.  This helps in
finding exactly where a function was called by its parent.

 trace-cmd report -O parent -O offset
[..]
        rcuc/163-1330  [163]   740.653251: function: _raw_spin_lock+0x0  <-- rcu_cpu_kthread+0x4d8

Link: http://lore.kernel.org/linux-trace-devel/20200702174950.123454-2-tz.stoyanov@gmail.com

Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
[ Ported from trace-cmd.git ]
Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
 .../lib/traceevent/plugins/plugin_function.c  | 24 +++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/tools/lib/traceevent/plugins/plugin_function.c b/tools/lib/traceevent/plugins/plugin_function.c
index 7770fcb78e0f..cafddd6be983 100644
--- a/tools/lib/traceevent/plugins/plugin_function.c
+++ b/tools/lib/traceevent/plugins/plugin_function.c
@@ -49,6 +49,13 @@ struct tep_plugin_option plugin_options[] =
 		"Try to show function call indents, based on parents",
 		.set = 1,
 	},
+	{
+		.name = "offset",
+		.plugin_alias = "ftrace",
+		.description =
+		"Show function names as well as their offsets",
+		.set = 0,
+	},
 	{
 		.name = NULL,
 	}
@@ -56,6 +63,7 @@ struct tep_plugin_option plugin_options[] =
 
 static struct tep_plugin_option *ftrace_parent = &plugin_options[0];
 static struct tep_plugin_option *ftrace_indent = &plugin_options[1];
+static struct tep_plugin_option *ftrace_offset = &plugin_options[2];
 
 static void add_child(struct func_stack *stack, const char *child, int pos)
 {
@@ -123,6 +131,18 @@ static int add_and_get_index(const char *parent, const char *child, int cpu)
 	return 0;
 }
 
+static void show_function(struct trace_seq *s, struct tep_handle *tep,
+			  const char *func, unsigned long long function)
+{
+	unsigned long long offset;
+
+	trace_seq_printf(s, "%s", func);
+	if (ftrace_offset->set) {
+		offset = tep_find_function_address(tep, function);
+		trace_seq_printf(s, "+0x%x ", (int)(function - offset));
+	}
+}
+
 static int function_handler(struct trace_seq *s, struct tep_record *record,
 			    struct tep_event *event, void *context)
 {
@@ -149,14 +169,14 @@ static int function_handler(struct trace_seq *s, struct tep_record *record,
 	trace_seq_printf(s, "%*s", index*3, "");
 
 	if (func)
-		trace_seq_printf(s, "%s", func);
+		show_function(s, tep, func, function);
 	else
 		trace_seq_printf(s, "0x%llx", function);
 
 	if (ftrace_parent->set) {
 		trace_seq_printf(s, " <-- ");
 		if (parent)
-			trace_seq_printf(s, "%s", parent);
+			show_function(s, tep, parent, pfunction);
 		else
 			trace_seq_printf(s, "0x%llx", pfunction);
 	}
-- 
2.26.2



  parent reply	other threads:[~2020-07-22  1:18 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-22  1:16 [PATCH 00/23 v3] tools lib traceevent: Synchronizing trace-cmd with tools Steven Rostedt
2020-07-22  1:16 ` [PATCH 01/23 v3] tools lib traceevent: Add API to read time information from kbuffer Steven Rostedt
2020-07-22  1:16 ` [PATCH 02/23 v3] tools lib traceevent: Add proper KBUFFER_TYPE_TIME_STAMP handling Steven Rostedt
2020-07-22  1:16 ` [PATCH 03/23 v3] tools lib traceevent: Add tep_load_plugins_hook() API Steven Rostedt
2020-07-22  1:16 ` [PATCH 04/23 v3] tools lib traceevent: Add interface for options to plugins Steven Rostedt
2020-07-22  1:16 ` [PATCH 05/23 v3] tools lib traceevent: Introduced new traceevent API, for adding new plugins directories Steven Rostedt
2020-07-22  1:16 ` [PATCH 06/23 v3] tools lib traceevent: Add support for more printk format specifiers Steven Rostedt
2020-07-22  1:16 ` [PATCH 07/23 v3] tools lib traceevent: Optimize pretty_print() function Steven Rostedt
2020-07-22  1:16 ` [PATCH 08/23 v3] tools lib traceevent: Add plugin for tlb_flush Steven Rostedt
2020-07-22  1:16 ` [PATCH 09/23 v3] tools lib traceevent: Add more SVM exit reasons Steven Rostedt
2020-07-22  1:16 ` Steven Rostedt [this message]
2020-07-22  1:16 ` [PATCH 11/23 v3] tools lib traceevent: Add plugin for decoding syscalls/sys_enter_futex Steven Rostedt
2020-07-22  1:16 ` [PATCH 12/23 v3] tools lib traceevent: Move kernel_stack event handler to "function" plugin Steven Rostedt
2020-07-22  1:16 ` [PATCH 13/23 v3] tools lib traceevent: Add builtin handler for trace_marker_raw Steven Rostedt
2020-07-22  1:16 ` [PATCH 14/23 v3] tools lib traceevent: Change to SPDX License format Steven Rostedt
2020-07-22  1:16 ` [PATCH 15/23 v3] tools lib traceevent: Fix reporting of unknown SVM exit reasons Steven Rostedt
2020-07-22  1:16 ` [PATCH 16/23 v3] tools lib traceevent: Document tep_load_plugins_hook() Steven Rostedt
2020-07-22  1:16 ` [PATCH 17/23 v3] tools lib traceevent: Handle strdup() error in parse_option_name() Steven Rostedt
2020-07-22  1:16 ` [PATCH 18/23 v3] tools lib traceevent: Fix typo in tep_plugin_add_option() description Steven Rostedt
2020-07-22  1:16 ` [PATCH 19/23 v3] tools lib traceevent: Improve error handling of tep_plugin_add_option() API Steven Rostedt
2020-07-22  1:16 ` [PATCH 20/23 v3] tools lib traceevent: Fixed broken indentation in parse_ip4_print_args() Steven Rostedt
2020-07-22  1:16 ` [PATCH 21/23 v3] tools lib traceevent: Fixed type in PRINT_FMT_STING Steven Rostedt
2020-07-22  1:16 ` [PATCH 22/23 v3] tools lib traceevent: Fixed description of tep_add_plugin_path() API Steven Rostedt
2020-07-22  1:16 ` [PATCH 23/23 v3] tools lib traceevent: Handle possible strdup() error in " Steven Rostedt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200722011753.827936853@goodmis.org \
    --to=rostedt@goodmis.org \
    --cc=acme@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-trace-devel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=tz.stoyanov@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.