From: Jiri Olsa <jolsa@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Ingo Molnar <mingo@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Namhyung Kim <namhyung@kernel.org>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Michael Petlan <mpetlan@redhat.com>,
Ian Rogers <irogers@google.com>,
Stephane Eranian <eranian@google.com>,
Alexei Budankov <abudankov@huawei.com>
Subject: [PATCH 3/3] perf tools: Allow to list events via control file
Date: Sun, 6 Dec 2020 18:05:19 +0100 [thread overview]
Message-ID: <20201206170519.4010606-4-jolsa@kernel.org> (raw)
In-Reply-To: <20201206170519.4010606-1-jolsa@kernel.org>
Adding new control event to display all evlist events.
The interface string for control file is 'list'. When
received, perf will scan and print current evlist into
perf record terminal.
Example session:
terminal 1:
# mkfifo control ack perf.pipe
# perf record --control=fifo:control,ack -D -1 --no-buffering -e 'sched:*' -o - > perf.pipe
Events disabled
terminal 2:
# echo list > control
terminal 1:
# perf record --control=fifo:control,ack -D -1 --no-buffering -e 'sched:*' -o - > perf.pipe
...
sched:sched_kthread_stop
sched:sched_kthread_stop_ret
sched:sched_waking
sched:sched_wakeup
sched:sched_wakeup_new
sched:sched_switch
sched:sched_migrate_task
sched:sched_process_free
sched:sched_process_exit
sched:sched_wait_task
sched:sched_process_wait
sched:sched_process_fork
sched:sched_process_exec
sched:sched_stat_wait
sched:sched_stat_sleep
sched:sched_stat_iowait
sched:sched_stat_blocked
sched:sched_stat_runtime
sched:sched_pi_setprio
sched:sched_move_numa
sched:sched_stick_numa
sched:sched_swap_numa
sched:sched_wake_idle_without_ipi
dummy:HG
This new command is handy to get real event names when
wildcards are used.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
tools/perf/builtin-record.c | 1 +
tools/perf/builtin-stat.c | 1 +
tools/perf/util/evlist.c | 6 ++++++
tools/perf/util/evlist.h | 2 ++
4 files changed, 10 insertions(+)
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 582b8fba012c..f620ed056c89 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -1951,6 +1951,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
case EVLIST_CTL_CMD_UNSUPPORTED:
case EVLIST_CTL_CMD_ENABLE_EVSEL:
case EVLIST_CTL_CMD_DISABLE_EVSEL:
+ case EVLIST_CTL_CMD_LIST:
default:
break;
}
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 6a21fb665008..56f2206b5991 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -592,6 +592,7 @@ static void process_evlist(struct evlist *evlist, unsigned int interval)
case EVLIST_CTL_CMD_UNSUPPORTED:
case EVLIST_CTL_CMD_ENABLE_EVSEL:
case EVLIST_CTL_CMD_DISABLE_EVSEL:
+ case EVLIST_CTL_CMD_LIST:
default:
break;
}
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 05723227bebf..c05476ca2ff4 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -1931,6 +1931,9 @@ static int evlist__ctlfd_recv(struct evlist *evlist, enum evlist_ctl_cmd *cmd,
(sizeof(EVLIST_CTL_CMD_SNAPSHOT_TAG)-1))) {
*cmd = EVLIST_CTL_CMD_SNAPSHOT;
pr_debug("is snapshot\n");
+ } else if (!strncmp(cmd_data, EVLIST_CTL_CMD_LIST_TAG,
+ (sizeof(EVLIST_CTL_CMD_LIST_TAG)-1))) {
+ *cmd = EVLIST_CTL_CMD_LIST;
}
}
@@ -1995,6 +1998,9 @@ int evlist__ctlfd_process(struct evlist *evlist, enum evlist_ctl_cmd *cmd)
pr_info("failed: can't find %s event\n", evsel_name);
}
break;
+ case EVLIST_CTL_CMD_LIST:
+ evlist__for_each_entry(evlist, evsel)
+ pr_info("%s\n", evsel__name(evsel));
case EVLIST_CTL_CMD_SNAPSHOT:
break;
case EVLIST_CTL_CMD_ACK:
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
index e4e8ff8831a3..6b8a9918fdb2 100644
--- a/tools/perf/util/evlist.h
+++ b/tools/perf/util/evlist.h
@@ -332,6 +332,7 @@ struct evsel *evlist__reset_weak_group(struct evlist *evlist, struct evsel *evse
#define EVLIST_CTL_CMD_SNAPSHOT_TAG "snapshot"
#define EVLIST_CTL_CMD_ENABLE_EVSEL_TAG "enable-"
#define EVLIST_CTL_CMD_DISABLE_EVSEL_TAG "disable-"
+#define EVLIST_CTL_CMD_LIST_TAG "list"
#define EVLIST_CTL_CMD_MAX_LEN 64
@@ -343,6 +344,7 @@ enum evlist_ctl_cmd {
EVLIST_CTL_CMD_DISABLE_EVSEL,
EVLIST_CTL_CMD_ACK,
EVLIST_CTL_CMD_SNAPSHOT,
+ EVLIST_CTL_CMD_LIST,
};
int evlist__parse_control(const char *str, int *ctl_fd, int *ctl_fd_ack, bool *ctl_fd_close);
--
2.26.2
next prev parent reply other threads:[~2020-12-06 17:06 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-06 17:05 [PATCH 0/3] perf tools: Allow to enable/disable events via control pipe Jiri Olsa
2020-12-06 17:05 ` [PATCH 1/3] perf tools: Add evlist__disable_evsel/evlist__enable_evsel Jiri Olsa
2020-12-07 17:12 ` Alexei Budankov
2020-12-06 17:05 ` [PATCH 2/3] perf tools: Allow to enable/disable events via control file Jiri Olsa
2020-12-07 17:02 ` Alexei Budankov
2020-12-10 16:24 ` Jiri Olsa
2020-12-10 17:15 ` Arnaldo Carvalho de Melo
2020-12-10 17:19 ` Arnaldo Carvalho de Melo
2020-12-10 17:26 ` [BUG] jevents problem when cross building " Arnaldo Carvalho de Melo
2020-12-10 17:44 ` John Garry
2020-12-10 18:17 ` Arnaldo Carvalho de Melo
2020-12-10 18:27 ` John Garry
2020-12-10 19:57 ` John Garry
2020-12-16 11:41 ` John Garry
2020-12-16 14:01 ` Arnaldo Carvalho de Melo
2020-12-10 18:06 ` Jiri Olsa
2020-12-10 18:20 ` Alexei Budankov
2020-12-10 18:27 ` Arnaldo Carvalho de Melo
2020-12-10 18:32 ` Alexei Budankov
2020-12-06 17:05 ` Jiri Olsa [this message]
2020-12-07 16:28 ` [PATCH 3/3] perf tools: Allow to list " Arnaldo Carvalho de Melo
2020-12-07 17:09 ` Alexei Budankov
2020-12-07 19:53 ` Jiri Olsa
2020-12-07 19:51 ` Jiri Olsa
2020-12-07 13:25 ` [PATCH 0/3] perf tools: Allow to enable/disable events via control pipe Namhyung Kim
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=20201206170519.4010606-4-jolsa@kernel.org \
--to=jolsa@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=abudankov@huawei.com \
--cc=acme@kernel.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=eranian@google.com \
--cc=irogers@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@kernel.org \
--cc=mpetlan@redhat.com \
--cc=namhyung@kernel.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).