]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
perf python: Add member access to a number of evsel variables
authorIan Rogers <irogers@google.com>
Fri, 28 Feb 2025 22:23:02 +0000 (14:23 -0800)
committerNamhyung Kim <namhyung@kernel.org>
Wed, 12 Mar 2025 01:55:37 +0000 (18:55 -0700)
Most variables are part of the perf_event_attr, so that they may be
queried and modified.

Reviewed-by: Howard Chu <howardchu95@gmail.com>
Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Link: https://lore.kernel.org/r/20250228222308.626803-6-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/util/python.c

index 0cf81cfcfafb1c879d777255aa8d56cde635ea5d..b600b6379b4e8105df1340159be07da31efcb24d 100644 (file)
@@ -811,6 +811,28 @@ static PyMethodDef pyrf_evsel__methods[] = {
        { .ml_name = NULL, }
 };
 
+#define evsel_member_def(member, ptype, help) \
+       { #member, ptype, \
+         offsetof(struct pyrf_evsel, evsel.member), \
+         0, help }
+
+#define evsel_attr_member_def(member, ptype, help) \
+       { #member, ptype, \
+         offsetof(struct pyrf_evsel, evsel.core.attr.member), \
+         0, help }
+
+static PyMemberDef pyrf_evsel__members[] = {
+       evsel_member_def(tracking, T_BOOL, "tracking event."),
+       evsel_attr_member_def(type, T_UINT, "attribute type."),
+       evsel_attr_member_def(size, T_UINT, "attribute size."),
+       evsel_attr_member_def(config, T_ULONGLONG, "attribute config."),
+       evsel_attr_member_def(sample_period, T_ULONGLONG, "attribute sample_period."),
+       evsel_attr_member_def(sample_type, T_ULONGLONG, "attribute sample_type."),
+       evsel_attr_member_def(read_format, T_ULONGLONG, "attribute read_format."),
+       evsel_attr_member_def(wakeup_events, T_UINT, "attribute wakeup_events."),
+       { .name = NULL, },
+};
+
 static const char pyrf_evsel__doc[] = PyDoc_STR("perf event selector list object.");
 
 static PyTypeObject pyrf_evsel__type = {
@@ -820,6 +842,7 @@ static PyTypeObject pyrf_evsel__type = {
        .tp_dealloc     = (destructor)pyrf_evsel__delete,
        .tp_flags       = Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE,
        .tp_doc         = pyrf_evsel__doc,
+       .tp_members     = pyrf_evsel__members,
        .tp_methods     = pyrf_evsel__methods,
        .tp_init        = (initproc)pyrf_evsel__init,
        .tp_str         = pyrf_evsel__str,