Lines Matching refs:pmu
337 pmu_name = (char *)pe->pmu; in __perf_pmu__new_alias()
693 static char *perf_pmu__getcpuid(struct perf_pmu *pmu) in perf_pmu__getcpuid() argument
702 cpuid = get_cpuid_str(pmu); in perf_pmu__getcpuid()
713 struct pmu_events_map *perf_pmu__find_map(struct perf_pmu *pmu) in perf_pmu__find_map() argument
716 char *cpuid = perf_pmu__getcpuid(pmu); in perf_pmu__find_map()
826 void pmu_add_cpu_aliases_map(struct list_head *head, struct perf_pmu *pmu, in pmu_add_cpu_aliases_map() argument
830 const char *name = pmu->name; in pmu_add_cpu_aliases_map()
838 const char *pname = pe->pmu ? pe->pmu : cpu_name; in pmu_add_cpu_aliases_map()
846 if (pmu->is_uncore && pmu_uncore_alias_match(pname, name)) in pmu_add_cpu_aliases_map()
860 static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu) in pmu_add_cpu_aliases() argument
864 map = perf_pmu__find_map(pmu); in pmu_add_cpu_aliases()
868 pmu_add_cpu_aliases_map(head, pmu, map); in pmu_add_cpu_aliases()
900 struct perf_pmu *pmu; member
906 struct perf_pmu *pmu = idata->pmu; in pmu_add_sys_aliases_iter_fn() local
914 if (!pe->compat || !pe->pmu) in pmu_add_sys_aliases_iter_fn()
917 if (!strcmp(pmu->id, pe->compat) && in pmu_add_sys_aliases_iter_fn()
918 pmu_uncore_alias_match(pe->pmu, pmu->name)) { in pmu_add_sys_aliases_iter_fn()
929 void pmu_add_sys_aliases(struct list_head *head, struct perf_pmu *pmu) in pmu_add_sys_aliases() argument
933 .pmu = pmu, in pmu_add_sys_aliases()
936 if (!pmu->id) in pmu_add_sys_aliases()
943 perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused) in perf_pmu__get_default_config()
975 struct perf_pmu *pmu; in pmu_lookup() local
1006 pmu = zalloc(sizeof(*pmu)); in pmu_lookup()
1007 if (!pmu) in pmu_lookup()
1010 pmu->cpus = pmu_cpumask(name); in pmu_lookup()
1011 pmu->name = strdup(name); in pmu_lookup()
1012 if (!pmu->name) in pmu_lookup()
1017 pmu->alias_name = strdup(alias_name); in pmu_lookup()
1018 if (!pmu->alias_name) in pmu_lookup()
1022 pmu->type = type; in pmu_lookup()
1023 pmu->is_uncore = pmu_is_uncore(name); in pmu_lookup()
1024 if (pmu->is_uncore) in pmu_lookup()
1025 pmu->id = pmu_id(name); in pmu_lookup()
1026 pmu->is_hybrid = is_hybrid; in pmu_lookup()
1027 pmu->max_precise = pmu_max_precise(name); in pmu_lookup()
1028 pmu_add_cpu_aliases(&aliases, pmu); in pmu_lookup()
1029 pmu_add_sys_aliases(&aliases, pmu); in pmu_lookup()
1031 INIT_LIST_HEAD(&pmu->format); in pmu_lookup()
1032 INIT_LIST_HEAD(&pmu->aliases); in pmu_lookup()
1033 INIT_LIST_HEAD(&pmu->caps); in pmu_lookup()
1034 list_splice(&format, &pmu->format); in pmu_lookup()
1035 list_splice(&aliases, &pmu->aliases); in pmu_lookup()
1036 list_add_tail(&pmu->list, &pmus); in pmu_lookup()
1038 if (pmu->is_hybrid) in pmu_lookup()
1039 list_add_tail(&pmu->hybrid_list, &perf_pmu__hybrid_pmus); in pmu_lookup()
1041 pmu->default_config = perf_pmu__get_default_config(pmu); in pmu_lookup()
1043 return pmu; in pmu_lookup()
1045 if (pmu->name) in pmu_lookup()
1046 free(pmu->name); in pmu_lookup()
1047 free(pmu); in pmu_lookup()
1053 struct perf_pmu *pmu; in pmu_find() local
1055 list_for_each_entry(pmu, &pmus, list) { in pmu_find()
1056 if (!strcmp(pmu->name, name) || in pmu_find()
1057 (pmu->alias_name && !strcmp(pmu->alias_name, name))) in pmu_find()
1058 return pmu; in pmu_find()
1066 struct perf_pmu *pmu; in perf_pmu__find_by_type() local
1068 list_for_each_entry(pmu, &pmus, list) in perf_pmu__find_by_type()
1069 if (pmu->type == type) in perf_pmu__find_by_type()
1070 return pmu; in perf_pmu__find_by_type()
1075 struct perf_pmu *perf_pmu__scan(struct perf_pmu *pmu) in perf_pmu__scan() argument
1081 if (!pmu) { in perf_pmu__scan()
1083 pmu = list_prepare_entry(pmu, &pmus, list); in perf_pmu__scan()
1085 list_for_each_entry_continue(pmu, &pmus, list) in perf_pmu__scan()
1086 return pmu; in perf_pmu__scan()
1092 struct perf_pmu *pmu = NULL; in evsel__find_pmu() local
1094 while ((pmu = perf_pmu__scan(pmu)) != NULL) { in evsel__find_pmu()
1095 if (pmu->type == evsel->core.attr.type) in evsel__find_pmu()
1099 return pmu; in evsel__find_pmu()
1104 struct perf_pmu *pmu = evsel__find_pmu(evsel); in evsel__is_aux_event() local
1106 return pmu && pmu->auxtrace; in evsel__is_aux_event()
1111 struct perf_pmu *pmu; in perf_pmu__find() local
1118 pmu = pmu_find(name); in perf_pmu__find()
1119 if (pmu) in perf_pmu__find()
1120 return pmu; in perf_pmu__find()
1391 int perf_pmu__config(struct perf_pmu *pmu, struct perf_event_attr *attr, in perf_pmu__config() argument
1395 bool zero = !!pmu->default_config; in perf_pmu__config()
1397 attr->type = pmu->type; in perf_pmu__config()
1398 return perf_pmu__config_terms(pmu->name, &pmu->format, attr, in perf_pmu__config()
1402 static struct perf_pmu_alias *pmu_find_alias(struct perf_pmu *pmu, in pmu_find_alias() argument
1414 if (pmu_find_format(&pmu->format, term->config)) in pmu_find_alias()
1425 list_for_each_entry(alias, &pmu->aliases, list) { in pmu_find_alias()
1462 int perf_pmu__check_alias(struct perf_pmu *pmu, struct list_head *head_terms, in perf_pmu__check_alias() argument
1482 alias = pmu_find_alias(pmu, term); in perf_pmu__check_alias()
1563 static char *format_alias(char *buf, int len, struct perf_pmu *pmu, in format_alias() argument
1567 int used = snprintf(buf, len, "%s/%s", pmu->name, alias->name); in format_alias()
1589 static char *format_alias_or(char *buf, int len, struct perf_pmu *pmu, in format_alias_or() argument
1592 snprintf(buf, len, "%s OR %s/%s/", alias->name, pmu->name, alias->name); in format_alias_or()
1601 char *pmu; member
1658 struct perf_pmu *pmu; in print_pmu_events() local
1668 pmu = NULL; in print_pmu_events()
1670 while ((pmu = perf_pmu__scan(pmu)) != NULL) { in print_pmu_events()
1671 list_for_each_entry(alias, &pmu->aliases, list) in print_pmu_events()
1673 if (pmu->selectable) in print_pmu_events()
1679 pmu = NULL; in print_pmu_events()
1681 while ((pmu = perf_pmu__scan(pmu)) != NULL) { in print_pmu_events()
1682 list_for_each_entry(alias, &pmu->aliases, list) { in print_pmu_events()
1684 format_alias(buf, sizeof(buf), pmu, alias); in print_pmu_events()
1685 bool is_cpu = is_pmu_core(pmu->name); in print_pmu_events()
1699 name = format_alias_or(buf, sizeof(buf), pmu, alias); in print_pmu_events()
1705 pmu, alias); in print_pmu_events()
1714 aliases[j].pmu = pmu->name; in print_pmu_events()
1720 if (pmu->selectable && in print_pmu_events()
1721 (event_glob == NULL || strglobmatch(pmu->name, event_glob))) { in print_pmu_events()
1723 if (asprintf(&s, "%s//", pmu->name) < 0) in print_pmu_events()
1753 printf("%*s%s/%s/ ", 8, "", aliases[j].pmu, aliases[j].str); in print_pmu_events()
1780 struct perf_pmu *pmu; in pmu_have_event() local
1783 pmu = NULL; in pmu_have_event()
1784 while ((pmu = perf_pmu__scan(pmu)) != NULL) { in pmu_have_event()
1785 if (strcmp(pname, pmu->name)) in pmu_have_event()
1787 list_for_each_entry(alias, &pmu->aliases, list) in pmu_have_event()
1794 static FILE *perf_pmu__open_file(struct perf_pmu *pmu, const char *name) in perf_pmu__open_file() argument
1804 "%s" EVENT_SOURCE_DEVICE_PATH "%s/%s", sysfs, pmu->name, name); in perf_pmu__open_file()
1810 int perf_pmu__scan_file(struct perf_pmu *pmu, const char *name, const char *fmt, in perf_pmu__scan_file() argument
1818 file = perf_pmu__open_file(pmu, name); in perf_pmu__scan_file()
1856 int perf_pmu__caps_parse(struct perf_pmu *pmu) in perf_pmu__caps_parse() argument
1869 "%s" EVENT_SOURCE_DEVICE_PATH "%s/caps", sysfs, pmu->name); in perf_pmu__caps_parse()
1894 (perf_pmu__new_caps(&pmu->caps, name, value) < 0)) { in perf_pmu__caps_parse()
1908 void perf_pmu__warn_invalid_config(struct perf_pmu *pmu, __u64 config, in perf_pmu__warn_invalid_config() argument
1916 list_for_each_entry(format, &pmu->format, list) { in perf_pmu__warn_invalid_config()
1965 int perf_pmu__cpus_match(struct perf_pmu *pmu, struct perf_cpu_map *cpus, in perf_pmu__cpus_match() argument
1969 struct perf_cpu_map *pmu_cpus = pmu->cpus; in perf_pmu__cpus_match()