Prev: [RFC][PATCH v2 04/11] perf: core, use new api to lookup pmu and init event
Next: [PATCH 0/3] i7core_edac updates
From: Lin Ming on 18 May 2010 14:00 Just a temporary patch to show how to use the pmu sysfs interface... Signed-off-by: Lin Ming <ming.m.lin(a)intel.com> --- tools/perf/builtin-top.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index adc179d..eaa9405 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -1206,6 +1206,7 @@ static void start_counter(int i, int counter) struct perf_event_attr *attr; int cpu; int thread_index; + int sys_fd; cpu = profile_cpu; if (target_tid == -1 && profile_cpu == -1) @@ -1226,9 +1227,21 @@ static void start_counter(int i, int counter) for (thread_index = 0; thread_index < thread_num; thread_index++) { try_again: + /* + * This is just an ugly demo of how to use the sysfs interface. + * You can also parse the <event-name> and open sys file as, + * sys_fd = open("/sys/devices/system/cpu/events/<event-name>/event_source/id", O_RDONLY); + */ + sys_fd = open("/sys/devices/system/cpu/event_source/id", O_RDONLY); + if (sys_fd != -1) + attr->type |= (sys_fd << PERF_EVENT_ATTR_TYPE_BITS) | PERF_EVENT_FD; + fd[i][counter][thread_index] = sys_perf_event_open(attr, all_tids[thread_index], cpu, group_fd, 0); + if (sys_fd != -1) + close(sys_fd); + if (fd[i][counter][thread_index] < 0) { int err = errno; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |