perf diff: Fix to work with new hists design
The perf diff command is broken since:
perf hists: Threaded addition and sorting of entries
commit 1980c2ebd7
Several places were broken:
- hists data need to be collected into opened sessions instead
of into events
- session's hists data need to be initialized properly when the
session is created
- hist_entry__pcnt_snprintf: the percentage and displacement
buffer preparation must not use 'ret' because it's used
as a pointer to the final buffer
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20120322133726.GB1601@m.brq.redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:

committed by
Arnaldo Carvalho de Melo

parent
5d7be90ed5
commit
4bf9ce1b5e
@@ -891,9 +891,9 @@ static int hist_entry__pcnt_snprintf(struct hist_entry *he, char *s,
|
||||
diff = new_percent - old_percent;
|
||||
|
||||
if (fabs(diff) >= 0.01)
|
||||
ret += scnprintf(bf, sizeof(bf), "%+4.2F%%", diff);
|
||||
scnprintf(bf, sizeof(bf), "%+4.2F%%", diff);
|
||||
else
|
||||
ret += scnprintf(bf, sizeof(bf), " ");
|
||||
scnprintf(bf, sizeof(bf), " ");
|
||||
|
||||
if (sep)
|
||||
ret += scnprintf(s + ret, size - ret, "%c%s", *sep, bf);
|
||||
@@ -902,9 +902,9 @@ static int hist_entry__pcnt_snprintf(struct hist_entry *he, char *s,
|
||||
|
||||
if (show_displacement) {
|
||||
if (displacement)
|
||||
ret += scnprintf(bf, sizeof(bf), "%+4ld", displacement);
|
||||
scnprintf(bf, sizeof(bf), "%+4ld", displacement);
|
||||
else
|
||||
ret += scnprintf(bf, sizeof(bf), " ");
|
||||
scnprintf(bf, sizeof(bf), " ");
|
||||
|
||||
if (sep)
|
||||
ret += scnprintf(s + ret, size - ret, "%c%s", *sep, bf);
|
||||
|
Reference in New Issue
Block a user