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 ---