Re: [PATCH 1/7] perf script: Do not call perf_event__preprocess_sample() twice)

2013-12-04 Thread Adrian Hunter
On 03/12/13 20:23, Arnaldo Carvalho de Melo wrote:
> Em Tue, Dec 03, 2013 at 09:23:04AM +0200, Adrian Hunter escreveu:
>> perf_event__preprocess_sample() is called in
>> process_sample_event().  Instead of calling it
>> again in perf_evsel__print_ip(), pass though
>> the resultant addr_location.
> 
> 
>> +++ b/tools/perf/util/session.c
>> @@ -1487,11 +1487,12 @@ struct perf_evsel 
>> *perf_session__find_first_evtype(struct perf_session *session,
>>  return NULL;
>>  }
>>  
>> -void perf_evsel__print_ip(struct perf_evsel *evsel, union perf_event *event,
>> +void perf_evsel__print_ip(struct perf_evsel *evsel,
>> +  union perf_event *event __maybe_unused,
> 
> Why do we have to keep this parameter?

You are right - it is not needed.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 1/7] perf script: Do not call perf_event__preprocess_sample() twice)

2013-12-04 Thread Adrian Hunter
On 03/12/13 20:23, Arnaldo Carvalho de Melo wrote:
 Em Tue, Dec 03, 2013 at 09:23:04AM +0200, Adrian Hunter escreveu:
 perf_event__preprocess_sample() is called in
 process_sample_event().  Instead of calling it
 again in perf_evsel__print_ip(), pass though
 the resultant addr_location.
 
 SNIP
 +++ b/tools/perf/util/session.c
 @@ -1487,11 +1487,12 @@ struct perf_evsel 
 *perf_session__find_first_evtype(struct perf_session *session,
  return NULL;
  }
  
 -void perf_evsel__print_ip(struct perf_evsel *evsel, union perf_event *event,
 +void perf_evsel__print_ip(struct perf_evsel *evsel,
 +  union perf_event *event __maybe_unused,
 
 Why do we have to keep this parameter?

You are right - it is not needed.

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 1/7] perf script: Do not call perf_event__preprocess_sample() twice)

2013-12-03 Thread Arnaldo Carvalho de Melo
Em Tue, Dec 03, 2013 at 09:23:04AM +0200, Adrian Hunter escreveu:
> perf_event__preprocess_sample() is called in
> process_sample_event().  Instead of calling it
> again in perf_evsel__print_ip(), pass though
> the resultant addr_location.


> +++ b/tools/perf/util/session.c
> @@ -1487,11 +1487,12 @@ struct perf_evsel 
> *perf_session__find_first_evtype(struct perf_session *session,
>   return NULL;
>  }
>  
> -void perf_evsel__print_ip(struct perf_evsel *evsel, union perf_event *event,
> +void perf_evsel__print_ip(struct perf_evsel *evsel,
> +   union perf_event *event __maybe_unused,

Why do we have to keep this parameter?

- Arnaldo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 1/7] perf script: Do not call perf_event__preprocess_sample() twice)

2013-12-03 Thread Arnaldo Carvalho de Melo
Em Tue, Dec 03, 2013 at 09:23:04AM +0200, Adrian Hunter escreveu:
 perf_event__preprocess_sample() is called in
 process_sample_event().  Instead of calling it
 again in perf_evsel__print_ip(), pass though
 the resultant addr_location.

SNIP
 +++ b/tools/perf/util/session.c
 @@ -1487,11 +1487,12 @@ struct perf_evsel 
 *perf_session__find_first_evtype(struct perf_session *session,
   return NULL;
  }
  
 -void perf_evsel__print_ip(struct perf_evsel *evsel, union perf_event *event,
 +void perf_evsel__print_ip(struct perf_evsel *evsel,
 +   union perf_event *event __maybe_unused,

Why do we have to keep this parameter?

- Arnaldo
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 1/7] perf script: Do not call perf_event__preprocess_sample() twice)

2013-12-02 Thread Adrian Hunter
perf_event__preprocess_sample() is called in
process_sample_event().  Instead of calling it
again in perf_evsel__print_ip(), pass though
the resultant addr_location.

