Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 169637
b: refs/heads/master
c: 5875412
h: refs/heads/master
i:
  169635: 7195da2
v: v3
  • Loading branch information
Arnaldo Carvalho de Melo authored and Ingo Molnar committed Nov 17, 2009
1 parent 00dad8f commit bbdcd05
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 9 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: 11deb1f9f6ca6318fa9470e024b9f0634df48b4c
refs/heads/master: 5875412152ce67fb5087157b86ab6597f91d23e8
5 changes: 4 additions & 1 deletion trunk/tools/perf/builtin-record.c
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,10 @@ static void create_counter(int counter, int cpu, pid_t pid)
exit(-1);
}

perf_header_attr__add_id(h_attr, read_data.id);
if (perf_header_attr__add_id(h_attr, read_data.id) < 0) {
pr_warning("Not enough memory to add id\n");
exit(-1);
}

assert(fd[nr_cpu][counter] >= 0);
fcntl(fd[nr_cpu][counter], F_SETFL, O_NONBLOCK);
Expand Down
18 changes: 12 additions & 6 deletions trunk/tools/perf/util/header.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,18 +39,23 @@ void perf_header_attr__delete(struct perf_header_attr *self)
free(self);
}

void perf_header_attr__add_id(struct perf_header_attr *self, u64 id)
int perf_header_attr__add_id(struct perf_header_attr *self, u64 id)
{
int pos = self->ids;

self->ids++;
if (self->ids > self->size) {
self->size *= 2;
self->id = realloc(self->id, self->size * sizeof(u64));
if (!self->id)
die("nomem");
int nsize = self->size * 2;
u64 *nid = realloc(self->id, nsize * sizeof(u64));

if (nid == NULL)
return -1;

self->size = nsize;
self->id = nid;
}
self->id[pos] = id;
return 0;
}

/*
Expand Down Expand Up @@ -444,7 +449,8 @@ struct perf_header *perf_header__read(int fd)
for (j = 0; j < nr_ids; j++) {
do_read(fd, &f_id, sizeof(f_id));

perf_header_attr__add_id(attr, f_id);
if (perf_header_attr__add_id(attr, f_id) < 0)
die("nomem");
}
if (perf_header__add_attr(self, attr) < 0)
die("nomem");
Expand Down
2 changes: 1 addition & 1 deletion trunk/tools/perf/util/header.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ char *perf_header__find_event(u64 id);
struct perf_header_attr *perf_header_attr__new(struct perf_event_attr *attr);
void perf_header_attr__delete(struct perf_header_attr *self);

void perf_header_attr__add_id(struct perf_header_attr *self, u64 id);
int perf_header_attr__add_id(struct perf_header_attr *self, u64 id);

u64 perf_header__sample_type(struct perf_header *header);
struct perf_event_attr *
Expand Down

0 comments on commit bbdcd05

Please sign in to comment.