Skip to content

Commit

Permalink
perf header: Don't assume there's no attr info if no sample ids is pr…
Browse files Browse the repository at this point in the history
…ovided

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: <[email protected]>
Signed-off-by: Franck Bui-Huu <[email protected]>
  • Loading branch information
fbuihuu authored and acmel committed Nov 30, 2010
1 parent d214afb commit 60e6773
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions tools/perf/util/header.c
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down

0 comments on commit 60e6773

Please sign in to comment.