Signed-off-by: Adrian Hunter 
---
 tools/perf/builtin-script.c | 11 ++-
 tools/perf/util/session.c   | 33 -
 tools/perf/util/session.h   |  3 ++-
 3 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 952dce9..5b865a9 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -414,7 +414,8 @@ static void print_sample_bts(union perf_event *event,
 struct perf_sample *sample,
 struct perf_evsel *evsel,
 struct machine *machine,
-struct thread *thread)
+struct thread *thread,
+struct addr_location *al)
 {
struct perf_event_attr *attr = >attr;
 
@@ -424,7 +425,7 @@ static void print_sample_bts(union perf_event *event,
printf(" ");
else
printf("\n");
-   perf_evsel__print_ip(evsel, event, sample, machine,
+   perf_evsel__print_ip(evsel, event, sample, machine, al,
 output[attr->type].print_ip_opts,
 PERF_MAX_STACK_DEPTH);
}
@@ -443,7 +444,7 @@ 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 machine *machine,
  struct thread *thread,
- struct addr_location *al __maybe_unused)
+ struct addr_location *al)
 {
struct perf_event_attr *attr = >attr;
 
@@ -458,7 +459,7 @@ static void process_event(union perf_event *event, struct 
perf_sample *sample,
}
 
if (is_bts_event(attr)) {
-   print_sample_bts(event, sample, evsel, machine, thread);
+   print_sample_bts(event, sample, evsel, machine, thread, al);
return;
}
 
@@ -474,7 +475,7 @@ static void process_event(union perf_event *event, struct 
perf_sample *sample,
else
printf("\n");
 
-   perf_evsel__print_ip(evsel, event, sample, machine,
+   perf_evsel__print_ip(evsel, event, sample, machine, al,
 output[attr->type].print_ip_opts,
 PERF_MAX_STACK_DEPTH);
}
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 4ce146b..bc821b3 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -1487,11 +1487,12 @@ struct perf_evsel 
*perf_session__find_first_evtype(struct perf_session *session,
return NULL;
 }
 
-void perf_evsel__print_ip(struct perf_evsel *evsel, union perf_event *event,
+void perf_evsel__print_ip(struct perf_evsel *evsel,
+ union perf_event *event __maybe_unused,
  struct perf_sample *sample, struct machine *machine,
- unsigned int print_opts, unsigned int stack_depth)
+ struct addr_location *al, unsigned int print_opts,
+ unsigned int stack_depth)
 {
-   struct addr_location al;
struct callchain_cursor_node *node;
int print_ip = print_opts & PRINT_IP_OPT_IP;
int print_sym = print_opts & PRINT_IP_OPT_SYM;
@@ -1500,15 +1501,10 @@ void perf_evsel__print_ip(struct perf_evsel *evsel, 
union perf_event *event,
int print_oneline = print_opts & PRINT_IP_OPT_ONELINE;
char s = print_oneline ? ' ' : '\t';
 
-   if (perf_event__preprocess_sample(event, machine, , sample) < 0) {
-   error("problem processing %d event, skipping it.\n",
-   event->header.type);
-   return;
-   }
-
if (symbol_conf.use_callchain && sample->callchain) {
+   struct addr_location node_al;
 
-   if (machine__resolve_callchain(machine, evsel, al.thread,
+   if (machine__resolve_callchain(machine, evsel, al->thread,
   sample, NULL, NULL,
   PERF_MAX_STACK_DEPTH) != 0) {
if (verbose)
@@ -1517,6 +1513,9 @@ void perf_evsel__print_ip(struct perf_evsel *evsel, union 
perf_event *event,
}
callchain_cursor_commit(_cursor);
 
+   if (print_symoffset)
+   node_al = *al;
+
while (stack_depth) {
node = callchain_cursor_current(_cursor);
if (!node)
@@ -1531,9 +1530,9 @@ void perf_evsel__print_ip(struct perf_evsel 

[PATCH 1/7] perf script: Do not call perf_event__preprocess_sample() twice)

2013-12-02 Thread Adrian Hunter
perf_event__preprocess_sample() is called in
process_sample_event().  Instead of calling it
again in perf_evsel__print_ip(), pass though
the resultant addr_location.

Signed-off-by: Adrian Hunter adrian.hun...@intel.com
---
 tools/perf/builtin-script.c | 11 ++-
 tools/perf/util/session.c   | 33 -
 tools/perf/util/session.h   |  3 ++-
 3 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 952dce9..5b865a9 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -414,7 +414,8 @@ static void print_sample_bts(union perf_event *event,
 struct perf_sample *sample,
 struct perf_evsel *evsel,
 struct machine *machine,
-struct thread *thread)
+struct thread *thread,
+struct addr_location *al)
 {
struct perf_event_attr *attr = evsel-attr;
 
@@ -424,7 +425,7 @@ static void print_sample_bts(union perf_event *event,
printf( );
else
printf(\n);
-   perf_evsel__print_ip(evsel, event, sample, machine,
+   perf_evsel__print_ip(evsel, event, sample, machine, al,
 output[attr-type].print_ip_opts,
 PERF_MAX_STACK_DEPTH);
}
@@ -443,7 +444,7 @@ 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 machine *machine,
  struct thread *thread,
- struct addr_location *al __maybe_unused)
+ struct addr_location *al)
 {
struct perf_event_attr *attr = evsel-attr;
 
@@ -458,7 +459,7 @@ static void process_event(union perf_event *event, struct 
perf_sample *sample,
}
 
if (is_bts_event(attr)) {
-   print_sample_bts(event, sample, evsel, machine, thread);
+   print_sample_bts(event, sample, evsel, machine, thread, al);
return;
}
 
@@ -474,7 +475,7 @@ static void process_event(union perf_event *event, struct 
perf_sample *sample,
else
printf(\n);
 
-   perf_evsel__print_ip(evsel, event, sample, machine,
+   perf_evsel__print_ip(evsel, event, sample, machine, al,
 output[attr-type].print_ip_opts,
 PERF_MAX_STACK_DEPTH);
}
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 4ce146b..bc821b3 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -1487,11 +1487,12 @@ struct perf_evsel 
*perf_session__find_first_evtype(struct perf_session *session,
return NULL;
 }
 
-void perf_evsel__print_ip(struct perf_evsel *evsel, union perf_event *event,
+void perf_evsel__print_ip(struct perf_evsel *evsel,
+ union perf_event *event __maybe_unused,
  struct perf_sample *sample, struct machine *machine,
- unsigned int print_opts, unsigned int stack_depth)
+ struct addr_location *al, unsigned int print_opts,
+ unsigned int stack_depth)
 {
-   struct addr_location al;
struct callchain_cursor_node *node;
int print_ip = print_opts  PRINT_IP_OPT_IP;
int print_sym = print_opts  PRINT_IP_OPT_SYM;
@@ -1500,15 +1501,10 @@ void perf_evsel__print_ip(struct perf_evsel *evsel, 
union perf_event *event,
int print_oneline = print_opts  PRINT_IP_OPT_ONELINE;
char s = print_oneline ? ' ' : '\t';
 
-   if (perf_event__preprocess_sample(event, machine, al, sample)  0) {
-   error(problem processing %d event, skipping it.\n,
-   event-header.type);
-   return;
-   }
-
if (symbol_conf.use_callchain  sample-callchain) {
+   struct addr_location node_al;
 
-   if (machine__resolve_callchain(machine, evsel, al.thread,
+   if (machine__resolve_callchain(machine, evsel, al-thread,
   sample, NULL, NULL,
   PERF_MAX_STACK_DEPTH) != 0) {
if (verbose)
@@ -1517,6 +1513,9 @@ void perf_evsel__print_ip(struct perf_evsel *evsel, union 
perf_event *event,
}
callchain_cursor_commit(callchain_cursor);
 
+   if (print_symoffset)
+   node_al = *al;
+
while (stack_depth) {
node = callchain_cursor_current(callchain_cursor);
if (!node)
@@ -1531,9 +1530,9 @@ void