diff options
author | Franck Bui-Huu <fbuihuu@gmail.com> | 2010-11-30 12:50:14 +0100 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2010-11-30 14:48:07 -0200 |
commit | 60e677373be9c0bf7c9a22937601d5a40e51c042 (patch) | |
tree | ab4a5af10366d0210b7715122cfa5ff307d26593 /tools | |
parent | d214afbd81405d4da2c5745fe867e6b313fd4178 (diff) | |
download | linux-3.10-60e677373be9c0bf7c9a22937601d5a40e51c042.tar.gz linux-3.10-60e677373be9c0bf7c9a22937601d5a40e51c042.tar.bz2 linux-3.10-60e677373be9c0bf7c9a22937601d5a40e51c042.zip |
perf header: Don't assume there's no attr info if no sample ids is provided
This primarily fixes perf-report, which didn't report the correct type
of event if perf-record was called to record one event different from
'cycles':
$ perf record -e instructions true
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.007 MB perf.data (~295 samples) ]
$ perf report | head -n1
# Events: 7 cycles
LPU-Reference: <m3mxor6nex.fsf@gmail.com>
Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/util/header.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index d7e67b167ea..64a85bafde6 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c @@ -946,11 +946,16 @@ perf_header__find_attr(u64 id, struct perf_header *header) /* * We set id to -1 if the data file doesn't contain sample - * ids. Check for this and avoid walking through the entire - * list of ids which may be large. + * ids. This can happen when the data file contains one type + * of event and in that case, the header can still store the + * event attribute information. Check for this and avoid + * walking through the entire list of ids which may be large. */ - if (id == -1ULL) + if (id == -1ULL) { + if (header->attrs > 0) + return &header->attr[0]->attr; return NULL; + } for (i = 0; i < header->attrs; i++) { struct perf_header_attr *attr = header->attr[i]; |