Lines Matching full:alias
140 static int perf_pmu__parse_scale(struct perf_pmu_alias *alias, char *dir, char *name) in perf_pmu__parse_scale() argument
166 ret = convert_scale(scale, NULL, &alias->scale); in perf_pmu__parse_scale()
172 static int perf_pmu__parse_unit(struct perf_pmu_alias *alias, char *dir, char *name) in perf_pmu__parse_unit() argument
184 sret = read(fd, alias->unit, UNIT_MAX_LEN); in perf_pmu__parse_unit()
190 if (alias->unit[sret - 1] == '\n') in perf_pmu__parse_unit()
191 alias->unit[sret - 1] = '\0'; in perf_pmu__parse_unit()
193 alias->unit[sret] = '\0'; in perf_pmu__parse_unit()
198 alias->unit[0] = '\0'; in perf_pmu__parse_unit()
203 perf_pmu__parse_per_pkg(struct perf_pmu_alias *alias, char *dir, char *name) in perf_pmu__parse_per_pkg() argument
216 alias->per_pkg = true; in perf_pmu__parse_per_pkg()
220 static int perf_pmu__parse_snapshot(struct perf_pmu_alias *alias, in perf_pmu__parse_snapshot() argument
232 alias->snapshot = true; in perf_pmu__parse_snapshot()
245 pr_debug("alias %s differs in field '%s'\n", in perf_pmu_assign_str()
273 /* Delete an alias entry. */
287 /* Merge an alias, search in alias list. If this name is already
313 struct perf_pmu_alias *alias; in __perf_pmu__new_alias() local
318 alias = malloc(sizeof(*alias)); in __perf_pmu__new_alias()
319 if (!alias) in __perf_pmu__new_alias()
322 INIT_LIST_HEAD(&alias->terms); in __perf_pmu__new_alias()
323 alias->scale = 1.0; in __perf_pmu__new_alias()
324 alias->unit[0] = '\0'; in __perf_pmu__new_alias()
325 alias->per_pkg = false; in __perf_pmu__new_alias()
326 alias->snapshot = false; in __perf_pmu__new_alias()
328 ret = parse_events_terms(&alias->terms, val); in __perf_pmu__new_alias()
330 pr_err("Cannot parse alias %s: %d\n", val, ret); in __perf_pmu__new_alias()
331 free(alias); in __perf_pmu__new_alias()
340 * Rebuild string to make alias->str member comparable. in __perf_pmu__new_alias()
344 list_for_each_entry(term, &alias->terms, list) { in __perf_pmu__new_alias()
356 alias->name = strdup(name); in __perf_pmu__new_alias()
361 perf_pmu__parse_unit(alias, dir, name); in __perf_pmu__new_alias()
362 perf_pmu__parse_scale(alias, dir, name); in __perf_pmu__new_alias()
363 perf_pmu__parse_per_pkg(alias, dir, name); in __perf_pmu__new_alias()
364 perf_pmu__parse_snapshot(alias, dir, name); in __perf_pmu__new_alias()
367 alias->metric_expr = metric_expr ? strdup(metric_expr) : NULL; in __perf_pmu__new_alias()
368 alias->metric_name = metric_name ? strdup(metric_name): NULL; in __perf_pmu__new_alias()
369 alias->desc = desc ? strdup(desc) : NULL; in __perf_pmu__new_alias()
370 alias->long_desc = long_desc ? strdup(long_desc) : in __perf_pmu__new_alias()
372 alias->topic = topic ? strdup(topic) : NULL; in __perf_pmu__new_alias()
374 if (convert_scale(unit, &unit, &alias->scale) < 0) in __perf_pmu__new_alias()
376 snprintf(alias->unit, sizeof(alias->unit), "%s", unit); in __perf_pmu__new_alias()
378 alias->per_pkg = perpkg && sscanf(perpkg, "%d", &num) == 1 && num == 1; in __perf_pmu__new_alias()
379 alias->str = strdup(newval); in __perf_pmu__new_alias()
381 if (!perf_pmu_merge_alias(alias, list)) in __perf_pmu__new_alias()
382 list_add_tail(&alias->list, list); in __perf_pmu__new_alias()
491 static int pmu_alias_terms(struct perf_pmu_alias *alias, in pmu_alias_terms() argument
498 list_for_each_entry(term, &alias->terms, list) { in pmu_alias_terms()
775 * uncore alias may be from different PMU in pmu_add_cpu_aliases()
1145 struct perf_pmu_alias *alias; in pmu_find_alias() local
1165 list_for_each_entry(alias, &pmu->aliases, list) { in pmu_find_alias()
1166 if (!strcasecmp(alias->name, name)) in pmu_find_alias()
1167 return alias; in pmu_find_alias()
1173 static int check_info_data(struct perf_pmu_alias *alias, in check_info_data() argument
1181 if ((info->unit && alias->unit[0]) || in check_info_data()
1182 (info->scale && alias->scale) || in check_info_data()
1183 (info->snapshot && alias->snapshot)) in check_info_data()
1186 if (alias->unit[0]) in check_info_data()
1187 info->unit = alias->unit; in check_info_data()
1189 if (alias->scale) in check_info_data()
1190 info->scale = alias->scale; in check_info_data()
1192 if (alias->snapshot) in check_info_data()
1193 info->snapshot = alias->snapshot; in check_info_data()
1199 * Find alias in the terms list and replace it with the terms
1200 * defined for the alias
1206 struct perf_pmu_alias *alias; in perf_pmu__check_alias() local
1222 alias = pmu_find_alias(pmu, term); in perf_pmu__check_alias()
1223 if (!alias) in perf_pmu__check_alias()
1225 ret = pmu_alias_terms(alias, &term->list); in perf_pmu__check_alias()
1229 ret = check_info_data(alias, info); in perf_pmu__check_alias()
1233 if (alias->per_pkg) in perf_pmu__check_alias()
1235 info->metric_expr = alias->metric_expr; in perf_pmu__check_alias()
1236 info->metric_name = alias->metric_name; in perf_pmu__check_alias()
1304 struct perf_pmu_alias *alias) in format_alias() argument
1307 int used = snprintf(buf, len, "%s/%s", pmu->name, alias->name); in format_alias()
1309 list_for_each_entry(term, &alias->terms, list) { in format_alias()
1330 struct perf_pmu_alias *alias) in format_alias_or() argument
1332 snprintf(buf, len, "%s OR %s/%s/", alias->name, pmu->name, alias->name); in format_alias_or()
1388 struct perf_pmu_alias *alias; in print_pmu_events() local
1400 list_for_each_entry(alias, &pmu->aliases, list) in print_pmu_events()
1411 list_for_each_entry(alias, &pmu->aliases, list) { in print_pmu_events()
1412 char *name = alias->desc ? alias->name : in print_pmu_events()
1413 format_alias(buf, sizeof(buf), pmu, alias); in print_pmu_events()
1418 (!is_cpu && strglobmatch_nocase(alias->name, in print_pmu_events()
1420 (alias->topic && in print_pmu_events()
1421 strglobmatch_nocase(alias->topic, event_glob)))) in print_pmu_events()
1424 if (is_cpu && !name_only && !alias->desc) in print_pmu_events()
1425 name = format_alias_or(buf, sizeof(buf), pmu, alias); in print_pmu_events()
1428 if (is_cpu && !name_only && !alias->desc) in print_pmu_events()
1431 pmu, alias); in print_pmu_events()
1436 aliases[j].desc = long_desc ? alias->long_desc : in print_pmu_events()
1437 alias->desc; in print_pmu_events()
1438 aliases[j].topic = alias->topic; in print_pmu_events()
1439 aliases[j].str = alias->str; in print_pmu_events()
1441 aliases[j].metric_expr = alias->metric_expr; in print_pmu_events()
1442 aliases[j].metric_name = alias->metric_name; in print_pmu_events()
1506 struct perf_pmu_alias *alias; in pmu_have_event() local
1512 list_for_each_entry(alias, &pmu->aliases, list) in pmu_have_event()
1513 if (!strcmp(alias->name, name)) in pmu_have_event()