From: yuzhoujian <ufo19890607@gmail.com>
To: peterz@infradead.org, mingo@redhat.com,
alexander.shishkin@linux.intel.com, jolsa@kernel.org,
dsahern@gmail.com, namhyung@kernel.org, milian.wolff@kdab.com,
arnaldo.melo@gmail.com, yuzhoujian@didichuxing.com,
adrian.hunter@intel.com, wangnan0@huawei.com
Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
acme@redhat.com
Subject: [PATCH v5 1/2] Add new elements for per-event-dump option
Date: Wed, 25 Oct 2017 16:53:18 +0800 [thread overview]
Message-ID: <1508921599-10832-2-git-send-email-yuzhoujian@didichuxing.com> (raw)
In-Reply-To: <1508921599-10832-1-git-send-email-yuzhoujian@didichuxing.com>
This patch will add two elements for perf_tool struct: per_event_dump
is used to mark the per-event-dump option, last_evsel_name is used
to save last evsel's name. Add a new struct perf_script_evsel to
save evsel's specific data. There are three elements in this new struct:
dump_evsel_fp is used to save the file pointer of the dump_event file,
filename is used to save the file name of the dump_event file, samples
is used to save the number of samples for each evsel. The perf_script_evsel
struct will be saved in the evsel->priv. Add the OPT_BOOLEAN for per-event-dump
in the perf_data_file struct.
Changes since v4:
- none.
Changes since v3:
- remove three elements for perf_evsel struct and create a new struct:
perf_script_evsel to save them.
Changes since v2:
- add the last_evsel_name for per_tool struct to save last evsel's name.
- add three elements for perf_evsel struct:dump_event_fp is used to save
the file pointer of the dump_event file, filename is used to save the file
name of the dump_event file, samples is used to save the number of samples
for each evsel.
Changes since v1:
- remove the set for script.tool.per_event_dump variable,since the OPT_BOOLEAN
will do the same thing.
Signed-off-by: yuzhoujian <yuzhoujian@didichuxing.com>
---
tools/perf/builtin-script.c | 3 +++
tools/perf/util/evsel.h | 11 +++++++++++
tools/perf/util/tool.h | 2 ++
3 files changed, 16 insertions(+)
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index a3add2c..81f141f 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -2758,6 +2758,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 = {
@@ -2828,6 +2829,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,
+ "Dump 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"),
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index db65878..abe728d 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -5,6 +5,7 @@
#include <stdbool.h>
#include <stddef.h>
#include <linux/perf_event.h>
+#include <stdio.h>
#include <linux/types.h>
#include "xyarray.h"
#include "symbol.h"
@@ -51,6 +52,16 @@ enum {
PERF_EVSEL__CONFIG_TERM_MAX,
};
+/*
+ * The struct perf_script_evsel is used to save the dump file's name,
+ * dump file's fp and the total number of samples for each evsel.
+ */
+struct perf_script_evsel {
+ char *filename;
+ FILE *dump_evsel_fp;
+ unsigned long samples;
+};
+
struct perf_evsel_config_term {
struct list_head list;
int type;
diff --git a/tools/perf/util/tool.h b/tools/perf/util/tool.h
index d549e50..2cbcee4 100644
--- a/tools/perf/util/tool.h
+++ b/tools/perf/util/tool.h
@@ -75,6 +75,8 @@ struct perf_tool {
bool ordered_events;
bool ordering_requires_timestamps;
bool namespace_events;
+ bool per_event_dump;
+ const char *last_evsel_name;
enum show_feature_header show_feat_hdr;
};
--
1.8.3.1
next prev parent reply other threads:[~2017-10-25 8:54 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-25 8:53 [PATCH v5 0/2] perf script: Add script per-event-dump support yuzhoujian
2017-10-25 8:53 ` yuzhoujian [this message]
2017-10-26 13:01 ` [PATCH v5 1/2] Add new elements for per-event-dump option Arnaldo Carvalho de Melo
2017-10-26 13:46 ` Arnaldo Carvalho de Melo
2017-10-25 8:53 ` [PATCH v5 2/2] Add the fp_selection_helper to set the fp for print functions yuzhoujian
2017-11-03 14:17 ` [tip:perf/core] perf script: Allow creating per-event dump files tip-bot for Arnaldo Carvalho de Melo
2017-11-03 14:19 ` [tip:perf/core] perf script: Print information about per-event-dump files tip-bot for Arnaldo Carvalho de Melo
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=1508921599-10832-2-git-send-email-yuzhoujian@didichuxing.com \
--to=ufo19890607@gmail.com \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=arnaldo.melo@gmail.com \
--cc=dsahern@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=milian.wolff@kdab.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=wangnan0@huawei.com \
--cc=yuzhoujian@didichuxing.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.