Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 158264
b: refs/heads/master
c: 0d3a5c8
h: refs/heads/master
v: v3
  • Loading branch information
Frederic Weisbecker authored and Ingo Molnar committed Aug 16, 2009
1 parent 0d8b427 commit 6d0850c
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 39 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0f25bfc8d8b31a4ac8e4ff6cbc3911fb7092a4a7
refs/heads/master: 0d3a5c885971de1e3124d85bfadf818abac9ba12
44 changes: 6 additions & 38 deletions trunk/tools/perf/builtin-report.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ static int cwdlen;
static struct rb_root threads;
static struct thread *last_match;

static struct perf_header *header;

static
struct callchain_param callchain_param = {
.mode = CHAIN_GRAPH_REL,
Expand Down Expand Up @@ -1319,29 +1321,12 @@ static void trace_event(event_t *event)
dump_printf(".\n");
}

static struct perf_header *header;

static struct perf_counter_attr *perf_header__find_attr(u64 id)
{
int i;

for (i = 0; i < header->attrs; i++) {
struct perf_header_attr *attr = header->attr[i];
int j;

for (j = 0; j < attr->ids; j++) {
if (attr->id[j] == id)
return &attr->attr;
}
}

return NULL;
}

static int
process_read_event(event_t *event, unsigned long offset, unsigned long head)
{
struct perf_counter_attr *attr = perf_header__find_attr(event->read.id);
struct perf_counter_attr *attr;

attr = perf_header__find_attr(event->read.id, header);

if (show_threads) {
const char *name = attr ? __event_name(attr->type, attr->config)
Expand Down Expand Up @@ -1405,23 +1390,6 @@ process_event(event_t *event, unsigned long offset, unsigned long head)
return 0;
}

static u64 perf_header__sample_type(void)
{
u64 type = 0;
int i;

for (i = 0; i < header->attrs; i++) {
struct perf_header_attr *attr = header->attr[i];

if (!type)
type = attr->attr.sample_type;
else if (type != attr->attr.sample_type)
die("non matching sample_type");
}

return type;
}

static int __cmd_report(void)
{
int ret, rc = EXIT_FAILURE;
Expand Down Expand Up @@ -1460,7 +1428,7 @@ static int __cmd_report(void)
header = perf_header__read(input);
head = header->data_offset;

sample_type = perf_header__sample_type();
sample_type = perf_header__sample_type(header);

if (!(sample_type & PERF_SAMPLE_CALLCHAIN)) {
if (sort__has_parent) {
Expand Down
35 changes: 35 additions & 0 deletions trunk/tools/perf/util/header.c
Original file line number Diff line number Diff line change
Expand Up @@ -243,3 +243,38 @@ struct perf_header *perf_header__read(int fd)

return self;
}

u64 perf_header__sample_type(struct perf_header *header)
{
u64 type = 0;
int i;

for (i = 0; i < header->attrs; i++) {
struct perf_header_attr *attr = header->attr[i];

if (!type)
type = attr->attr.sample_type;
else if (type != attr->attr.sample_type)
die("non matching sample_type");
}

return type;
}

struct perf_counter_attr *
perf_header__find_attr(u64 id, struct perf_header *header)
{
int i;

for (i = 0; i < header->attrs; i++) {
struct perf_header_attr *attr = header->attr[i];
int j;

for (j = 0; j < attr->ids; j++) {
if (attr->id[j] == id)
return &attr->attr;
}
}

return NULL;
}
4 changes: 4 additions & 0 deletions trunk/tools/perf/util/header.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ struct perf_header_attr *
perf_header_attr__new(struct perf_counter_attr *attr);
void perf_header_attr__add_id(struct perf_header_attr *self, u64 id);

u64 perf_header__sample_type(struct perf_header *header);
struct perf_counter_attr *
perf_header__find_attr(u64 id, struct perf_header *header);


struct perf_header *perf_header__new(void);

Expand Down

0 comments on commit 6d0850c

Please sign in to comment.