Lines Matching full:alias

115 	/** @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)
307 scnprintf(path + len, sizeof(path) - len, "%s/events/%s.scale", pmu->name, alias->name);
325 ret = perf_pmu__convert_scale(scale, NULL, &alias->scale);
331 static int perf_pmu__parse_unit(struct perf_pmu *pmu, struct perf_pmu_alias *alias)
342 scnprintf(path + len, sizeof(path) - len, "%s/events/%s.unit", pmu->name, alias->name);
348 sret = read(fd, alias->unit, UNIT_MAX_LEN);
354 if (alias->unit[sret - 1] == '\n')
355 alias->unit[sret - 1] = '\0';
357 alias->unit[sret] = '\0';
362 alias->unit[0] = '\0';
397 static void perf_pmu__parse_per_pkg(struct perf_pmu *pmu, struct perf_pmu_alias *alias)
399 alias->per_pkg = perf_pmu__parse_event_source_bool(pmu->name, alias->name, "per-pkg");
402 static void perf_pmu__parse_snapshot(struct perf_pmu *pmu, struct perf_pmu_alias *alias)
404 alias->snapshot = perf_pmu__parse_event_source_bool(pmu->name, alias->name, "snapshot");
407 /* Delete an alias entry. */
408 static void perf_pmu_free_alias(struct perf_pmu_alias *alias)
410 if (!alias)
413 zfree(&alias->name);
414 zfree(&alias->desc);
415 zfree(&alias->long_desc);
416 zfree(&alias->topic);
417 zfree(&alias->pmu_name);
418 zfree(&alias->terms);
419 zfree(&alias->legacy_terms);
420 free(alias);
442 struct perf_pmu_alias *alias;
446 if (hashmap__find(pmu->aliases, name, &alias))
447 return alias;
453 * Test if alias/event 'name' exists in the PMU's sysfs/events
470 if (hashmap__find(pmu->aliases, name, &alias))
471 return alias;
488 pr_debug("alias %s differs in field '%s' ('%s' != '%s')\n",
495 static void read_alias_info(struct perf_pmu *pmu, struct perf_pmu_alias *alias)
497 if (!alias->from_sysfs || alias->info_loaded)
503 perf_pmu__parse_unit(pmu, alias);
504 perf_pmu__parse_scale(pmu, alias);
505 perf_pmu__parse_per_pkg(pmu, alias);
506 perf_pmu__parse_snapshot(pmu, alias);
511 struct perf_pmu_alias *alias;
522 read_alias_info(data->pmu, data->alias);
523 assign_str(pe->name, "desc", &data->alias->desc, pe->desc);
524 assign_str(pe->name, "long_desc", &data->alias->long_desc, pe->long_desc);
525 assign_str(pe->name, "topic", &data->alias->topic, pe->topic);
526 data->alias->per_pkg = pe->perpkg;
529 zfree(&data->alias->legacy_terms);
530 data->alias->legacy_terms = strdup(pe->event);
532 zfree(&data->alias->terms);
533 data->alias->terms = strdup(pe->event);
539 ret = perf_pmu__convert_scale(pe->unit, &unit, &data->alias->scale);
541 snprintf(data->alias->unit, sizeof(data->alias->unit), "%s", unit);
545 &data->alias->retirement_latency_mean);
549 &data->alias->retirement_latency_min);
553 &data->alias->retirement_latency_max);
562 struct perf_pmu_alias *alias, *old_alias;
568 /* Alias was already created/loaded. */
582 alias = zalloc(sizeof(*alias));
583 if (!alias)
586 alias->scale = 1.0;
587 alias->unit[0] = '\0';
588 alias->per_pkg = perpkg;
589 alias->snapshot = false;
590 alias->deprecated = deprecated;
591 alias->retirement_latency_mean = 0.0;
592 alias->retirement_latency_min = 0.0;
593 alias->retirement_latency_max = 0.0;
597 &alias->retirement_latency_mean);
601 &alias->retirement_latency_min);
605 &alias->retirement_latency_max);
611 alias->terms = strdup(val);
618 ret = io__getline(&io, &alias->terms, &line_len) < 0 ? -errno : 0;
620 pr_err("Failed to read alias %s\n", name);
623 if (line_len >= 1 && alias->terms[line_len - 1] == '\n')
624 alias->terms[line_len - 1] = '\0';
626 alias->name = strdup(name);
627 alias->desc = desc ? strdup(desc) : NULL;
628 alias->long_desc = long_desc ? strdup(long_desc) : NULL;
629 alias->topic = topic ? strdup(topic) : NULL;
630 alias->pmu_name = pmu_name ? strdup(pmu_name) : NULL;
632 if (perf_pmu__convert_scale(unit, (char **)&unit, &alias->scale) < 0) {
633 perf_pmu_free_alias(alias);
636 snprintf(alias->unit, sizeof(alias->unit), "%s", unit);
641 alias->from_sysfs = true;
646 .alias = alias,
676 hashmap__set(pmu->aliases, alias->name, alias, /*old_key=*/ NULL, &old_alias);
779 static int pmu_alias_terms(struct perf_pmu_alias *alias, struct list_head *terms)
786 ret = parse_events_terms(&alias_terms, alias->terms);
789 alias->name, alias->terms, ret);
989 * @pmu_name: The pmu->name or pmu->alias to match against.
1134 FILE *file = perf_pmu__open_file_at(pmu, dirfd, "alias");
1513 * traditionally have had to handle not having a PMU. An alias may
1729 struct perf_pmu_alias *alias;
1750 alias = perf_pmu__find_alias(pmu, name, /*load=*/ true);
1751 if (alias || pmu->cpu_aliases_added)
1752 return alias;
1754 /* Alias doesn't exist, try to get it from the json events. */
1763 alias = perf_pmu__find_alias(pmu, name, /*load=*/ false);
1765 return alias;
1770 struct perf_pmu_alias *alias,
1775 read_alias_info(pmu, alias);
1781 if (info->unit && alias->unit[0]) {
1787 if (info->scale && alias->scale) {
1793 if (info->snapshot && alias->snapshot) {
1800 if (alias->unit[0])
1801 info->unit = alias->unit;
1803 if (alias->scale)
1804 info->scale = alias->scale;
1806 if (alias->snapshot)
1807 info->snapshot = alias->snapshot;
1831 * Find alias in the terms list and replace it with the terms
1832 * defined for the alias
1839 struct perf_pmu_alias *alias;
1870 alias = pmu_find_alias(pmu, term);
1871 if (!alias)
1873 ret = pmu_alias_terms(alias, &term->list);
1882 ret = check_info_data(pmu, alias, info, err, term->err_term);
1886 if (alias->legacy_terms) {
1889 ret = perf_pmu__parse_terms_to_attr(pmu, alias->legacy_terms, &attr);
1900 if (alias->per_pkg)
1903 info->retirement_latency_mean = alias->retirement_latency_mean;
1904 info->retirement_latency_min = alias->retirement_latency_min;
1905 info->retirement_latency_max = alias->retirement_latency_max;
2134 const struct perf_pmu_alias *alias, bool skip_duplicate_pmus)
2143 if (!strstr(alias->terms, "=?")) {
2145 snprintf(buf, len, "%.*s/%s/", (int)pmu_name_len, pmu->name, alias->name);
2150 ret = parse_events_terms(&terms, alias->terms);
2153 alias->name, alias->terms, ret);
2155 scnprintf(buf, len, "%.*s/%s/", (int)pmu_name_len, pmu->name, alias->name);
2158 used = scnprintf(buf, len, "%.*s/%s", (int)pmu_name_len, pmu->name, alias->name);
2184 static bool perf_pmu_alias__check_deprecated(struct perf_pmu *pmu, struct perf_pmu_alias *alias)
2190 if (alias->legacy_deprecated_checked)
2191 return alias->deprecated;
2193 alias->legacy_deprecated_checked = true;
2194 if (alias->deprecated)
2197 check_terms = alias->terms;
2201 if (!has_legacy_config && alias->legacy_terms) {
2202 check_terms = alias->legacy_terms;
2212 alias->deprecated = true;
2215 alias->deprecated = !is_event_supported(attr.type, attr.config);
2217 return alias->deprecated;
2252 info.alias = NULL;
2260 info.alias = info.name;
2299 info.alias = NULL;
2375 * @pmu: The pmu whose name/alias to match.
2386 * @pmu: The pmu whose name/alias to match.