Commit ce5b2934 authored by Ian Rogers's avatar Ian Rogers Committed by Namhyung Kim
Browse files

perf dso: Sort symbols under lock



Determine if symbols are sorted, set the sorted flag and sort under
the dso lock. Done in the interest of thread safety.

Signed-off-by: default avatarIan Rogers <irogers@google.com>
Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
Cc: Carsten Haitzler <carsten.haitzler@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Jason Wang <wangborong@cdjrlc.com>
Cc: Changbin Du <changbin.du@huawei.com>
Cc: Yang Jihong <yangjihong1@huawei.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/20230623054520.4118442-2-irogers@google.com


[ handle the similar code in util/probe-event.c ]
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
parent ae7eb5ba
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -398,7 +398,6 @@ struct symbol *map__find_symbol_by_name(struct map *map, const char *name)
		return NULL;

	dso = map__dso(map);
	if (!dso__sorted_by_name(dso))
	dso__sort_by_name(dso);

	return dso__find_symbol_by_name(dso, name);
+1 −2
Original line number Diff line number Diff line
@@ -3767,7 +3767,6 @@ int show_available_funcs(const char *target, struct nsinfo *nsi,
		goto end;
	}
	dso = map__dso(map);
	if (!dso__sorted_by_name(dso))
	dso__sort_by_name(dso);

	/* Show all (filtered) symbols */
+6 −2
Original line number Diff line number Diff line
@@ -613,8 +613,12 @@ struct symbol *dso__find_symbol_by_name(struct dso *dso, const char *name)

void dso__sort_by_name(struct dso *dso)
{
	mutex_lock(&dso->lock);
	if (!dso__sorted_by_name(dso)) {
		symbols__sort_by_name(&dso->symbol_names, &dso->symbols);
		dso__set_sorted_by_name(dso);
	return symbols__sort_by_name(&dso->symbol_names, &dso->symbols);
	}
	mutex_unlock(&dso->lock);
}

/*