Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58754121 authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo Committed by Ingo Molnar
Browse files

perf tools: Don't die() in perf_header_attr__add_id()



Propagate the errors instead, the users are the ones to decide
what to do if a library call fails.

Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <1258427892-16312-2-git-send-email-acme@infradead.org>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 11deb1f9
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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);
+12 −6
Original line number Diff line number Diff line
@@ -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;
}

/*
@@ -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");
+1 −1
Original line number Diff line number Diff line
@@ -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 *