Lines Matching refs:alias

96 	/** @from_sysfs: Was the alias from sysfs or a json event? */
298 static int perf_pmu__parse_scale(struct perf_pmu *pmu, struct perf_pmu_alias *alias)
310 scnprintf(path + len, sizeof(path) - len, "%s/events/%s.scale", pmu->name, alias->name);
328 ret = perf_pmu__convert_scale(scale, NULL, &alias->scale);
334 static int perf_pmu__parse_unit(struct perf_pmu *pmu, struct perf_pmu_alias *alias)
345 scnprintf(path + len, sizeof(path) - len, "%s/events/%s.unit", pmu->name, alias->name);
351 sret = read(fd, alias->unit, UNIT_MAX_LEN);
357 if (alias->unit[sret - 1] == '\n')
358 alias->unit[sret - 1] = '\0';
360 alias->unit[sret] = '\0';
365 alias->unit[0] = '\0';
400 static void perf_pmu__parse_per_pkg(struct perf_pmu *pmu, struct perf_pmu_alias *alias)
402 alias->per_pkg = perf_pmu__parse_event_source_bool(pmu->name, alias->name, "per-pkg");
405 static void perf_pmu__parse_snapshot(struct perf_pmu *pmu, struct perf_pmu_alias *alias)
407 alias->snapshot = perf_pmu__parse_event_source_bool(pmu->name, alias->name, "snapshot");
410 /* Delete an alias entry. */
424 struct perf_pmu_alias *alias, *tmp;
426 list_for_each_entry_safe(alias, tmp, &pmu->aliases, list) {
427 list_del(&alias->list);
428 perf_pmu_free_alias(alias);
436 struct perf_pmu_alias *alias;
443 * Test if alias/event 'name' exists in the PMU's sysfs/events
462 list_for_each_entry(alias, &pmu->aliases, list) {
463 if (!strcasecmp(alias->name, name))
464 return alias;
480 pr_debug("alias %s differs in field '%s' ('%s' != '%s')\n",
487 static void read_alias_info(struct perf_pmu *pmu, struct perf_pmu_alias *alias)
489 if (!alias->from_sysfs || alias->info_loaded)
495 perf_pmu__parse_unit(pmu, alias);
496 perf_pmu__parse_scale(pmu, alias);
497 perf_pmu__parse_per_pkg(pmu, alias);
498 perf_pmu__parse_snapshot(pmu, alias);
503 struct perf_pmu_alias *alias;
513 read_alias_info(data->pmu, data->alias);
514 assign_str(pe->name, "desc", &data->alias->desc, pe->desc);
515 assign_str(pe->name, "long_desc", &data->alias->long_desc, pe->long_desc);
516 assign_str(pe->name, "topic", &data->alias->topic, pe->topic);
517 data->alias->per_pkg = pe->perpkg;
519 parse_events_terms__exit(&data->alias->terms);
520 ret = parse_events_terms(&data->alias->terms, pe->event, /*input=*/NULL);
525 ret = perf_pmu__convert_scale(pe->unit, &unit, &data->alias->scale);
527 snprintf(data->alias->unit, sizeof(data->alias->unit), "%s", unit);
536 struct perf_pmu_alias *alias;
556 alias = zalloc(sizeof(*alias));
557 if (!alias)
560 parse_events_terms__init(&alias->terms);
561 alias->scale = 1.0;
562 alias->unit[0] = '\0';
563 alias->per_pkg = perpkg;
564 alias->snapshot = false;
565 alias->deprecated = deprecated;
567 ret = parse_events_terms(&alias->terms, val, val_fd);
569 pr_err("Cannot parse alias %s: %d\n", val, ret);
570 free(alias);
574 alias->name = strdup(name);
575 alias->desc = desc ? strdup(desc) : NULL;
576 alias->long_desc = long_desc ? strdup(long_desc) :
578 alias->topic = topic ? strdup(topic) : NULL;
579 alias->pmu_name = pmu_name ? strdup(pmu_name) : NULL;
581 if (perf_pmu__convert_scale(unit, (char **)&unit, &alias->scale) < 0) {
582 perf_pmu_free_alias(alias);
585 snprintf(alias->unit, sizeof(alias->unit), "%s", unit);
590 alias->from_sysfs = true;
595 .alias = alias,
611 list_add_tail(&alias->list, &pmu->aliases);
722 static int pmu_alias_terms(struct perf_pmu_alias *alias, int err_loc, struct list_head *terms)
728 list_for_each_entry(term, &alias->terms.terms, list) {
909 * uncore alias may be from different PMU with common prefix
918 * Match more complex aliases where the alias name is a comma-delimited
921 * Example: For alias "socket,pmuname" and PMU "socketX_pmunameY", we
1033 FILE *file = perf_pmu__open_file_at(pmu, dirfd, "alias");
1372 * traditionally have had to handle not having a PMU. An alias may
1551 struct perf_pmu_alias *alias;
1572 alias = perf_pmu__find_alias(pmu, name, /*load=*/ true);
1573 if (alias || pmu->cpu_aliases_added)
1574 return alias;
1581 alias = perf_pmu__find_alias(pmu, name, /*load=*/ false);
1583 return alias;
1588 struct perf_pmu_alias *alias,
1593 read_alias_info(pmu, alias);
1599 if (info->unit && alias->unit[0]) {
1605 if (info->scale && alias->scale) {
1611 if (info->snapshot && alias->snapshot) {
1618 if (alias->unit[0])
1619 info->unit = alias->unit;
1621 if (alias->scale)
1622 info->scale = alias->scale;
1624 if (alias->snapshot)
1625 info->snapshot = alias->snapshot;
1631 * Find alias in the terms list and replace it with the terms
1632 * defined for the alias
1639 struct perf_pmu_alias *alias;
1663 alias = pmu_find_alias(pmu, term);
1664 if (!alias)
1666 ret = pmu_alias_terms(alias, term->err_term, &term->list);
1675 ret = check_info_data(pmu, alias, info, err, term->err_term);
1679 if (alias->per_pkg)
1872 const struct perf_pmu_alias *alias, bool skip_duplicate_pmus)
1877 int used = snprintf(buf, len, "%.*s/%s", (int)pmu_name_len, pmu->name, alias->name);
1879 list_for_each_entry(term, &alias->terms.terms, list) {
1926 info.alias = NULL;
1934 info.alias = info.name;
1962 info.alias = NULL;