Lines Matching full:alias
93 /** @from_sysfs: Was the alias from sysfs or a json event? */
295 static int perf_pmu__parse_scale(struct perf_pmu *pmu, struct perf_pmu_alias *alias) in perf_pmu__parse_scale() argument
307 scnprintf(path + len, sizeof(path) - len, "%s/events/%s.scale", pmu->name, alias->name); in perf_pmu__parse_scale()
325 ret = perf_pmu__convert_scale(scale, NULL, &alias->scale); in perf_pmu__parse_scale()
331 static int perf_pmu__parse_unit(struct perf_pmu *pmu, struct perf_pmu_alias *alias) in perf_pmu__parse_unit() argument
342 scnprintf(path + len, sizeof(path) - len, "%s/events/%s.unit", pmu->name, alias->name); in perf_pmu__parse_unit()
348 sret = read(fd, alias->unit, UNIT_MAX_LEN); in perf_pmu__parse_unit()
354 if (alias->unit[sret - 1] == '\n') in perf_pmu__parse_unit()
355 alias->unit[sret - 1] = '\0'; in perf_pmu__parse_unit()
357 alias->unit[sret] = '\0'; in perf_pmu__parse_unit()
362 alias->unit[0] = '\0'; in perf_pmu__parse_unit()
397 static void perf_pmu__parse_per_pkg(struct perf_pmu *pmu, struct perf_pmu_alias *alias) in perf_pmu__parse_per_pkg() argument
399 alias->per_pkg = perf_pmu__parse_event_source_bool(pmu->name, alias->name, "per-pkg"); in perf_pmu__parse_per_pkg()
402 static void perf_pmu__parse_snapshot(struct perf_pmu *pmu, struct perf_pmu_alias *alias) in perf_pmu__parse_snapshot() argument
404 alias->snapshot = perf_pmu__parse_event_source_bool(pmu->name, alias->name, "snapshot"); in perf_pmu__parse_snapshot()
407 /* Delete an alias entry. */
421 struct perf_pmu_alias *alias, *tmp; in perf_pmu__del_aliases() local
423 list_for_each_entry_safe(alias, tmp, &pmu->aliases, list) { in perf_pmu__del_aliases()
424 list_del(&alias->list); in perf_pmu__del_aliases()
425 perf_pmu_free_alias(alias); in perf_pmu__del_aliases()
433 struct perf_pmu_alias *alias; in perf_pmu__find_alias() local
440 * Test if alias/event 'name' exists in the PMU's sysfs/events in perf_pmu__find_alias()
459 list_for_each_entry(alias, &pmu->aliases, list) { in perf_pmu__find_alias()
460 if (!strcasecmp(alias->name, name)) in perf_pmu__find_alias()
461 return alias; in perf_pmu__find_alias()
477 pr_debug("alias %s differs in field '%s' ('%s' != '%s')\n", in assign_str()
484 static void read_alias_info(struct perf_pmu *pmu, struct perf_pmu_alias *alias) in read_alias_info() argument
486 if (!alias->from_sysfs || alias->info_loaded) in read_alias_info()
492 perf_pmu__parse_unit(pmu, alias); in read_alias_info()
493 perf_pmu__parse_scale(pmu, alias); in read_alias_info()
494 perf_pmu__parse_per_pkg(pmu, alias); in read_alias_info()
495 perf_pmu__parse_snapshot(pmu, alias); in read_alias_info()
500 struct perf_pmu_alias *alias; member
510 read_alias_info(data->pmu, data->alias); in update_alias()
511 assign_str(pe->name, "desc", &data->alias->desc, pe->desc); in update_alias()
512 assign_str(pe->name, "long_desc", &data->alias->long_desc, pe->long_desc); in update_alias()
513 assign_str(pe->name, "topic", &data->alias->topic, pe->topic); in update_alias()
514 data->alias->per_pkg = pe->perpkg; in update_alias()
516 parse_events_terms__exit(&data->alias->terms); in update_alias()
517 ret = parse_events_terms(&data->alias->terms, pe->event, /*input=*/NULL); in update_alias()
522 ret = perf_pmu__convert_scale(pe->unit, &unit, &data->alias->scale); in update_alias()
524 snprintf(data->alias->unit, sizeof(data->alias->unit), "%s", unit); in update_alias()
533 struct perf_pmu_alias *alias; in perf_pmu__new_alias() local
539 /* Alias was already created/loaded. */ in perf_pmu__new_alias()
553 alias = zalloc(sizeof(*alias)); in perf_pmu__new_alias()
554 if (!alias) in perf_pmu__new_alias()
557 parse_events_terms__init(&alias->terms); in perf_pmu__new_alias()
558 alias->scale = 1.0; in perf_pmu__new_alias()
559 alias->unit[0] = '\0'; in perf_pmu__new_alias()
560 alias->per_pkg = perpkg; in perf_pmu__new_alias()
561 alias->snapshot = false; in perf_pmu__new_alias()
562 alias->deprecated = deprecated; in perf_pmu__new_alias()
564 ret = parse_events_terms(&alias->terms, val, val_fd); in perf_pmu__new_alias()
566 pr_err("Cannot parse alias %s: %d\n", val, ret); in perf_pmu__new_alias()
567 free(alias); in perf_pmu__new_alias()
571 alias->name = strdup(name); in perf_pmu__new_alias()
572 alias->desc = desc ? strdup(desc) : NULL; in perf_pmu__new_alias()
573 alias->long_desc = long_desc ? strdup(long_desc) : in perf_pmu__new_alias()
575 alias->topic = topic ? strdup(topic) : NULL; in perf_pmu__new_alias()
576 alias->pmu_name = pmu_name ? strdup(pmu_name) : NULL; in perf_pmu__new_alias()
578 if (perf_pmu__convert_scale(unit, (char **)&unit, &alias->scale) < 0) { in perf_pmu__new_alias()
579 perf_pmu_free_alias(alias); in perf_pmu__new_alias()
582 snprintf(alias->unit, sizeof(alias->unit), "%s", unit); in perf_pmu__new_alias()
587 alias->from_sysfs = true; in perf_pmu__new_alias()
592 .alias = alias, in perf_pmu__new_alias()
608 list_add_tail(&alias->list, &pmu->aliases); in perf_pmu__new_alias()
719 static int pmu_alias_terms(struct perf_pmu_alias *alias, int err_loc, struct list_head *terms) in pmu_alias_terms() argument
725 list_for_each_entry(term, &alias->terms.terms, list) { in pmu_alias_terms()
922 * uncore alias may be from different PMU with common prefix in pmu_uncore_alias_match()
931 * Match more complex aliases where the alias name is a comma-delimited in pmu_uncore_alias_match()
934 * Example: For alias "socket,pmuname" and PMU "socketX_pmunameY", we in pmu_uncore_alias_match()
1046 FILE *file = perf_pmu__open_file_at(pmu, dirfd, "alias"); in pmu_find_alias_name()
1524 struct perf_pmu_alias *alias; in pmu_find_alias() local
1545 alias = perf_pmu__find_alias(pmu, name, /*load=*/ true); in pmu_find_alias()
1546 if (alias || pmu->cpu_aliases_added) in pmu_find_alias()
1547 return alias; in pmu_find_alias()
1549 /* Alias doesn't exist, try to get it from the json events. */ in pmu_find_alias()
1554 alias = perf_pmu__find_alias(pmu, name, /*load=*/ false); in pmu_find_alias()
1556 return alias; in pmu_find_alias()
1561 struct perf_pmu_alias *alias, in check_info_data() argument
1566 read_alias_info(pmu, alias); in check_info_data()
1572 if (info->unit && alias->unit[0]) { in check_info_data()
1578 if (info->scale && alias->scale) { in check_info_data()
1584 if (info->snapshot && alias->snapshot) { in check_info_data()
1591 if (alias->unit[0]) in check_info_data()
1592 info->unit = alias->unit; in check_info_data()
1594 if (alias->scale) in check_info_data()
1595 info->scale = alias->scale; in check_info_data()
1597 if (alias->snapshot) in check_info_data()
1598 info->snapshot = alias->snapshot; in check_info_data()
1604 * Find alias in the terms list and replace it with the terms
1605 * defined for the alias
1612 struct perf_pmu_alias *alias; in perf_pmu__check_alias() local
1631 alias = pmu_find_alias(pmu, term); in perf_pmu__check_alias()
1632 if (!alias) in perf_pmu__check_alias()
1634 ret = pmu_alias_terms(alias, term->err_term, &term->list); in perf_pmu__check_alias()
1642 ret = check_info_data(pmu, alias, info, err, term->err_term); in perf_pmu__check_alias()
1646 if (alias->per_pkg) in perf_pmu__check_alias()
1825 const struct perf_pmu_alias *alias, bool skip_duplicate_pmus) in format_alias() argument
1830 int used = snprintf(buf, len, "%.*s/%s", (int)pmu_name_len, pmu->name, alias->name); in format_alias()
1832 list_for_each_entry(term, &alias->terms.terms, list) { in format_alias()
1873 info.alias = NULL; in perf_pmu__for_each_event()
1881 info.alias = info.name; in perf_pmu__for_each_event()
1909 info.alias = NULL; in perf_pmu__for_each_event()