All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Arun Kalyanasundaram <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: tglx@linutronix.de, mingo@kernel.org, jolsa@kernel.org,
	daniel@iogearbox.net, acme@redhat.com, sj38.park@gmail.com,
	peterz@infradead.org, linux-kernel@vger.kernel.org,
	davem@davemloft.net, alexander.shishkin@linux.intel.com,
	davidcc@google.com, arunkaly@google.com, eranian@google.com,
	hpa@zytor.com
Subject: [tip:perf/core] perf script python: Add sample_read to dict
Date: Wed, 26 Jul 2017 10:25:09 -0700	[thread overview]
Message-ID: <tip-74ec14f3893c3065053b91cec850cffa2d565e0a@git.kernel.org> (raw)
In-Reply-To: <20170721220422.63962-4-arunkaly@google.com>

Commit-ID:  74ec14f3893c3065053b91cec850cffa2d565e0a
Gitweb:     http://git.kernel.org/tip/74ec14f3893c3065053b91cec850cffa2d565e0a
Author:     Arun Kalyanasundaram <arunkaly@google.com>
AuthorDate: Fri, 21 Jul 2017 15:04:20 -0700
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 25 Jul 2017 22:43:19 -0300

perf script python: Add sample_read to dict

Provide time_enabled, time_running and counter value in the perf_sample
dict.

Signed-off-by: Arun Kalyanasundaram <arunkaly@google.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: David Carrillo-Cisneros <davidcc@google.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Seongjae Park <sj38.park@gmail.com>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/20170721220422.63962-4-arunkaly@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 .../util/scripting-engines/trace-event-python.c    | 51 ++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
index 69d1b6d..55a4578 100644
--- a/tools/perf/util/scripting-engines/trace-event-python.c
+++ b/tools/perf/util/scripting-engines/trace-event-python.c
@@ -391,6 +391,56 @@ exit:
 	return pylist;
 }
 
+static PyObject *get_sample_value_as_tuple(struct sample_read_value *value)
+{
+	PyObject *t;
+
+	t = PyTuple_New(2);
+	if (!t)
+		Py_FatalError("couldn't create Python tuple");
+	PyTuple_SetItem(t, 0, PyLong_FromUnsignedLongLong(value->id));
+	PyTuple_SetItem(t, 1, PyLong_FromUnsignedLongLong(value->value));
+	return t;
+}
+
+static void set_sample_read_in_dict(PyObject *dict_sample,
+					 struct perf_sample *sample,
+					 struct perf_evsel *evsel)
+{
+	u64 read_format = evsel->attr.read_format;
+	PyObject *values;
+	unsigned int i;
+
+	if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) {
+		pydict_set_item_string_decref(dict_sample, "time_enabled",
+			PyLong_FromUnsignedLongLong(sample->read.time_enabled));
+	}
+
+	if (read_format & PERF_FORMAT_TOTAL_TIME_RUNNING) {
+		pydict_set_item_string_decref(dict_sample, "time_running",
+			PyLong_FromUnsignedLongLong(sample->read.time_running));
+	}
+
+	if (read_format & PERF_FORMAT_GROUP)
+		values = PyList_New(sample->read.group.nr);
+	else
+		values = PyList_New(1);
+
+	if (!values)
+		Py_FatalError("couldn't create Python list");
+
+	if (read_format & PERF_FORMAT_GROUP) {
+		for (i = 0; i < sample->read.group.nr; i++) {
+			PyObject *t = get_sample_value_as_tuple(&sample->read.group.values[i]);
+			PyList_SET_ITEM(values, i, t);
+		}
+	} else {
+		PyObject *t = get_sample_value_as_tuple(&sample->read.one);
+		PyList_SET_ITEM(values, 0, t);
+	}
+	pydict_set_item_string_decref(dict_sample, "values", values);
+}
+
 static PyObject *get_perf_sample_dict(struct perf_sample *sample,
 					 struct perf_evsel *evsel,
 					 struct addr_location *al,
@@ -422,6 +472,7 @@ static PyObject *get_perf_sample_dict(struct perf_sample *sample,
 			PyLong_FromUnsignedLongLong(sample->time));
 	pydict_set_item_string_decref(dict_sample, "period",
 			PyLong_FromUnsignedLongLong(sample->period));
+	set_sample_read_in_dict(dict_sample, sample, evsel);
 	pydict_set_item_string_decref(dict, "sample", dict_sample);
 
 	pydict_set_item_string_decref(dict, "raw_buf", PyString_FromStringAndSize(

  reply	other threads:[~2017-07-26 17:30 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-21 22:04 [PATCH v2 0/5] perf script python: Provide sample dict to all handlers Arun Kalyanasundaram
2017-07-21 22:04 ` [PATCH v2 1/5] perf script python: Allocate memory only if handler exists Arun Kalyanasundaram
2017-07-26 17:24   ` [tip:perf/core] " tip-bot for Arun Kalyanasundaram
2017-07-21 22:04 ` [PATCH v2 2/5] perf script python: Refactor creation of perf sample dict Arun Kalyanasundaram
2017-07-26 17:24   ` [tip:perf/core] " tip-bot for Arun Kalyanasundaram
2017-07-21 22:04 ` [PATCH v2 3/5] perf script python: Add sample_read to dict Arun Kalyanasundaram
2017-07-26 17:25   ` tip-bot for Arun Kalyanasundaram [this message]
2017-07-21 22:04 ` [PATCH v2 4/5] perf script python: Add perf_sample dict to tracepoint handlers Arun Kalyanasundaram
2017-07-26 17:25   ` [tip:perf/core] " tip-bot for Arun Kalyanasundaram
2017-07-21 22:04 ` [PATCH v2 5/5] perf script python: Generate hooks with additional argument Arun Kalyanasundaram
2017-07-26 17:25   ` [tip:perf/core] " tip-bot for Arun Kalyanasundaram
2017-07-24 13:28 ` [PATCH v2 0/5] perf script python: Provide sample dict to all handlers Jiri Olsa

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=tip-74ec14f3893c3065053b91cec850cffa2d565e0a@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=acme@redhat.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=arunkaly@google.com \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=davidcc@google.com \
    --cc=eranian@google.com \
    --cc=hpa@zytor.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=sj38.park@gmail.com \
    --cc=tglx@linutronix.de \
    /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.