int resolve_event(char *name, struct perf_event_attr *attr) { struct event *e; if (!eventlist) read_events(NULL); for (e = eventlist; e; e = e->next) { if (!strcasecmp(e->name, name)) { return jevent_name_to_attr(e->event, attr); } } return -1; }
int main(int ac, char **av) { struct perf_event_attr attr = { 0 }; int ret = 1; if (!av[1]) { printf("Usage: ... perf-event-to-parse\n"); exit(1); } while (*++av) { if (jevent_name_to_attr(*av, &attr) < 0) printf("cannot parse %s\n", *av); printf("config %llx config1 %llx\n", attr.config, attr.config1); int fd; if ((fd = syscall(__NR_perf_event_open, &attr, 0, -1, -1, 0)) < 0) perror("perf_event_open"); else ret = 0; close(fd); } return ret; }