From: Ian Rogers <irogers@google.com>
To: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Kan Liang <kan.liang@linux.intel.com>,
James Clark <james.clark@linaro.org>,
Howard Chu <howardchu95@gmail.com>,
Athira Jajeev <atrajeev@linux.vnet.ibm.com>,
Michael Petlan <mpetlan@redhat.com>,
Veronika Molnarova <vmolnaro@redhat.com>,
Dapeng Mi <dapeng1.mi@linux.intel.com>,
Thomas Richter <tmricht@linux.ibm.com>,
Ilya Leoshkevich <iii@linux.ibm.com>,
Colin Ian King <colin.i.king@gmail.com>,
Weilin Wang <weilin.wang@intel.com>,
Andi Kleen <ak@linux.intel.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org
Subject: [PATCH v2 16/16] perf python: Add parse_events function
Date: Tue, 15 Oct 2024 21:24:15 -0700 [thread overview]
Message-ID: <20241016042415.7552-17-irogers@google.com> (raw)
In-Reply-To: <20241016042415.7552-1-irogers@google.com>
Add basic parse_events function that takes a string and returns an
evlist.
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/util/python.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c
index 6e2ff0076daa..ec37f887db43 100644
--- a/tools/perf/util/python.c
+++ b/tools/perf/util/python.c
@@ -1201,6 +1201,30 @@ static PyObject *pyrf__tracepoint(struct pyrf_evsel *pevsel,
#endif // HAVE_LIBTRACEEVENT
}
+static PyObject *pyrf__parse_events(PyObject *self, PyObject *args)
+{
+ const char *input;
+ struct pyrf_evlist *pevlist;
+ struct parse_events_error err;
+
+ if (!PyArg_ParseTuple(args, "s", &input))
+ return NULL;
+
+ pevlist = PyObject_New(struct pyrf_evlist, &pyrf_evlist__type);
+ if (!pevlist)
+ return NULL;
+
+ parse_events_error__init(&err);
+ memset(&pevlist->evlist, 0, sizeof(pevlist->evlist));
+ evlist__init(&pevlist->evlist, NULL, NULL);
+ if (parse_events(&pevlist->evlist, input, &err)) {
+ parse_events_error__print(&err, input);
+ PyErr_SetFromErrno(PyExc_OSError);
+ return NULL;
+ }
+ return (PyObject *)pevlist;
+}
+
static PyMethodDef perf__methods[] = {
{
.ml_name = "tracepoint",
@@ -1208,6 +1232,12 @@ static PyMethodDef perf__methods[] = {
.ml_flags = METH_VARARGS | METH_KEYWORDS,
.ml_doc = PyDoc_STR("Get tracepoint config.")
},
+ {
+ .ml_name = "parse_events",
+ .ml_meth = (PyCFunction) pyrf__parse_events,
+ .ml_flags = METH_VARARGS,
+ .ml_doc = PyDoc_STR("Parse a string of events and return an evlist.")
+ },
{ .ml_name = NULL, }
};
--
2.47.0.rc1.288.g06298d1525-goog
prev parent reply other threads:[~2024-10-16 4:25 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-16 4:23 [PATCH v2 00/16] Python module cleanup Ian Rogers
2024-10-16 4:24 ` [PATCH v2 01/16] perf python: Remove python 2 scripting support Ian Rogers
2024-10-16 4:24 ` [PATCH v2 02/16] perf python: Constify variables and parameters Ian Rogers
2024-10-16 4:24 ` [PATCH v2 03/16] perf python: Remove unused #include Ian Rogers
2024-10-16 4:24 ` [PATCH v2 04/16] perf script: Move scripting_max_stack out of builtin Ian Rogers
2024-10-16 4:24 ` [PATCH v2 05/16] perf kvm: Move functions used in util " Ian Rogers
2024-10-16 4:24 ` [PATCH v2 06/16] perf script: Move find_scripts to browser/scripts.c Ian Rogers
2024-10-16 4:24 ` [PATCH v2 07/16] perf stat: Move stat_config into config.c Ian Rogers
2024-10-22 5:55 ` Namhyung Kim
2024-10-22 17:21 ` Ian Rogers
2024-10-16 4:24 ` [PATCH v2 08/16] perf script: Move script_spec code to trace-event-scripting.c Ian Rogers
2024-10-16 4:24 ` [PATCH v2 09/16] perf script: Move script_fetch_insn " Ian Rogers
2024-10-16 4:24 ` [PATCH v2 10/16] perf script: Move perf_sample__sprintf_flags " Ian Rogers
2024-10-16 4:24 ` [PATCH v2 11/16] perf env: Move arch errno function to only use in env Ian Rogers
2024-10-16 4:24 ` [PATCH v2 12/16] perf lock: Move common lock contention code to new file Ian Rogers
2024-10-22 6:36 ` Namhyung Kim
2024-10-22 16:56 ` Ian Rogers
2024-10-16 4:24 ` [PATCH v2 13/16] perf bench: Remove reference to cmd_inject Ian Rogers
2024-10-22 6:44 ` Namhyung Kim
2024-10-22 17:15 ` Ian Rogers
2024-10-16 4:24 ` [PATCH v2 14/16] perf kwork: Make perf_kwork_add_work a callback Ian Rogers
2024-10-16 4:24 ` [PATCH v2 15/16] perf build: Remove test library from python shared object Ian Rogers
2024-10-16 4:24 ` Ian Rogers [this message]
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=20241016042415.7552-17-irogers@google.com \
--to=irogers@google.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=atrajeev@linux.vnet.ibm.com \
--cc=colin.i.king@gmail.com \
--cc=dapeng1.mi@linux.intel.com \
--cc=howardchu95@gmail.com \
--cc=iii@linux.ibm.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=mpetlan@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=tmricht@linux.ibm.com \
--cc=vmolnaro@redhat.com \
--cc=weilin.wang@intel.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.