pmu.c (fc06e2a5aad9fcf7efaabd7550ac31f648d2f2bc) | pmu.c (c8d6828a6510c9363180ebf662b51d032e0eb85a) |
---|---|
1#include <linux/list.h> 2#include <linux/compiler.h> 3#include <sys/types.h> 4#include <unistd.h> 5#include <stdio.h> 6#include <stdbool.h> 7#include <stdarg.h> 8#include <dirent.h> --- 209 unchanged lines hidden (view full) --- 218 return -1; 219 220 alias->snapshot = true; 221 close(fd); 222 return 0; 223} 224 225static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name, | 1#include <linux/list.h> 2#include <linux/compiler.h> 3#include <sys/types.h> 4#include <unistd.h> 5#include <stdio.h> 6#include <stdbool.h> 7#include <stdarg.h> 8#include <dirent.h> --- 209 unchanged lines hidden (view full) --- 218 return -1; 219 220 alias->snapshot = true; 221 close(fd); 222 return 0; 223} 224 225static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name, |
226 char *desc, char *val) | 226 char *desc, char *val, char *long_desc) |
227{ 228 struct perf_pmu_alias *alias; 229 int ret; 230 231 alias = malloc(sizeof(*alias)); 232 if (!alias) 233 return -ENOMEM; 234 --- 17 unchanged lines hidden (view full) --- 252 */ 253 perf_pmu__parse_unit(alias, dir, name); 254 perf_pmu__parse_scale(alias, dir, name); 255 perf_pmu__parse_per_pkg(alias, dir, name); 256 perf_pmu__parse_snapshot(alias, dir, name); 257 } 258 259 alias->desc = desc ? strdup(desc) : NULL; | 227{ 228 struct perf_pmu_alias *alias; 229 int ret; 230 231 alias = malloc(sizeof(*alias)); 232 if (!alias) 233 return -ENOMEM; 234 --- 17 unchanged lines hidden (view full) --- 252 */ 253 perf_pmu__parse_unit(alias, dir, name); 254 perf_pmu__parse_scale(alias, dir, name); 255 perf_pmu__parse_per_pkg(alias, dir, name); 256 perf_pmu__parse_snapshot(alias, dir, name); 257 } 258 259 alias->desc = desc ? strdup(desc) : NULL; |
260 alias->long_desc = long_desc ? strdup(long_desc) : 261 desc ? strdup(desc) : NULL; |
|
260 261 list_add_tail(&alias->list, list); 262 263 return 0; 264} 265 266static int perf_pmu__new_alias(struct list_head *list, char *dir, char *name, FILE *file) 267{ 268 char buf[256]; 269 int ret; 270 271 ret = fread(buf, 1, sizeof(buf), file); 272 if (ret == 0) 273 return -EINVAL; 274 275 buf[ret] = 0; 276 | 262 263 list_add_tail(&alias->list, list); 264 265 return 0; 266} 267 268static int perf_pmu__new_alias(struct list_head *list, char *dir, char *name, FILE *file) 269{ 270 char buf[256]; 271 int ret; 272 273 ret = fread(buf, 1, sizeof(buf), file); 274 if (ret == 0) 275 return -EINVAL; 276 277 buf[ret] = 0; 278 |
277 return __perf_pmu__new_alias(list, dir, name, NULL, buf); | 279 return __perf_pmu__new_alias(list, dir, name, NULL, buf, NULL); |
278} 279 280static inline bool pmu_alias_info_file(char *name) 281{ 282 size_t len; 283 284 len = strlen(name); 285 if (len > 5 && !strcmp(name + len - 5, ".unit")) --- 241 unchanged lines hidden (view full) --- 527 i = 0; 528 while (1) { 529 pe = &map->table[i++]; 530 if (!pe->name) 531 break; 532 533 /* need type casts to override 'const' */ 534 __perf_pmu__new_alias(head, NULL, (char *)pe->name, | 280} 281 282static inline bool pmu_alias_info_file(char *name) 283{ 284 size_t len; 285 286 len = strlen(name); 287 if (len > 5 && !strcmp(name + len - 5, ".unit")) --- 241 unchanged lines hidden (view full) --- 529 i = 0; 530 while (1) { 531 pe = &map->table[i++]; 532 if (!pe->name) 533 break; 534 535 /* need type casts to override 'const' */ 536 __perf_pmu__new_alias(head, NULL, (char *)pe->name, |
535 (char *)pe->desc, (char *)pe->event); | 537 (char *)pe->desc, (char *)pe->event, 538 (char *)pe->long_desc); |
536 } 537 538out: 539 free(cpuid); 540} 541 542struct perf_event_attr * __weak 543perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused) --- 541 unchanged lines hidden (view full) --- 1085 break; 1086 s += wlen; 1087 column += n; 1088 while (isspace(*s)) 1089 s++; 1090 } 1091} 1092 | 539 } 540 541out: 542 free(cpuid); 543} 544 545struct perf_event_attr * __weak 546perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused) --- 541 unchanged lines hidden (view full) --- 1088 break; 1089 s += wlen; 1090 column += n; 1091 while (isspace(*s)) 1092 s++; 1093 } 1094} 1095 |
1093void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag) | 1096void print_pmu_events(const char *event_glob, bool name_only, bool quiet_flag, 1097 bool long_desc) |
1094{ 1095 struct perf_pmu *pmu; 1096 struct perf_pmu_alias *alias; 1097 char buf[1024]; 1098 int printed = 0; 1099 int len, j; 1100 struct pair *aliases; 1101 int numdesc = 0; --- 31 unchanged lines hidden (view full) --- 1133 if (is_cpu && !name_only && !alias->desc) 1134 aliases[j].name = format_alias_or(buf, 1135 sizeof(buf), 1136 pmu, alias); 1137 aliases[j].name = strdup(aliases[j].name); 1138 if (!aliases[j].name) 1139 goto out_enomem; 1140 | 1098{ 1099 struct perf_pmu *pmu; 1100 struct perf_pmu_alias *alias; 1101 char buf[1024]; 1102 int printed = 0; 1103 int len, j; 1104 struct pair *aliases; 1105 int numdesc = 0; --- 31 unchanged lines hidden (view full) --- 1137 if (is_cpu && !name_only && !alias->desc) 1138 aliases[j].name = format_alias_or(buf, 1139 sizeof(buf), 1140 pmu, alias); 1141 aliases[j].name = strdup(aliases[j].name); 1142 if (!aliases[j].name) 1143 goto out_enomem; 1144 |
1141 aliases[j].desc = alias->desc; | 1145 aliases[j].desc = long_desc ? alias->long_desc : 1146 alias->desc; |
1142 j++; 1143 } 1144 if (pmu->selectable && 1145 (event_glob == NULL || strglobmatch(pmu->name, event_glob))) { 1146 char *s; 1147 if (asprintf(&s, "%s//", pmu->name) < 0) 1148 goto out_enomem; 1149 aliases[j].name = s; --- 86 unchanged lines hidden --- | 1147 j++; 1148 } 1149 if (pmu->selectable && 1150 (event_glob == NULL || strglobmatch(pmu->name, event_glob))) { 1151 char *s; 1152 if (asprintf(&s, "%s//", pmu->name) < 0) 1153 goto out_enomem; 1154 aliases[j].name = s; --- 86 unchanged lines hidden --- |