Lines Matching refs:pmu
664 char * __weak get_cpuid_str(struct perf_pmu *pmu __maybe_unused) in get_cpuid_str()
697 static char *perf_pmu__getcpuid(struct perf_pmu *pmu) in perf_pmu__getcpuid() argument
706 cpuid = get_cpuid_str(pmu); in perf_pmu__getcpuid()
717 struct pmu_events_map *perf_pmu__find_map(struct perf_pmu *pmu) in perf_pmu__find_map() argument
720 char *cpuid = perf_pmu__getcpuid(pmu); in perf_pmu__find_map()
749 static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu) in pmu_add_cpu_aliases() argument
754 const char *name = pmu->name; in pmu_add_cpu_aliases()
757 map = perf_pmu__find_map(pmu); in pmu_add_cpu_aliases()
775 pname = pe->pmu ? pe->pmu : "cpu"; in pmu_add_cpu_aliases()
791 perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused) in perf_pmu__get_default_config()
798 struct perf_pmu *pmu; in pmu_lookup() local
820 pmu = zalloc(sizeof(*pmu)); in pmu_lookup()
821 if (!pmu) in pmu_lookup()
824 pmu->cpus = pmu_cpumask(name); in pmu_lookup()
825 pmu->name = strdup(name); in pmu_lookup()
826 pmu->type = type; in pmu_lookup()
827 pmu->is_uncore = pmu_is_uncore(name); in pmu_lookup()
828 pmu_add_cpu_aliases(&aliases, pmu); in pmu_lookup()
830 INIT_LIST_HEAD(&pmu->format); in pmu_lookup()
831 INIT_LIST_HEAD(&pmu->aliases); in pmu_lookup()
832 list_splice(&format, &pmu->format); in pmu_lookup()
833 list_splice(&aliases, &pmu->aliases); in pmu_lookup()
834 list_add_tail(&pmu->list, &pmus); in pmu_lookup()
836 pmu->default_config = perf_pmu__get_default_config(pmu); in pmu_lookup()
838 return pmu; in pmu_lookup()
843 struct perf_pmu *pmu; in pmu_find() local
845 list_for_each_entry(pmu, &pmus, list) in pmu_find()
846 if (!strcmp(pmu->name, name)) in pmu_find()
847 return pmu; in pmu_find()
852 struct perf_pmu *perf_pmu__scan(struct perf_pmu *pmu) in perf_pmu__scan() argument
858 if (!pmu) { in perf_pmu__scan()
860 pmu = list_prepare_entry(pmu, &pmus, list); in perf_pmu__scan()
862 list_for_each_entry_continue(pmu, &pmus, list) in perf_pmu__scan()
863 return pmu; in perf_pmu__scan()
869 struct perf_pmu *pmu; in perf_pmu__find() local
876 pmu = pmu_find(name); in perf_pmu__find()
877 if (pmu) in perf_pmu__find()
878 return pmu; in perf_pmu__find()
1125 int perf_pmu__config(struct perf_pmu *pmu, struct perf_event_attr *attr, in perf_pmu__config() argument
1129 bool zero = !!pmu->default_config; in perf_pmu__config()
1131 attr->type = pmu->type; in perf_pmu__config()
1132 return perf_pmu__config_terms(&pmu->format, attr, head_terms, in perf_pmu__config()
1136 static struct perf_pmu_alias *pmu_find_alias(struct perf_pmu *pmu, in pmu_find_alias() argument
1148 if (pmu_find_format(&pmu->format, term->config)) in pmu_find_alias()
1159 list_for_each_entry(alias, &pmu->aliases, list) { in pmu_find_alias()
1196 int perf_pmu__check_alias(struct perf_pmu *pmu, struct list_head *head_terms, in perf_pmu__check_alias() argument
1216 alias = pmu_find_alias(pmu, term); in perf_pmu__check_alias()
1286 static char *format_alias(char *buf, int len, struct perf_pmu *pmu, in format_alias() argument
1290 int used = snprintf(buf, len, "%s/%s", pmu->name, alias->name); in format_alias()
1312 static char *format_alias_or(char *buf, int len, struct perf_pmu *pmu, in format_alias_or() argument
1315 snprintf(buf, len, "%s OR %s/%s/", alias->name, pmu->name, alias->name); in format_alias_or()
1324 char *pmu; member
1370 struct perf_pmu *pmu; in print_pmu_events() local
1380 pmu = NULL; in print_pmu_events()
1382 while ((pmu = perf_pmu__scan(pmu)) != NULL) { in print_pmu_events()
1383 list_for_each_entry(alias, &pmu->aliases, list) in print_pmu_events()
1385 if (pmu->selectable) in print_pmu_events()
1391 pmu = NULL; in print_pmu_events()
1393 while ((pmu = perf_pmu__scan(pmu)) != NULL) { in print_pmu_events()
1394 list_for_each_entry(alias, &pmu->aliases, list) { in print_pmu_events()
1396 format_alias(buf, sizeof(buf), pmu, alias); in print_pmu_events()
1397 bool is_cpu = !strcmp(pmu->name, "cpu"); in print_pmu_events()
1408 name = format_alias_or(buf, sizeof(buf), pmu, alias); in print_pmu_events()
1414 pmu, alias); in print_pmu_events()
1423 aliases[j].pmu = pmu->name; in print_pmu_events()
1428 if (pmu->selectable && in print_pmu_events()
1429 (event_glob == NULL || strglobmatch(pmu->name, event_glob))) { in print_pmu_events()
1431 if (asprintf(&s, "%s//", pmu->name) < 0) in print_pmu_events()
1461 printf("%*s%s/%s/ ", 8, "", aliases[j].pmu, aliases[j].str); in print_pmu_events()
1488 struct perf_pmu *pmu; in pmu_have_event() local
1491 pmu = NULL; in pmu_have_event()
1492 while ((pmu = perf_pmu__scan(pmu)) != NULL) { in pmu_have_event()
1493 if (strcmp(pname, pmu->name)) in pmu_have_event()
1495 list_for_each_entry(alias, &pmu->aliases, list) in pmu_have_event()
1502 static FILE *perf_pmu__open_file(struct perf_pmu *pmu, const char *name) in perf_pmu__open_file() argument
1513 "%s" EVENT_SOURCE_DEVICE_PATH "%s/%s", sysfs, pmu->name, name); in perf_pmu__open_file()
1521 int perf_pmu__scan_file(struct perf_pmu *pmu, const char *name, const char *fmt, in perf_pmu__scan_file() argument
1529 file = perf_pmu__open_file(pmu, name); in perf_pmu__scan_file()