Lines Matching refs:pmu

434 perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused)  in perf_pmu__get_default_config()
441 struct perf_pmu *pmu; in pmu_lookup() local
460 pmu = zalloc(sizeof(*pmu)); in pmu_lookup()
461 if (!pmu) in pmu_lookup()
464 pmu->cpus = pmu_cpumask(name); in pmu_lookup()
466 INIT_LIST_HEAD(&pmu->format); in pmu_lookup()
467 INIT_LIST_HEAD(&pmu->aliases); in pmu_lookup()
468 list_splice(&format, &pmu->format); in pmu_lookup()
469 list_splice(&aliases, &pmu->aliases); in pmu_lookup()
470 pmu->name = strdup(name); in pmu_lookup()
471 pmu->type = type; in pmu_lookup()
472 list_add_tail(&pmu->list, &pmus); in pmu_lookup()
474 pmu->default_config = perf_pmu__get_default_config(pmu); in pmu_lookup()
476 return pmu; in pmu_lookup()
481 struct perf_pmu *pmu; in pmu_find() local
483 list_for_each_entry(pmu, &pmus, list) in pmu_find()
484 if (!strcmp(pmu->name, name)) in pmu_find()
485 return pmu; in pmu_find()
490 struct perf_pmu *perf_pmu__scan(struct perf_pmu *pmu) in perf_pmu__scan() argument
496 if (!pmu) { in perf_pmu__scan()
498 pmu = list_prepare_entry(pmu, &pmus, list); in perf_pmu__scan()
500 list_for_each_entry_continue(pmu, &pmus, list) in perf_pmu__scan()
501 return pmu; in perf_pmu__scan()
507 struct perf_pmu *pmu; in perf_pmu__find() local
514 pmu = pmu_find(name); in perf_pmu__find()
515 if (pmu) in perf_pmu__find()
516 return pmu; in perf_pmu__find()
675 int perf_pmu__config(struct perf_pmu *pmu, struct perf_event_attr *attr, in perf_pmu__config() argument
678 bool zero = !!pmu->default_config; in perf_pmu__config()
680 attr->type = pmu->type; in perf_pmu__config()
681 return perf_pmu__config_terms(&pmu->format, attr, head_terms, zero); in perf_pmu__config()
684 static struct perf_pmu_alias *pmu_find_alias(struct perf_pmu *pmu, in pmu_find_alias() argument
696 if (pmu_find_format(&pmu->format, term->config)) in pmu_find_alias()
707 list_for_each_entry(alias, &pmu->aliases, list) { in pmu_find_alias()
744 int perf_pmu__check_alias(struct perf_pmu *pmu, struct list_head *head_terms, in perf_pmu__check_alias() argument
762 alias = pmu_find_alias(pmu, term); in perf_pmu__check_alias()
830 static char *format_alias(char *buf, int len, struct perf_pmu *pmu, in format_alias() argument
834 int used = snprintf(buf, len, "%s/%s", pmu->name, alias->name); in format_alias()
856 static char *format_alias_or(char *buf, int len, struct perf_pmu *pmu, in format_alias_or() argument
859 snprintf(buf, len, "%s OR %s/%s/", alias->name, pmu->name, alias->name); in format_alias_or()
872 struct perf_pmu *pmu; in print_pmu_events() local
879 pmu = NULL; in print_pmu_events()
881 while ((pmu = perf_pmu__scan(pmu)) != NULL) { in print_pmu_events()
882 list_for_each_entry(alias, &pmu->aliases, list) in print_pmu_events()
884 if (pmu->selectable) in print_pmu_events()
890 pmu = NULL; in print_pmu_events()
892 while ((pmu = perf_pmu__scan(pmu)) != NULL) { in print_pmu_events()
893 list_for_each_entry(alias, &pmu->aliases, list) { in print_pmu_events()
894 char *name = format_alias(buf, sizeof(buf), pmu, alias); in print_pmu_events()
895 bool is_cpu = !strcmp(pmu->name, "cpu"); in print_pmu_events()
904 name = format_alias_or(buf, sizeof(buf), pmu, alias); in print_pmu_events()
911 if (pmu->selectable) { in print_pmu_events()
913 if (asprintf(&s, "%s//", pmu->name) < 0) in print_pmu_events()
945 struct perf_pmu *pmu; in pmu_have_event() local
948 pmu = NULL; in pmu_have_event()
949 while ((pmu = perf_pmu__scan(pmu)) != NULL) { in pmu_have_event()
950 if (strcmp(pname, pmu->name)) in pmu_have_event()
952 list_for_each_entry(alias, &pmu->aliases, list) in pmu_have_event()
959 static FILE *perf_pmu__open_file(struct perf_pmu *pmu, const char *name) in perf_pmu__open_file() argument
970 "%s" EVENT_SOURCE_DEVICE_PATH "%s/%s", sysfs, pmu->name, name); in perf_pmu__open_file()
978 int perf_pmu__scan_file(struct perf_pmu *pmu, const char *name, const char *fmt, in perf_pmu__scan_file() argument
986 file = perf_pmu__open_file(pmu, name); in perf_pmu__scan_file()