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

Commit d77ade9f authored by Andi Kleen's avatar Andi Kleen Committed by Arnaldo Carvalho de Melo
Browse files

perf pmu: Extract function to get JSON alias map



Extract the code to get the per cpu JSON alias into a separate function
for reuse. No behavior changes.

Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/20170831194036.30146-6-andi@firstfloor.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 4ed962eb
Loading
Loading
Loading
Loading
+33 −16
Original line number Diff line number Diff line
@@ -516,16 +516,8 @@ char * __weak get_cpuid_str(void)
	return NULL;
}

/*
 * From the pmu_events_map, find the table of PMU events that corresponds
 * to the current running CPU. Then, add all PMU events from that table
 * as aliases.
 */
static void pmu_add_cpu_aliases(struct list_head *head, const char *name)
static char *perf_pmu__getcpuid(void)
{
	int i;
	struct pmu_events_map *map;
	struct pmu_event *pe;
	char *cpuid;
	static bool printed;

@@ -535,22 +527,50 @@ static void pmu_add_cpu_aliases(struct list_head *head, const char *name)
	if (!cpuid)
		cpuid = get_cpuid_str();
	if (!cpuid)
		return;
		return NULL;

	if (!printed) {
		pr_debug("Using CPUID %s\n", cpuid);
		printed = true;
	}
	return cpuid;
}

struct pmu_events_map *perf_pmu__find_map(void)
{
	struct pmu_events_map *map;
	char *cpuid = perf_pmu__getcpuid();
	int i;

	i = 0;
	while (1) {
	for (;;) {
		map = &pmu_events_map[i++];
		if (!map->table)
			goto out;
		if (!map->table) {
			map = NULL;
			break;
		}

		if (!strcmp(map->cpuid, cpuid))
			break;
	}
	free(cpuid);
	return map;
}

/*
 * From the pmu_events_map, find the table of PMU events that corresponds
 * to the current running CPU. Then, add all PMU events from that table
 * as aliases.
 */
static void pmu_add_cpu_aliases(struct list_head *head, const char *name)
{
	int i;
	struct pmu_events_map *map;
	struct pmu_event *pe;

	map = perf_pmu__find_map();
	if (!map)
		return;

	/*
	 * Found a matching PMU events table. Create aliases
@@ -575,9 +595,6 @@ static void pmu_add_cpu_aliases(struct list_head *head, const char *name)
				(char *)pe->metric_expr,
				(char *)pe->metric_name);
	}

out:
	free(cpuid);
}

struct perf_event_attr * __weak
+2 −0
Original line number Diff line number Diff line
@@ -90,4 +90,6 @@ int perf_pmu__test(void);

struct perf_event_attr *perf_pmu__get_default_config(struct perf_pmu *pmu);

struct pmu_events_map *perf_pmu__find_map(void);

#endif /* __PMU_H */