Commit 93dd6e28 authored by Jiri Olsa's avatar Jiri Olsa Committed by Arnaldo Carvalho de Melo
Browse files

libperf: Introduce perf_evlist__exit()



Add the perf_evlist__exit() function, so far it's not exported and added
only for internal use for perf and libperf.

USe it to release cpus/threads and pollfd array.

Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20191007125344.14268-25-jolsa@kernel.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 230662e1
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -109,13 +109,23 @@ perf_evlist__next(struct perf_evlist *evlist, struct perf_evsel *prev)
	return next;
}

void perf_evlist__exit(struct perf_evlist *evlist)
{
	perf_cpu_map__put(evlist->cpus);
	perf_thread_map__put(evlist->threads);
	evlist->cpus = NULL;
	evlist->threads = NULL;
	fdarray__exit(&evlist->pollfd);
}

void perf_evlist__delete(struct perf_evlist *evlist)
{
	if (evlist == NULL)
		return;

	perf_evlist__munmap(evlist);
	fdarray__exit(&evlist->pollfd);
	perf_evlist__close(evlist);
	perf_evlist__exit(evlist);
	free(evlist);
}

+2 −0
Original line number Diff line number Diff line
@@ -48,6 +48,8 @@ int perf_evlist__mmap_ops(struct perf_evlist *evlist,
			  struct perf_evlist_mmap_ops *ops,
			  struct perf_mmap_param *mp);

void perf_evlist__exit(struct perf_evlist *evlist);

/**
 * __perf_evlist__for_each_entry - iterate thru all the evsels
 * @list: list_head instance to iterate
+1 −5
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ void evlist__exit(struct evlist *evlist)
{
	zfree(&evlist->mmap);
	zfree(&evlist->overwrite_mmap);
	fdarray__exit(&evlist->core.pollfd);
	perf_evlist__exit(&evlist->core);
}

void evlist__delete(struct evlist *evlist)
@@ -148,10 +148,6 @@ void evlist__delete(struct evlist *evlist)

	evlist__munmap(evlist);
	evlist__close(evlist);
	perf_cpu_map__put(evlist->core.cpus);
	perf_thread_map__put(evlist->core.threads);
	evlist->core.cpus = NULL;
	evlist->core.threads = NULL;
	evlist__purge(evlist);
	evlist__exit(evlist);
	free(evlist);