Lines Matching full:alias
141 static int perf_pmu__parse_scale(struct perf_pmu_alias *alias, char *dir, char *name) in perf_pmu__parse_scale() argument
167 ret = perf_pmu__convert_scale(scale, NULL, &alias->scale); in perf_pmu__parse_scale()
173 static int perf_pmu__parse_unit(struct perf_pmu_alias *alias, char *dir, char *name) in perf_pmu__parse_unit() argument
185 sret = read(fd, alias->unit, UNIT_MAX_LEN); in perf_pmu__parse_unit()
191 if (alias->unit[sret - 1] == '\n') in perf_pmu__parse_unit()
192 alias->unit[sret - 1] = '\0'; in perf_pmu__parse_unit()
194 alias->unit[sret] = '\0'; in perf_pmu__parse_unit()
199 alias->unit[0] = '\0'; in perf_pmu__parse_unit()
204 perf_pmu__parse_per_pkg(struct perf_pmu_alias *alias, char *dir, char *name) in perf_pmu__parse_per_pkg() argument
217 alias->per_pkg = true; in perf_pmu__parse_per_pkg()
221 static int perf_pmu__parse_snapshot(struct perf_pmu_alias *alias, in perf_pmu__parse_snapshot() argument
233 alias->snapshot = true; in perf_pmu__parse_snapshot()
246 pr_debug("alias %s differs in field '%s'\n", in perf_pmu_assign_str()
274 /* Delete an alias entry. */
288 /* Merge an alias, search in alias list. If this name is already
314 struct perf_pmu_alias *alias; in __perf_pmu__new_alias() local
319 alias = malloc(sizeof(*alias)); in __perf_pmu__new_alias()
320 if (!alias) in __perf_pmu__new_alias()
323 INIT_LIST_HEAD(&alias->terms); in __perf_pmu__new_alias()
324 alias->scale = 1.0; in __perf_pmu__new_alias()
325 alias->unit[0] = '\0'; in __perf_pmu__new_alias()
326 alias->per_pkg = false; in __perf_pmu__new_alias()
327 alias->snapshot = false; in __perf_pmu__new_alias()
329 ret = parse_events_terms(&alias->terms, val); in __perf_pmu__new_alias()
331 pr_err("Cannot parse alias %s: %d\n", val, ret); in __perf_pmu__new_alias()
332 free(alias); in __perf_pmu__new_alias()
341 * Rebuild string to make alias->str member comparable. in __perf_pmu__new_alias()
345 list_for_each_entry(term, &alias->terms, list) { in __perf_pmu__new_alias()
357 alias->name = strdup(name); in __perf_pmu__new_alias()
362 perf_pmu__parse_unit(alias, dir, name); in __perf_pmu__new_alias()
363 perf_pmu__parse_scale(alias, dir, name); in __perf_pmu__new_alias()
364 perf_pmu__parse_per_pkg(alias, dir, name); in __perf_pmu__new_alias()
365 perf_pmu__parse_snapshot(alias, dir, name); in __perf_pmu__new_alias()
368 alias->metric_expr = metric_expr ? strdup(metric_expr) : NULL; in __perf_pmu__new_alias()
369 alias->metric_name = metric_name ? strdup(metric_name): NULL; in __perf_pmu__new_alias()
370 alias->desc = desc ? strdup(desc) : NULL; in __perf_pmu__new_alias()
371 alias->long_desc = long_desc ? strdup(long_desc) : in __perf_pmu__new_alias()
373 alias->topic = topic ? strdup(topic) : NULL; in __perf_pmu__new_alias()
375 if (perf_pmu__convert_scale(unit, &unit, &alias->scale) < 0) in __perf_pmu__new_alias()
377 snprintf(alias->unit, sizeof(alias->unit), "%s", unit); in __perf_pmu__new_alias()
379 alias->per_pkg = perpkg && sscanf(perpkg, "%d", &num) == 1 && num == 1; in __perf_pmu__new_alias()
380 alias->str = strdup(newval); in __perf_pmu__new_alias()
382 if (!perf_pmu_merge_alias(alias, list)) in __perf_pmu__new_alias()
383 list_add_tail(&alias->list, list); in __perf_pmu__new_alias()
492 static int pmu_alias_terms(struct perf_pmu_alias *alias, in pmu_alias_terms() argument
499 list_for_each_entry(term, &alias->terms, list) { in pmu_alias_terms()
716 * uncore alias may be from different PMU with common prefix in pmu_uncore_alias_match()
725 * Match more complex aliases where the alias name is a comma-delimited in pmu_uncore_alias_match()
728 * Example: For alias "socket,pmuname" and PMU "socketX_pmunameY", we in pmu_uncore_alias_match()
1157 struct perf_pmu_alias *alias; in pmu_find_alias() local
1177 list_for_each_entry(alias, &pmu->aliases, list) { in pmu_find_alias()
1178 if (!strcasecmp(alias->name, name)) in pmu_find_alias()
1179 return alias; in pmu_find_alias()
1185 static int check_info_data(struct perf_pmu_alias *alias, in check_info_data() argument
1193 if ((info->unit && alias->unit[0]) || in check_info_data()
1194 (info->scale && alias->scale) || in check_info_data()
1195 (info->snapshot && alias->snapshot)) in check_info_data()
1198 if (alias->unit[0]) in check_info_data()
1199 info->unit = alias->unit; in check_info_data()
1201 if (alias->scale) in check_info_data()
1202 info->scale = alias->scale; in check_info_data()
1204 if (alias->snapshot) in check_info_data()
1205 info->snapshot = alias->snapshot; in check_info_data()
1211 * Find alias in the terms list and replace it with the terms
1212 * defined for the alias
1218 struct perf_pmu_alias *alias; in perf_pmu__check_alias() local
1234 alias = pmu_find_alias(pmu, term); in perf_pmu__check_alias()
1235 if (!alias) in perf_pmu__check_alias()
1237 ret = pmu_alias_terms(alias, &term->list); in perf_pmu__check_alias()
1241 ret = check_info_data(alias, info); in perf_pmu__check_alias()
1245 if (alias->per_pkg) in perf_pmu__check_alias()
1247 info->metric_expr = alias->metric_expr; in perf_pmu__check_alias()
1248 info->metric_name = alias->metric_name; in perf_pmu__check_alias()
1305 struct perf_pmu_alias *alias) in format_alias() argument
1308 int used = snprintf(buf, len, "%s/%s", pmu->name, alias->name); in format_alias()
1310 list_for_each_entry(term, &alias->terms, list) { in format_alias()
1331 struct perf_pmu_alias *alias) in format_alias_or() argument
1333 snprintf(buf, len, "%s OR %s/%s/", alias->name, pmu->name, alias->name); in format_alias_or()
1389 struct perf_pmu_alias *alias; in print_pmu_events() local
1401 list_for_each_entry(alias, &pmu->aliases, list) in print_pmu_events()
1412 list_for_each_entry(alias, &pmu->aliases, list) { in print_pmu_events()
1413 char *name = alias->desc ? alias->name : in print_pmu_events()
1414 format_alias(buf, sizeof(buf), pmu, alias); in print_pmu_events()
1419 (!is_cpu && strglobmatch_nocase(alias->name, in print_pmu_events()
1421 (alias->topic && in print_pmu_events()
1422 strglobmatch_nocase(alias->topic, event_glob)))) in print_pmu_events()
1425 if (is_cpu && !name_only && !alias->desc) in print_pmu_events()
1426 name = format_alias_or(buf, sizeof(buf), pmu, alias); in print_pmu_events()
1429 if (is_cpu && !name_only && !alias->desc) in print_pmu_events()
1432 pmu, alias); in print_pmu_events()
1437 aliases[j].desc = long_desc ? alias->long_desc : in print_pmu_events()
1438 alias->desc; in print_pmu_events()
1439 aliases[j].topic = alias->topic; in print_pmu_events()
1440 aliases[j].str = alias->str; in print_pmu_events()
1442 aliases[j].metric_expr = alias->metric_expr; in print_pmu_events()
1443 aliases[j].metric_name = alias->metric_name; in print_pmu_events()
1507 struct perf_pmu_alias *alias; in pmu_have_event() local
1513 list_for_each_entry(alias, &pmu->aliases, list) in pmu_have_event()
1514 if (!strcmp(alias->name, name)) in pmu_have_event()