linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@infradead.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org,
	Steven Rostedt <rostedt@goodmis.org>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 01/34] tools lib traceevent: Use helper trace-seq in print functions like kernel does
Date: Wed, 27 Nov 2013 17:16:01 -0300	[thread overview]
Message-ID: <1385583394-3703-2-git-send-email-acme@infradead.org> (raw)
In-Reply-To: <1385583394-3703-1-git-send-email-acme@infradead.org>

From: Steven Rostedt <rostedt@goodmis.org>

Jiri Olsa reported that his plugin for scsi was chopping off part of the
output. Investigating this, I found that Jiri used the same functions as
what is in the kernel, which adds the following:

	trace_seq_putc(p, 0);

This adds a '\0' to the output string. The reason this works in the
kernel is that the "p" that is passed to the function helper is a
temporary trace_seq. But in the libtraceevent library, it's the pointer
to the trace_seq used to output. By adding the '\0', it truncates the
line and nothing added after that will be printed.

We can solve this in two ways. One is to have the helper functions for
the library not add the unnecessary '\0'. The other is to change the
library to also use a helper trace_seq structure that gets copied to the
main trace_seq just like the kernel does.

The latter allows the helper functions in the plugins to be the same as
the kernel, which is the better solution.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Reported-by: Jiri Olsa <jolsa@redhat.com>
Tested-by: Jiri Olsa <jolsa@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/20131119182937.401668e3@gandalf.local.home
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/lib/traceevent/event-parse.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c
index 217c82ee3665..900fca01bdd3 100644
--- a/tools/lib/traceevent/event-parse.c
+++ b/tools/lib/traceevent/event-parse.c
@@ -4099,6 +4099,7 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct event
 	unsigned long long val;
 	struct func_map *func;
 	const char *saveptr;
+	struct trace_seq p;
 	char *bprint_fmt = NULL;
 	char format[32];
 	int show_func;
@@ -4306,8 +4307,12 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct event
 				format[len] = 0;
 				if (!len_as_arg)
 					len_arg = -1;
-				print_str_arg(s, data, size, event,
+				/* Use helper trace_seq */
+				trace_seq_init(&p);
+				print_str_arg(&p, data, size, event,
 					      format, len_arg, arg);
+				trace_seq_terminate(&p);
+				trace_seq_puts(s, p.buffer);
 				arg = arg->next;
 				break;
 			default:
-- 
1.8.1.4


  reply	other threads:[~2013-11-27 20:16 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-27 20:16 [PATCH 00/34] perf/core improvements and fixes Arnaldo Carvalho de Melo
2013-11-27 20:16 ` Arnaldo Carvalho de Melo [this message]
2013-11-27 20:16 ` [PATCH 02/34] perf trace: Remove thread summary coloring Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 03/34] perf top: Make -g refer to callchains Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 04/34] perf completion: Introduce a layer of indirection Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 05/34] perf completion: Factor out compgen stuff Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 06/34] perf completion: Factor out call to __ltrim_colon_completions Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 07/34] perf completion: Introduce zsh support Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 08/34] perf completion: Rename file to reflect " Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 09/34] perf script: Move evname print code to process_event() Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 10/34] perf record: Make per-cpu mmaps the default Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 11/34] perf tools: Allow '--inherit' as the negation of '--no-inherit' Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 12/34] perf tools: Add option macro OPT_BOOLEAN_SET Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 13/34] perf record: Default -t option to no inheritance Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 14/34] perf timechart: Always try to print at least 15 tasks Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 15/34] perf timechart: Add option to limit number of tasks Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 16/34] perf timechart: Use proc_num to implement --power-only Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 17/34] perf timechart: Add support for displaying only tasks related data Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 18/34] perf timechart: Group figures and add title with details Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 19/34] perf timechart: Add support for -P and -T in timechart recording Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 20/34] perf timechart: Add backtrace support Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 21/34] perf evsel: Skip ignored symbols while printing callchain Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 22/34] perf symbols: Move idle syms check from top to generic function Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 23/34] perf thread: Move comm_list check into function Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 24/34] perf tools: Export setup_list Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 25/34] perf script: Print callchains and symbols if they exist Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 26/34] perf script: Print comm, fork and exit events also Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 27/34] perf script: Print mmap[2] " Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 28/34] perf symbols: Fix not finding kcore in buildid cache Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 29/34] perf timechart: dynamically determine event fields offset Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 30/34] perf timechart: Remove some needless struct forward declarations Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 31/34] perf timechart: Remove misplaced __maybe_unused Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 32/34] perf tools: Fix tags/TAGS targets rebuilding Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 33/34] perf tools: Add per-feature check flags Arnaldo Carvalho de Melo
2013-11-27 20:16 ` [PATCH 34/34] perf tools unwinding: Use the " Arnaldo Carvalho de Melo
2013-11-27 22:43   ` Jiri Olsa
2013-11-28  9:58     ` Jiri Olsa
2013-11-28 12:56       ` Arnaldo Carvalho de Melo
2013-11-28 13:46         ` Arnaldo Carvalho de Melo
2013-11-28 20:02           ` Jean Pihet
2013-11-29 15:45             ` Jiri Olsa
2013-12-03 16:15               ` Jean Pihet
2013-12-07 10:17                 ` Jean Pihet

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=1385583394-3703-2-git-send-email-acme@infradead.org \
    --to=acme@infradead.org \
    --cc=acme@redhat.com \
    --cc=fweisbec@gmail.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=rostedt@goodmis.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).