示例#1
0
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;
}
示例#2
0
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;
}