All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@infradead.org>
To: Ingo Molnar <mingo@elte.hu>
Cc: linux-kernel@vger.kernel.org, Jim Cromie <jim.cromie@gmail.com>,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 07/16] perf stat: Add --log-fd <N> option to redirect stderr elsewhere
Date: Thu, 29 Sep 2011 19:48:01 -0300	[thread overview]
Message-ID: <1317336490-19437-8-git-send-email-acme@infradead.org> (raw)
In-Reply-To: <1317336490-19437-1-git-send-email-acme@infradead.org>

From: Jim Cromie <jim.cromie@gmail.com>

This perf stat option emulates valgrind's --log-fd option, allowing the
user to send perf results elsewhere, and leaving stderr for use by the
program under test.  This complements --output file option, and is
mutually exclusive with it.

   3>results  perf stat --log-fd 3          -- $cmd
   3>>results perf stat --log-fd 3 --append -- $cmd

The perl distro's make test.valgrind target uses valgrind's --log-fd
option, I've adapted it to invoke perf also, and tested this patch
there.

Link: http://lkml.kernel.org/r/1315437244-3788-2-git-send-email-jim.cromie@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Documentation/perf-stat.txt |   11 ++++++++++-
 tools/perf/builtin-stat.c              |   14 ++++++++++++++
 2 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/tools/perf/Documentation/perf-stat.txt b/tools/perf/Documentation/perf-stat.txt
index 08394c4..8966b9a 100644
--- a/tools/perf/Documentation/perf-stat.txt
+++ b/tools/perf/Documentation/perf-stat.txt
@@ -95,12 +95,21 @@ corresponding events, i.e., they always refer to events defined earlier on the c
 line.
 
 -o file::
--output file::
+--output file::
 Print the output into the designated file.
 
 --append::
 Append to the output file designated with the -o option. Ignored if -o is not specified.
 
+--log-fd::
+
+Log output to fd, instead of stderr.  Complementary to --output, and mutually exclusive
+with it.  --append may be used here.  Examples:
+     3>results  perf stat --log-fd 3          -- $cmd
+     3>>results perf stat --log-fd 3 --append -- $cmd
+
+
+
 EXAMPLES
 --------
 
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index bec64a9..a43c680 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -196,6 +196,7 @@ static bool			csv_output			= false;
 static bool			group				= false;
 static const char		*output_name			= NULL;
 static FILE			*output				= NULL;
+static int			output_fd;
 
 static volatile int done = 0;
 
@@ -1080,6 +1081,8 @@ static const struct option options[] = {
 	OPT_STRING('o', "output", &output_name, "file",
 		    "output file name"),
 	OPT_BOOLEAN(0, "append", &append_file, "append to the output file"),
+	OPT_INTEGER(0, "log-fd", &output_fd,
+		    "log output to fd, instead of stderr"),
 	OPT_END()
 };
 
@@ -1166,6 +1169,10 @@ int cmd_stat(int argc, const char **argv, const char *prefix __used)
 	if (output_name && strcmp(output_name, "-"))
 		output = NULL;
 
+	if (output_name && output_fd) {
+		fprintf(stderr, "cannot use both --output and --log-fd\n");
+		usage_with_options(stat_usage, options);
+	}
 	if (!output) {
 		struct timespec tm;
 		mode = append_file ? "a" : "w";
@@ -1177,6 +1184,13 @@ int cmd_stat(int argc, const char **argv, const char *prefix __used)
 		}
 		clock_gettime(CLOCK_REALTIME, &tm);
 		fprintf(output, "# started on %s\n", ctime(&tm.tv_sec));
+	} else if (output_fd != 2) {
+		mode = append_file ? "a" : "w";
+		output = fdopen(output_fd, mode);
+		if (!output) {
+			perror("Failed opening logfd");
+			return -errno;
+		}
 	}
 
 	if (csv_sep)
-- 
1.6.2.5


  parent reply	other threads:[~2011-09-29 22:51 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-29 22:47 [GIT PULL 00/16] perf/core improvements and fixes Arnaldo Carvalho de Melo
2011-09-29 22:47 ` [PATCH 01/16] perf symbols: Stop using 'self' in map_groups__ methods Arnaldo Carvalho de Melo
2011-09-29 22:47 ` [PATCH 02/16] perf script: Add drop monitor script Arnaldo Carvalho de Melo
2011-09-29 22:47 ` [PATCH 03/16] perf buildid-list: Add option to show the running kernel build id Arnaldo Carvalho de Melo
2011-09-29 22:47 ` [PATCH 04/16] perf buildid-list: Support showing the build id in an ELF file Arnaldo Carvalho de Melo
2011-09-29 22:47 ` [PATCH 05/16] perf top browser: Fix up line width calculation Arnaldo Carvalho de Melo
2011-09-29 22:48 ` [PATCH 06/16] perf top: Improve lost events warning Arnaldo Carvalho de Melo
2011-09-29 22:48 ` Arnaldo Carvalho de Melo [this message]
2012-06-18 14:51   ` [PATCH] perf stat: Fix default logfd to use stderr Robert Richter
2012-06-19  2:13     ` Namhyung Kim
2012-06-19  6:09       ` Stephane Eranian
2012-06-19 11:31         ` Robert Richter
2012-06-19 11:31           ` Robert Richter
2012-06-19 11:34         ` Arnaldo Carvalho de Melo
2012-06-20 12:23           ` Stephane Eranian
2011-09-29 22:48 ` [PATCH 08/16] perf stat: Fix +- nan% in --no-aggr runs Arnaldo Carvalho de Melo
2011-09-29 22:48 ` [PATCH 09/16] perf stat: Suppress printing std-dev when its 0 Arnaldo Carvalho de Melo
2011-09-29 22:48 ` [PATCH 10/16] perf stat: Allow tab as cvs delimiter Arnaldo Carvalho de Melo
2011-10-09 20:58   ` Paul Bolle
2011-09-29 22:48 ` [PATCH 11/16] perf stat: Fix spelling in comment Arnaldo Carvalho de Melo
2011-09-29 22:48 ` [PATCH 12/16] perf tools: Make stat/record print fatal signals of the target program Arnaldo Carvalho de Melo
2011-09-29 22:48 ` [PATCH 13/16] perf: Support setting the disassembler style Arnaldo Carvalho de Melo
2011-09-29 22:48 ` [PATCH 14/16] perf report: Fix stdio event name header printing Arnaldo Carvalho de Melo
2011-09-29 22:48 ` [PATCH 15/16] perf sched: Fix script command documentation Arnaldo Carvalho de Melo
2011-09-29 22:48 ` [PATCH 16/16] perf symbols: Treat all memory maps without dso file as loaded Arnaldo Carvalho de Melo
2011-10-04  7:57 ` [GIT PULL 00/16] perf/core improvements and fixes Ingo Molnar

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=1317336490-19437-8-git-send-email-acme@infradead.org \
    --to=acme@infradead.org \
    --cc=acme@redhat.com \
    --cc=jim.cromie@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    /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.