[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1505714122-39141-2-git-send-email-yuzhoujian@didichuxing.com>
Date: Mon, 18 Sep 2017 13:55:19 +0800
From: yuzhoujian <ufo19890607@...il.com>
To: peterz@...radead.org, mingo@...hat.com,
alexander.shishkin@...ux.intel.com, jolsa@...nel.org,
dsahern@...il.com, namhyung@...nel.org, milian.wolff@...b.com,
arnaldo.melo@...il.com, yuzhoujian@...ichuxing.com
Cc: linux-perf-users@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH 1/4] Add a new element for the struct perf_tool, and add the --per-event-dump option for perf script
Signed-off-by: yuzhoujian <yuzhoujian@...ichuxing.com>
---
tools/perf/builtin-script.c | 11 ++++++++++-
tools/perf/util/tool.h | 1 +
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 378f76c..91b5225 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -57,6 +57,7 @@
static DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS);
static struct perf_stat_config stat_config;
static int max_blocks;
+static FILE *per_event_dump_file;
unsigned int scripting_max_stack = PERF_MAX_STACK_DEPTH;
@@ -2690,6 +2691,7 @@ int cmd_script(int argc, const char **argv)
.cpu_map = process_cpu_map_event,
.ordered_events = true,
.ordering_requires_timestamps = true,
+ .per_event_dump = false,
},
};
struct perf_data_file file = {
@@ -2760,6 +2762,8 @@ int cmd_script(int argc, const char **argv)
"Show context switch events (if recorded)"),
OPT_BOOLEAN('\0', "show-namespace-events", &script.show_namespace_events,
"Show namespace events (if recorded)"),
+ OPT_BOOLEAN('\0', "per-event-dump", &script.tool.per_event_dump,
+ "print trace output to files named by the monitored events"),
OPT_BOOLEAN('f', "force", &symbol_conf.force, "don't complain, do it"),
OPT_INTEGER(0, "max-blocks", &max_blocks,
"Maximum number of code blocks to dump with brstackinsn"),
@@ -2797,7 +2801,12 @@ int cmd_script(int argc, const char **argv)
file.path = input_name;
file.force = symbol_conf.force;
-
+ for (i = 1; argv[i] != NULL; i++) {
+ if (strcmp(argv[i], "--per-event-dump") == 0) {
+ script.tool.per_event_dump = true;
+ break;
+ }
+ }
if (argc > 1 && !strncmp(argv[0], "rec", strlen("rec"))) {
rec_script_path = get_script_path(argv[1], RECORD_SUFFIX);
if (!rec_script_path)
diff --git a/tools/perf/util/tool.h b/tools/perf/util/tool.h
index d549e50..ad40931 100644
--- a/tools/perf/util/tool.h
+++ b/tools/perf/util/tool.h
@@ -75,6 +75,7 @@ struct perf_tool {
bool ordered_events;
bool ordering_requires_timestamps;
bool namespace_events;
+ bool per_event_dump;
enum show_feature_header show_feat_hdr;
};
--
1.8.3.1
Powered by blists - more mailing lists