* [RFC 0/2] perf scripting cleanups
@ 2015-04-01 16:36 Arnaldo Carvalho de Melo
2015-04-01 16:36 ` [PATCH 1/2] perf script: No need to lookup thread twice Arnaldo Carvalho de Melo
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-04-01 16:36 UTC (permalink / raw)
To: Jiri Olsa
Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern,
Adrian Hunter, Borislav Petkov, Don Zickus, Frederic Weisbecker,
Namhyung Kim, Stephane Eranian
Hi David, Jiri,
Please take a look if it is ok for you guys
Adrian, there is another thing:
db_export__sample(&tables->dbe, event, sample, evsel, al->thread, al);
In tools/perf/util/scripting-engines/trace-event-python.c has this redundancy
as well, see the (al->thread, al), I'll probably remove that extra thread parm
there if you don't have any other subtle use for that...
- Arnaldo
Arnaldo Carvalho de Melo (2):
perf script: No need to lookup thread twice
perf scripting: No need to pass thread twice to the scripting
callbacks
tools/perf/builtin-script.c | 14 +++-----------
tools/perf/util/scripting-engines/trace-event-perl.c | 5 ++---
tools/perf/util/scripting-engines/trace-event-python.c | 13 +++++--------
tools/perf/util/trace-event-scripting.c | 1 -
tools/perf/util/trace-event.h | 3 +--
5 files changed, 11 insertions(+), 25 deletions(-)
--
1.9.3
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/2] perf script: No need to lookup thread twice
2015-04-01 16:36 [RFC 0/2] perf scripting cleanups Arnaldo Carvalho de Melo
@ 2015-04-01 16:36 ` Arnaldo Carvalho de Melo
2015-04-03 5:06 ` [tip:perf/core] " tip-bot for Arnaldo Carvalho de Melo
2015-04-01 16:36 ` [PATCH 2/2] perf scripting: No need to pass thread twice to the scripting callbacks Arnaldo Carvalho de Melo
` (2 subsequent siblings)
3 siblings, 1 reply; 11+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-04-01 16:36 UTC (permalink / raw)
To: Jiri Olsa
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Borislav Petkov, David Ahern, Don Zickus, Frederic Weisbecker,
Namhyung Kim, Stephane Eranian
From: Arnaldo Carvalho de Melo <acme@redhat.com>
We get the thread when we call perf_event__preprocess_sample(), no need
to do it before that.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-ksvs38n1d5vf9hfnhzj75xrm@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-script.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 662366ceb572..c286b49c81b2 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -549,14 +549,6 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
struct machine *machine)
{
struct addr_location al;
- struct thread *thread = machine__findnew_thread(machine, sample->pid,
- sample->tid);
-
- if (thread == NULL) {
- pr_debug("problem processing %d event, skipping it.\n",
- event->header.type);
- return -1;
- }
if (debug_mode) {
if (sample->time < last_timestamp) {
@@ -581,7 +573,7 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
if (cpu_list && !test_bit(sample->cpu, cpu_bitmap))
return 0;
- scripting_ops->process_event(event, sample, evsel, thread, &al);
+ scripting_ops->process_event(event, sample, evsel, al.thread, &al);
return 0;
}
--
1.9.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/2] perf scripting: No need to pass thread twice to the scripting callbacks
2015-04-01 16:36 [RFC 0/2] perf scripting cleanups Arnaldo Carvalho de Melo
2015-04-01 16:36 ` [PATCH 1/2] perf script: No need to lookup thread twice Arnaldo Carvalho de Melo
@ 2015-04-01 16:36 ` Arnaldo Carvalho de Melo
2015-04-03 5:06 ` [tip:perf/core] " tip-bot for Arnaldo Carvalho de Melo
2015-04-02 8:16 ` [RFC 0/2] perf scripting cleanups Namhyung Kim
2015-04-02 9:16 ` Adrian Hunter
3 siblings, 1 reply; 11+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-04-01 16:36 UTC (permalink / raw)
To: Jiri Olsa
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Borislav Petkov, David Ahern, Don Zickus, Frederic Weisbecker,
Namhyung Kim, Stephane Eranian
From: Arnaldo Carvalho de Melo <acme@redhat.com>
It is already in the addr_location, so remove the redundant 'thread'
parameter from the callback signatures.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-fuj5cj0uxc5a8j9xr2mqfwav@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-script.c | 6 +++---
tools/perf/util/scripting-engines/trace-event-perl.c | 5 ++---
tools/perf/util/scripting-engines/trace-event-python.c | 13 +++++--------
tools/perf/util/trace-event-scripting.c | 1 -
tools/perf/util/trace-event.h | 3 +--
5 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index c286b49c81b2..257dd066cb1a 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -446,9 +446,9 @@ static void print_sample_bts(union perf_event *event,
}
static void process_event(union perf_event *event, struct perf_sample *sample,
- struct perf_evsel *evsel, struct thread *thread,
- struct addr_location *al)
+ struct perf_evsel *evsel, struct addr_location *al)
{
+ struct thread *thread = al->thread;
struct perf_event_attr *attr = &evsel->attr;
if (output[attr->type].fields == 0)
@@ -573,7 +573,7 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
if (cpu_list && !test_bit(sample->cpu, cpu_bitmap))
return 0;
- scripting_ops->process_event(event, sample, evsel, al.thread, &al);
+ scripting_ops->process_event(event, sample, evsel, &al);
return 0;
}
diff --git a/tools/perf/util/scripting-engines/trace-event-perl.c b/tools/perf/util/scripting-engines/trace-event-perl.c
index 8171fed4136e..430b5d27828e 100644
--- a/tools/perf/util/scripting-engines/trace-event-perl.c
+++ b/tools/perf/util/scripting-engines/trace-event-perl.c
@@ -360,10 +360,9 @@ static void perl_process_event_generic(union perf_event *event,
static void perl_process_event(union perf_event *event,
struct perf_sample *sample,
struct perf_evsel *evsel,
- struct thread *thread,
- struct addr_location *al __maybe_unused)
+ struct addr_location *al)
{
- perl_process_tracepoint(sample, evsel, thread);
+ perl_process_tracepoint(sample, evsel, al->thread);
perl_process_event_generic(event, sample, evsel);
}
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
index 2ec5dfb5a456..de8df1d5e1bd 100644
--- a/tools/perf/util/scripting-engines/trace-event-python.c
+++ b/tools/perf/util/scripting-engines/trace-event-python.c
@@ -381,7 +381,6 @@ exit:
static void python_process_tracepoint(struct perf_sample *sample,
struct perf_evsel *evsel,
- struct thread *thread,
struct addr_location *al)
{
struct event_format *event = evsel->tp_format;
@@ -395,7 +394,7 @@ static void python_process_tracepoint(struct perf_sample *sample,
int cpu = sample->cpu;
void *data = sample->raw_data;
unsigned long long nsecs = sample->time;
- const char *comm = thread__comm_str(thread);
+ const char *comm = thread__comm_str(al->thread);
t = PyTuple_New(MAX_FIELDS);
if (!t)
@@ -766,7 +765,6 @@ static int python_process_call_return(struct call_return *cr, void *data)
static void python_process_general_event(struct perf_sample *sample,
struct perf_evsel *evsel,
- struct thread *thread,
struct addr_location *al)
{
PyObject *handler, *t, *dict, *callchain, *dict_sample;
@@ -816,7 +814,7 @@ static void python_process_general_event(struct perf_sample *sample,
pydict_set_item_string_decref(dict, "raw_buf", PyString_FromStringAndSize(
(const char *)sample->raw_data, sample->raw_size));
pydict_set_item_string_decref(dict, "comm",
- PyString_FromString(thread__comm_str(thread)));
+ PyString_FromString(thread__comm_str(al->thread)));
if (al->map) {
pydict_set_item_string_decref(dict, "dso",
PyString_FromString(al->map->dso->name));
@@ -843,22 +841,21 @@ exit:
static void python_process_event(union perf_event *event,
struct perf_sample *sample,
struct perf_evsel *evsel,
- struct thread *thread,
struct addr_location *al)
{
struct tables *tables = &tables_global;
switch (evsel->attr.type) {
case PERF_TYPE_TRACEPOINT:
- python_process_tracepoint(sample, evsel, thread, al);
+ python_process_tracepoint(sample, evsel, al);
break;
/* Reserve for future process_hw/sw/raw APIs */
default:
if (tables->db_export_mode)
db_export__sample(&tables->dbe, event, sample, evsel,
- thread, al);
+ al->thread, al);
else
- python_process_general_event(sample, evsel, thread, al);
+ python_process_general_event(sample, evsel, al);
}
}
diff --git a/tools/perf/util/trace-event-scripting.c b/tools/perf/util/trace-event-scripting.c
index 5c9bdd1591a9..9df61059a85d 100644
--- a/tools/perf/util/trace-event-scripting.c
+++ b/tools/perf/util/trace-event-scripting.c
@@ -43,7 +43,6 @@ static int stop_script_unsupported(void)
static void process_event_unsupported(union perf_event *event __maybe_unused,
struct perf_sample *sample __maybe_unused,
struct perf_evsel *evsel __maybe_unused,
- struct thread *thread __maybe_unused,
struct addr_location *al __maybe_unused)
{
}
diff --git a/tools/perf/util/trace-event.h b/tools/perf/util/trace-event.h
index 356629a30ca9..d5168f0be4ec 100644
--- a/tools/perf/util/trace-event.h
+++ b/tools/perf/util/trace-event.h
@@ -72,8 +72,7 @@ struct scripting_ops {
void (*process_event) (union perf_event *event,
struct perf_sample *sample,
struct perf_evsel *evsel,
- struct thread *thread,
- struct addr_location *al);
+ struct addr_location *al);
int (*generate_script) (struct pevent *pevent, const char *outfile);
};
--
1.9.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [RFC 0/2] perf scripting cleanups
2015-04-01 16:36 [RFC 0/2] perf scripting cleanups Arnaldo Carvalho de Melo
2015-04-01 16:36 ` [PATCH 1/2] perf script: No need to lookup thread twice Arnaldo Carvalho de Melo
2015-04-01 16:36 ` [PATCH 2/2] perf scripting: No need to pass thread twice to the scripting callbacks Arnaldo Carvalho de Melo
@ 2015-04-02 8:16 ` Namhyung Kim
2015-04-02 8:35 ` Jiri Olsa
2015-04-02 9:16 ` Adrian Hunter
3 siblings, 1 reply; 11+ messages in thread
From: Namhyung Kim @ 2015-04-02 8:16 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Jiri Olsa, linux-kernel, David Ahern, Adrian Hunter,
Borislav Petkov, Don Zickus, Frederic Weisbecker,
Stephane Eranian
On Wed, Apr 01, 2015 at 01:36:48PM -0300, Arnaldo Carvalho de Melo wrote:
> Hi David, Jiri,
>
> Please take a look if it is ok for you guys
>
> Adrian, there is another thing:
>
> db_export__sample(&tables->dbe, event, sample, evsel, al->thread, al);
>
> In tools/perf/util/scripting-engines/trace-event-python.c has this redundancy
> as well, see the (al->thread, al), I'll probably remove that extra thread parm
> there if you don't have any other subtle use for that...
For both patches,
Acked-by: Namhyung Kim <namhyung@kernel.org>
Thanks,
Namhyung
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [RFC 0/2] perf scripting cleanups
2015-04-02 8:16 ` [RFC 0/2] perf scripting cleanups Namhyung Kim
@ 2015-04-02 8:35 ` Jiri Olsa
0 siblings, 0 replies; 11+ messages in thread
From: Jiri Olsa @ 2015-04-02 8:35 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, linux-kernel, David Ahern,
Adrian Hunter, Borislav Petkov, Don Zickus, Frederic Weisbecker,
Stephane Eranian
On Thu, Apr 02, 2015 at 05:16:09PM +0900, Namhyung Kim wrote:
> On Wed, Apr 01, 2015 at 01:36:48PM -0300, Arnaldo Carvalho de Melo wrote:
> > Hi David, Jiri,
> >
> > Please take a look if it is ok for you guys
> >
> > Adrian, there is another thing:
> >
> > db_export__sample(&tables->dbe, event, sample, evsel, al->thread, al);
> >
> > In tools/perf/util/scripting-engines/trace-event-python.c has this redundancy
> > as well, see the (al->thread, al), I'll probably remove that extra thread parm
> > there if you don't have any other subtle use for that...
>
> For both patches,
>
> Acked-by: Namhyung Kim <namhyung@kernel.org>
looks ok for me too
Acked-by: Jiri Olsa <jolsa@kernel.org>
jirka
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [RFC 0/2] perf scripting cleanups
2015-04-01 16:36 [RFC 0/2] perf scripting cleanups Arnaldo Carvalho de Melo
` (2 preceding siblings ...)
2015-04-02 8:16 ` [RFC 0/2] perf scripting cleanups Namhyung Kim
@ 2015-04-02 9:16 ` Adrian Hunter
2015-04-02 14:15 ` Arnaldo Carvalho de Melo
3 siblings, 1 reply; 11+ messages in thread
From: Adrian Hunter @ 2015-04-02 9:16 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: linux-kernel, David Ahern, Borislav Petkov, Don Zickus,
Frederic Weisbecker, Namhyung Kim, Stephane Eranian
On 01/04/15 19:36, Arnaldo Carvalho de Melo wrote:
> Hi David, Jiri,
>
> Please take a look if it is ok for you guys
>
> Adrian, there is another thing:
>
> db_export__sample(&tables->dbe, event, sample, evsel, al->thread, al);
>
> In tools/perf/util/scripting-engines/trace-event-python.c has this redundancy
> as well, see the (al->thread, al), I'll probably remove that extra thread parm
Yes please remove it too.
> there if you don't have any other subtle use for that...
Nope
>
> - Arnaldo
>
> Arnaldo Carvalho de Melo (2):
> perf script: No need to lookup thread twice
> perf scripting: No need to pass thread twice to the scripting
> callbacks
>
> tools/perf/builtin-script.c | 14 +++-----------
> tools/perf/util/scripting-engines/trace-event-perl.c | 5 ++---
> tools/perf/util/scripting-engines/trace-event-python.c | 13 +++++--------
> tools/perf/util/trace-event-scripting.c | 1 -
> tools/perf/util/trace-event.h | 3 +--
> 5 files changed, 11 insertions(+), 25 deletions(-)
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [RFC 0/2] perf scripting cleanups
2015-04-02 9:16 ` Adrian Hunter
@ 2015-04-02 14:15 ` Arnaldo Carvalho de Melo
2015-04-02 20:42 ` Adrian Hunter
2015-04-03 5:07 ` [tip:perf/core] perf db-export: No need to have -> thread twice in struct export_sample tip-bot for Arnaldo Carvalho de Melo
0 siblings, 2 replies; 11+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-04-02 14:15 UTC (permalink / raw)
To: Adrian Hunter
Cc: Jiri Olsa, linux-kernel, David Ahern, Borislav Petkov, Don Zickus,
Frederic Weisbecker, Namhyung Kim, Stephane Eranian
Em Thu, Apr 02, 2015 at 12:16:40PM +0300, Adrian Hunter escreveu:
> On 01/04/15 19:36, Arnaldo Carvalho de Melo wrote:
> > Hi David, Jiri,
> >
> > Please take a look if it is ok for you guys
> >
> > Adrian, there is another thing:
> >
> > db_export__sample(&tables->dbe, event, sample, evsel, al->thread, al);
> >
> > In tools/perf/util/scripting-engines/trace-event-python.c has this redundancy
> > as well, see the (al->thread, al), I'll probably remove that extra thread parm
>
> Yes please remove it too.
>
> > there if you don't have any other subtle use for that...
>
> Nope
Ok, adding it as below, with your Acked-by, there is the one at the
bottom too, i.s. struct export_sample doesn't need a ->thread field,
same reason, if you are ok with that too, will add your Acked-by.
- Arnaldo
>From 765b042be1054ec7b5f76b3a004e0aff503e350f Mon Sep 17 00:00:00 2001
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Date: Thu, 2 Apr 2015 11:08:30 -0300
Subject: [PATCH 1/1] perf db-export: No need to pass thread twice to
db_export__sample
As it is available via another parameter, address_location->thread.
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: lkml.kernel.org/r/551D08F8.3040706@intel.com
Link: http://lkml.kernel.org/n/tip-6dbn0tcm9hyv92g7h3zj2dbt@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/db-export.c | 3 ++-
tools/perf/util/db-export.h | 2 +-
tools/perf/util/scripting-engines/trace-event-python.c | 3 +--
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/tools/perf/util/db-export.c b/tools/perf/util/db-export.c
index c81dae399763..5499887edc46 100644
--- a/tools/perf/util/db-export.c
+++ b/tools/perf/util/db-export.c
@@ -282,8 +282,9 @@ int db_export__branch_type(struct db_export *dbe, u32 branch_type,
int db_export__sample(struct db_export *dbe, union perf_event *event,
struct perf_sample *sample, struct perf_evsel *evsel,
- struct thread *thread, struct addr_location *al)
+ struct addr_location *al)
{
+ struct thread* thread = al->thread;
struct export_sample es = {
.event = event,
.sample = sample,
diff --git a/tools/perf/util/db-export.h b/tools/perf/util/db-export.h
index adbd22d66798..b9faa1386cf4 100644
--- a/tools/perf/util/db-export.h
+++ b/tools/perf/util/db-export.h
@@ -97,7 +97,7 @@ int db_export__branch_type(struct db_export *dbe, u32 branch_type,
const char *name);
int db_export__sample(struct db_export *dbe, union perf_event *event,
struct perf_sample *sample, struct perf_evsel *evsel,
- struct thread *thread, struct addr_location *al);
+ struct addr_location *al);
int db_export__branch_types(struct db_export *dbe);
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
index de8df1d5e1bd..1d3cc1b01731 100644
--- a/tools/perf/util/scripting-engines/trace-event-python.c
+++ b/tools/perf/util/scripting-engines/trace-event-python.c
@@ -852,8 +852,7 @@ static void python_process_event(union perf_event *event,
/* Reserve for future process_hw/sw/raw APIs */
default:
if (tables->db_export_mode)
- db_export__sample(&tables->dbe, event, sample, evsel,
- al->thread, al);
+ db_export__sample(&tables->dbe, event, sample, evsel, al);
else
python_process_general_event(sample, evsel, al);
}
--
1.8.3.1
diff --git a/tools/perf/util/db-export.c b/tools/perf/util/db-export.c
index 5499887edc46..bb39a3ffc70b 100644
--- a/tools/perf/util/db-export.c
+++ b/tools/perf/util/db-export.c
@@ -289,7 +289,6 @@ int db_export__sample(struct db_export *dbe, union perf_event *event,
.event = event,
.sample = sample,
.evsel = evsel,
- .thread = thread,
.al = al,
};
struct thread *main_thread;
diff --git a/tools/perf/util/db-export.h b/tools/perf/util/db-export.h
index b9faa1386cf4..25e22fd76aca 100644
--- a/tools/perf/util/db-export.h
+++ b/tools/perf/util/db-export.h
@@ -34,7 +34,6 @@ struct export_sample {
union perf_event *event;
struct perf_sample *sample;
struct perf_evsel *evsel;
- struct thread *thread;
struct addr_location *al;
u64 db_id;
u64 comm_db_id;
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
index 1d3cc1b01731..5544b8cdd1ee 100644
--- a/tools/perf/util/scripting-engines/trace-event-python.c
+++ b/tools/perf/util/scripting-engines/trace-event-python.c
@@ -679,7 +679,7 @@ static int python_export_sample(struct db_export *dbe,
tuple_set_u64(t, 0, es->db_id);
tuple_set_u64(t, 1, es->evsel->db_id);
tuple_set_u64(t, 2, es->al->machine->db_id);
- tuple_set_u64(t, 3, es->thread->db_id);
+ tuple_set_u64(t, 3, es->al->thread->db_id);
tuple_set_u64(t, 4, es->comm_db_id);
tuple_set_u64(t, 5, es->dso_db_id);
tuple_set_u64(t, 6, es->sym_db_id);
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [RFC 0/2] perf scripting cleanups
2015-04-02 14:15 ` Arnaldo Carvalho de Melo
@ 2015-04-02 20:42 ` Adrian Hunter
2015-04-03 5:07 ` [tip:perf/core] perf db-export: No need to have -> thread twice in struct export_sample tip-bot for Arnaldo Carvalho de Melo
1 sibling, 0 replies; 11+ messages in thread
From: Adrian Hunter @ 2015-04-02 20:42 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Jiri Olsa, linux-kernel, David Ahern, Borislav Petkov, Don Zickus,
Frederic Weisbecker, Namhyung Kim, Stephane Eranian
On 2/04/2015 5:15 p.m., Arnaldo Carvalho de Melo wrote:
> Em Thu, Apr 02, 2015 at 12:16:40PM +0300, Adrian Hunter escreveu:
>> On 01/04/15 19:36, Arnaldo Carvalho de Melo wrote:
>>> Hi David, Jiri,
>>>
>>> Please take a look if it is ok for you guys
>>>
>>> Adrian, there is another thing:
>>>
>>> db_export__sample(&tables->dbe, event, sample, evsel, al->thread, al);
>>>
>>> In tools/perf/util/scripting-engines/trace-event-python.c has this redundancy
>>> as well, see the (al->thread, al), I'll probably remove that extra thread parm
>>
>> Yes please remove it too.
>>
>>> there if you don't have any other subtle use for that...
>>
>> Nope
>
> Ok, adding it as below, with your Acked-by, there is the one at the
> bottom too, i.s. struct export_sample doesn't need a ->thread field,
> same reason, if you are ok with that too, will add your Acked-by.
Yes that also looks fine.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [tip:perf/core] perf script: No need to lookup thread twice
2015-04-01 16:36 ` [PATCH 1/2] perf script: No need to lookup thread twice Arnaldo Carvalho de Melo
@ 2015-04-03 5:06 ` tip-bot for Arnaldo Carvalho de Melo
0 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Arnaldo Carvalho de Melo @ 2015-04-03 5:06 UTC (permalink / raw)
To: linux-tip-commits
Cc: jolsa, adrian.hunter, eranian, acme, linux-kernel, bp, mingo,
fweisbec, tglx, dsahern, dzickus, namhyung, hpa
Commit-ID: 79628f2cfe0f488b23e5dc99a4a9a599032fa653
Gitweb: http://git.kernel.org/tip/79628f2cfe0f488b23e5dc99a4a9a599032fa653
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
AuthorDate: Wed, 1 Apr 2015 13:26:45 -0300
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 2 Apr 2015 13:18:21 -0300
perf script: No need to lookup thread twice
We get the thread when we call perf_event__preprocess_sample(), no need
to do it before that.
Acked-by: Jiri Olsa <jolsa@redhat.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1427906210-10519-2-git-send-email-acme@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-script.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 662366c..c286b49 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -549,14 +549,6 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
struct machine *machine)
{
struct addr_location al;
- struct thread *thread = machine__findnew_thread(machine, sample->pid,
- sample->tid);
-
- if (thread == NULL) {
- pr_debug("problem processing %d event, skipping it.\n",
- event->header.type);
- return -1;
- }
if (debug_mode) {
if (sample->time < last_timestamp) {
@@ -581,7 +573,7 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
if (cpu_list && !test_bit(sample->cpu, cpu_bitmap))
return 0;
- scripting_ops->process_event(event, sample, evsel, thread, &al);
+ scripting_ops->process_event(event, sample, evsel, al.thread, &al);
return 0;
}
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [tip:perf/core] perf scripting: No need to pass thread twice to the scripting callbacks
2015-04-01 16:36 ` [PATCH 2/2] perf scripting: No need to pass thread twice to the scripting callbacks Arnaldo Carvalho de Melo
@ 2015-04-03 5:06 ` tip-bot for Arnaldo Carvalho de Melo
0 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Arnaldo Carvalho de Melo @ 2015-04-03 5:06 UTC (permalink / raw)
To: linux-tip-commits
Cc: mingo, eranian, fweisbec, namhyung, bp, adrian.hunter, jolsa,
dzickus, linux-kernel, hpa, acme, dsahern, tglx
Commit-ID: f9d5d549d2c2934be84b0bc7e5e034834459f591
Gitweb: http://git.kernel.org/tip/f9d5d549d2c2934be84b0bc7e5e034834459f591
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
AuthorDate: Wed, 1 Apr 2015 13:29:25 -0300
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 2 Apr 2015 13:18:41 -0300
perf scripting: No need to pass thread twice to the scripting callbacks
It is already in the addr_location, so remove the redundant 'thread'
parameter from the callback signatures.
Acked-by: Jiri Olsa <jolsa@redhat.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1427906210-10519-3-git-send-email-acme@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-script.c | 6 +++---
tools/perf/util/scripting-engines/trace-event-perl.c | 5 ++---
tools/perf/util/scripting-engines/trace-event-python.c | 13 +++++--------
tools/perf/util/trace-event-scripting.c | 1 -
tools/perf/util/trace-event.h | 3 +--
5 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index c286b49..257dd06 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -446,9 +446,9 @@ static void print_sample_bts(union perf_event *event,
}
static void process_event(union perf_event *event, struct perf_sample *sample,
- struct perf_evsel *evsel, struct thread *thread,
- struct addr_location *al)
+ struct perf_evsel *evsel, struct addr_location *al)
{
+ struct thread *thread = al->thread;
struct perf_event_attr *attr = &evsel->attr;
if (output[attr->type].fields == 0)
@@ -573,7 +573,7 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
if (cpu_list && !test_bit(sample->cpu, cpu_bitmap))
return 0;
- scripting_ops->process_event(event, sample, evsel, al.thread, &al);
+ scripting_ops->process_event(event, sample, evsel, &al);
return 0;
}
diff --git a/tools/perf/util/scripting-engines/trace-event-perl.c b/tools/perf/util/scripting-engines/trace-event-perl.c
index 8171fed..430b5d2 100644
--- a/tools/perf/util/scripting-engines/trace-event-perl.c
+++ b/tools/perf/util/scripting-engines/trace-event-perl.c
@@ -360,10 +360,9 @@ static void perl_process_event_generic(union perf_event *event,
static void perl_process_event(union perf_event *event,
struct perf_sample *sample,
struct perf_evsel *evsel,
- struct thread *thread,
- struct addr_location *al __maybe_unused)
+ struct addr_location *al)
{
- perl_process_tracepoint(sample, evsel, thread);
+ perl_process_tracepoint(sample, evsel, al->thread);
perl_process_event_generic(event, sample, evsel);
}
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
index 2ec5dfb..de8df1d 100644
--- a/tools/perf/util/scripting-engines/trace-event-python.c
+++ b/tools/perf/util/scripting-engines/trace-event-python.c
@@ -381,7 +381,6 @@ exit:
static void python_process_tracepoint(struct perf_sample *sample,
struct perf_evsel *evsel,
- struct thread *thread,
struct addr_location *al)
{
struct event_format *event = evsel->tp_format;
@@ -395,7 +394,7 @@ static void python_process_tracepoint(struct perf_sample *sample,
int cpu = sample->cpu;
void *data = sample->raw_data;
unsigned long long nsecs = sample->time;
- const char *comm = thread__comm_str(thread);
+ const char *comm = thread__comm_str(al->thread);
t = PyTuple_New(MAX_FIELDS);
if (!t)
@@ -766,7 +765,6 @@ static int python_process_call_return(struct call_return *cr, void *data)
static void python_process_general_event(struct perf_sample *sample,
struct perf_evsel *evsel,
- struct thread *thread,
struct addr_location *al)
{
PyObject *handler, *t, *dict, *callchain, *dict_sample;
@@ -816,7 +814,7 @@ static void python_process_general_event(struct perf_sample *sample,
pydict_set_item_string_decref(dict, "raw_buf", PyString_FromStringAndSize(
(const char *)sample->raw_data, sample->raw_size));
pydict_set_item_string_decref(dict, "comm",
- PyString_FromString(thread__comm_str(thread)));
+ PyString_FromString(thread__comm_str(al->thread)));
if (al->map) {
pydict_set_item_string_decref(dict, "dso",
PyString_FromString(al->map->dso->name));
@@ -843,22 +841,21 @@ exit:
static void python_process_event(union perf_event *event,
struct perf_sample *sample,
struct perf_evsel *evsel,
- struct thread *thread,
struct addr_location *al)
{
struct tables *tables = &tables_global;
switch (evsel->attr.type) {
case PERF_TYPE_TRACEPOINT:
- python_process_tracepoint(sample, evsel, thread, al);
+ python_process_tracepoint(sample, evsel, al);
break;
/* Reserve for future process_hw/sw/raw APIs */
default:
if (tables->db_export_mode)
db_export__sample(&tables->dbe, event, sample, evsel,
- thread, al);
+ al->thread, al);
else
- python_process_general_event(sample, evsel, thread, al);
+ python_process_general_event(sample, evsel, al);
}
}
diff --git a/tools/perf/util/trace-event-scripting.c b/tools/perf/util/trace-event-scripting.c
index 5c9bdd1..9df6105 100644
--- a/tools/perf/util/trace-event-scripting.c
+++ b/tools/perf/util/trace-event-scripting.c
@@ -43,7 +43,6 @@ static int stop_script_unsupported(void)
static void process_event_unsupported(union perf_event *event __maybe_unused,
struct perf_sample *sample __maybe_unused,
struct perf_evsel *evsel __maybe_unused,
- struct thread *thread __maybe_unused,
struct addr_location *al __maybe_unused)
{
}
diff --git a/tools/perf/util/trace-event.h b/tools/perf/util/trace-event.h
index 356629a..d5168f0 100644
--- a/tools/perf/util/trace-event.h
+++ b/tools/perf/util/trace-event.h
@@ -72,8 +72,7 @@ struct scripting_ops {
void (*process_event) (union perf_event *event,
struct perf_sample *sample,
struct perf_evsel *evsel,
- struct thread *thread,
- struct addr_location *al);
+ struct addr_location *al);
int (*generate_script) (struct pevent *pevent, const char *outfile);
};
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [tip:perf/core] perf db-export: No need to have -> thread twice in struct export_sample
2015-04-02 14:15 ` Arnaldo Carvalho de Melo
2015-04-02 20:42 ` Adrian Hunter
@ 2015-04-03 5:07 ` tip-bot for Arnaldo Carvalho de Melo
1 sibling, 0 replies; 11+ messages in thread
From: tip-bot for Arnaldo Carvalho de Melo @ 2015-04-03 5:07 UTC (permalink / raw)
To: linux-tip-commits
Cc: adrian.hunter, jolsa, dzickus, fweisbec, tglx, linux-kernel,
namhyung, mingo, hpa, eranian, bp, acme, dsahern
Commit-ID: b83e868d0a0350c107b98417b4dcc73834506f98
Gitweb: http://git.kernel.org/tip/b83e868d0a0350c107b98417b4dcc73834506f98
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
AuthorDate: Thu, 2 Apr 2015 11:16:05 -0300
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 2 Apr 2015 13:18:43 -0300
perf db-export: No need to have ->thread twice in struct export_sample
As it comes from address_location->thread, that is already stored as
export_sample->al, where the thread can be obtained.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/20150402141542.GA9630@kernel.org
Link: http://lkml.kernel.org/n/tip-bzotbl4epoztw0jd6sm2stpf@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/db-export.c | 1 -
tools/perf/util/db-export.h | 1 -
tools/perf/util/scripting-engines/trace-event-python.c | 2 +-
3 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/tools/perf/util/db-export.c b/tools/perf/util/db-export.c
index 5499887..bb39a3f 100644
--- a/tools/perf/util/db-export.c
+++ b/tools/perf/util/db-export.c
@@ -289,7 +289,6 @@ int db_export__sample(struct db_export *dbe, union perf_event *event,
.event = event,
.sample = sample,
.evsel = evsel,
- .thread = thread,
.al = al,
};
struct thread *main_thread;
diff --git a/tools/perf/util/db-export.h b/tools/perf/util/db-export.h
index b9faa13..25e22fd 100644
--- a/tools/perf/util/db-export.h
+++ b/tools/perf/util/db-export.h
@@ -34,7 +34,6 @@ struct export_sample {
union perf_event *event;
struct perf_sample *sample;
struct perf_evsel *evsel;
- struct thread *thread;
struct addr_location *al;
u64 db_id;
u64 comm_db_id;
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
index 1d3cc1b..5544b8c 100644
--- a/tools/perf/util/scripting-engines/trace-event-python.c
+++ b/tools/perf/util/scripting-engines/trace-event-python.c
@@ -679,7 +679,7 @@ static int python_export_sample(struct db_export *dbe,
tuple_set_u64(t, 0, es->db_id);
tuple_set_u64(t, 1, es->evsel->db_id);
tuple_set_u64(t, 2, es->al->machine->db_id);
- tuple_set_u64(t, 3, es->thread->db_id);
+ tuple_set_u64(t, 3, es->al->thread->db_id);
tuple_set_u64(t, 4, es->comm_db_id);
tuple_set_u64(t, 5, es->dso_db_id);
tuple_set_u64(t, 6, es->sym_db_id);
^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2015-04-03 5:07 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-01 16:36 [RFC 0/2] perf scripting cleanups Arnaldo Carvalho de Melo
2015-04-01 16:36 ` [PATCH 1/2] perf script: No need to lookup thread twice Arnaldo Carvalho de Melo
2015-04-03 5:06 ` [tip:perf/core] " tip-bot for Arnaldo Carvalho de Melo
2015-04-01 16:36 ` [PATCH 2/2] perf scripting: No need to pass thread twice to the scripting callbacks Arnaldo Carvalho de Melo
2015-04-03 5:06 ` [tip:perf/core] " tip-bot for Arnaldo Carvalho de Melo
2015-04-02 8:16 ` [RFC 0/2] perf scripting cleanups Namhyung Kim
2015-04-02 8:35 ` Jiri Olsa
2015-04-02 9:16 ` Adrian Hunter
2015-04-02 14:15 ` Arnaldo Carvalho de Melo
2015-04-02 20:42 ` Adrian Hunter
2015-04-03 5:07 ` [tip:perf/core] perf db-export: No need to have -> thread twice in struct export_sample tip-bot for Arnaldo Carvalho de Melo
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.