提交 c70975bc 编写于 作者: P Peter Zijlstra 提交者: Ingo Molnar

perf_counter tools: Fix up the ABI shakeup

Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <new-submission>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: John Kacur <jkacur@redhat.com>
Cc: Stephane Eranian <eranian@googlemail.com>
LKML-Reference: <new-submission>
Signed-off-by: NIngo Molnar <mingo@elte.hu>
上级 0d48696f
...@@ -322,7 +322,7 @@ static void synthesize_events(void) ...@@ -322,7 +322,7 @@ static void synthesize_events(void)
static void open_counters(int cpu, pid_t pid) static void open_counters(int cpu, pid_t pid)
{ {
struct perf_counter_hw_event hw_event; struct perf_counter_attr attr;
int counter, group_fd; int counter, group_fd;
int track = 1; int track = 1;
...@@ -334,18 +334,18 @@ static void open_counters(int cpu, pid_t pid) ...@@ -334,18 +334,18 @@ static void open_counters(int cpu, pid_t pid)
group_fd = -1; group_fd = -1;
for (counter = 0; counter < nr_counters; counter++) { for (counter = 0; counter < nr_counters; counter++) {
memset(&hw_event, 0, sizeof(hw_event)); memset(&attr, 0, sizeof(attr));
hw_event.config = event_id[counter]; attr.config = event_id[counter];
hw_event.irq_period = event_count[counter]; attr.sample_period = event_count[counter];
hw_event.record_type = PERF_RECORD_IP | PERF_RECORD_TID; attr.sample_type = PERF_SAMPLE_IP | PERF_SAMPLE_TID;
hw_event.mmap = track; attr.mmap = track;
hw_event.comm = track; attr.comm = track;
hw_event.inherit = (cpu < 0) && inherit; attr.inherit = (cpu < 0) && inherit;
track = 0; // only the first counter needs these track = 0; // only the first counter needs these
fd[nr_cpu][counter] = fd[nr_cpu][counter] =
sys_perf_counter_open(&hw_event, pid, cpu, group_fd, 0); sys_perf_counter_open(&attr, pid, cpu, group_fd, 0);
if (fd[nr_cpu][counter] < 0) { if (fd[nr_cpu][counter] < 0) {
int err = errno; int err = errno;
......
...@@ -79,22 +79,22 @@ static __u64 walltime_nsecs; ...@@ -79,22 +79,22 @@ static __u64 walltime_nsecs;
static void create_perfstat_counter(int counter) static void create_perfstat_counter(int counter)
{ {
struct perf_counter_hw_event hw_event; struct perf_counter_attr attr;
memset(&hw_event, 0, sizeof(hw_event)); memset(&attr, 0, sizeof(attr));
hw_event.config = event_id[counter]; attr.config = event_id[counter];
hw_event.record_type = 0; attr.sample_type = 0;
hw_event.exclude_kernel = event_mask[counter] & EVENT_MASK_KERNEL; attr.exclude_kernel = event_mask[counter] & EVENT_MASK_KERNEL;
hw_event.exclude_user = event_mask[counter] & EVENT_MASK_USER; attr.exclude_user = event_mask[counter] & EVENT_MASK_USER;
if (scale) if (scale)
hw_event.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED | attr.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED |
PERF_FORMAT_TOTAL_TIME_RUNNING; PERF_FORMAT_TOTAL_TIME_RUNNING;
if (system_wide) { if (system_wide) {
int cpu; int cpu;
for (cpu = 0; cpu < nr_cpus; cpu ++) { for (cpu = 0; cpu < nr_cpus; cpu ++) {
fd[cpu][counter] = sys_perf_counter_open(&hw_event, -1, cpu, -1, 0); fd[cpu][counter] = sys_perf_counter_open(&attr, -1, cpu, -1, 0);
if (fd[cpu][counter] < 0) { if (fd[cpu][counter] < 0) {
printf("perfstat error: syscall returned with %d (%s)\n", printf("perfstat error: syscall returned with %d (%s)\n",
fd[cpu][counter], strerror(errno)); fd[cpu][counter], strerror(errno));
...@@ -102,10 +102,10 @@ static void create_perfstat_counter(int counter) ...@@ -102,10 +102,10 @@ static void create_perfstat_counter(int counter)
} }
} }
} else { } else {
hw_event.inherit = inherit; attr.inherit = inherit;
hw_event.disabled = 1; attr.disabled = 1;
fd[0][counter] = sys_perf_counter_open(&hw_event, 0, -1, -1, 0); fd[0][counter] = sys_perf_counter_open(&attr, 0, -1, -1, 0);
if (fd[0][counter] < 0) { if (fd[0][counter] < 0) {
printf("perfstat error: syscall returned with %d (%s)\n", printf("perfstat error: syscall returned with %d (%s)\n",
fd[0][counter], strerror(errno)); fd[0][counter], strerror(errno));
......
...@@ -537,7 +537,7 @@ static void mmap_read(struct mmap_data *md) ...@@ -537,7 +537,7 @@ static void mmap_read(struct mmap_data *md)
old += size; old += size;
if (event->header.misc & PERF_EVENT_MISC_OVERFLOW) { if (event->header.misc & PERF_EVENT_MISC_OVERFLOW) {
if (event->header.type & PERF_RECORD_IP) if (event->header.type & PERF_SAMPLE_IP)
process_event(event->ip.ip, md->counter); process_event(event->ip.ip, md->counter);
} else { } else {
switch (event->header.type) { switch (event->header.type) {
...@@ -563,7 +563,7 @@ static struct mmap_data mmap_array[MAX_NR_CPUS][MAX_COUNTERS]; ...@@ -563,7 +563,7 @@ static struct mmap_data mmap_array[MAX_NR_CPUS][MAX_COUNTERS];
static int __cmd_top(void) static int __cmd_top(void)
{ {
struct perf_counter_hw_event hw_event; struct perf_counter_attr attr;
pthread_t thread; pthread_t thread;
int i, counter, group_fd, nr_poll = 0; int i, counter, group_fd, nr_poll = 0;
unsigned int cpu; unsigned int cpu;
...@@ -577,15 +577,15 @@ static int __cmd_top(void) ...@@ -577,15 +577,15 @@ static int __cmd_top(void)
if (target_pid == -1 && profile_cpu == -1) if (target_pid == -1 && profile_cpu == -1)
cpu = i; cpu = i;
memset(&hw_event, 0, sizeof(hw_event)); memset(&attr, 0, sizeof(attr));
hw_event.config = event_id[counter]; attr.config = event_id[counter];
hw_event.irq_period = event_count[counter]; attr.sample_period = event_count[counter];
hw_event.record_type = PERF_RECORD_IP | PERF_RECORD_TID; attr.sample_type = PERF_SAMPLE_IP | PERF_SAMPLE_TID;
hw_event.mmap = use_mmap; attr.mmap = use_mmap;
hw_event.munmap = use_munmap; attr.munmap = use_munmap;
hw_event.freq = freq; attr.freq = freq;
fd[i][counter] = sys_perf_counter_open(&hw_event, target_pid, cpu, group_fd, 0); fd[i][counter] = sys_perf_counter_open(&attr, target_pid, cpu, group_fd, 0);
if (fd[i][counter] < 0) { if (fd[i][counter] < 0) {
int err = errno; int err = errno;
printf("kerneltop error: syscall returned with %d (%s)\n", printf("kerneltop error: syscall returned with %d (%s)\n",
......
...@@ -53,11 +53,11 @@ static inline unsigned long long rdclock(void) ...@@ -53,11 +53,11 @@ static inline unsigned long long rdclock(void)
_min1 < _min2 ? _min1 : _min2; }) _min1 < _min2 ? _min1 : _min2; })
static inline int static inline int
sys_perf_counter_open(struct perf_counter_hw_event *hw_event_uptr, sys_perf_counter_open(struct perf_counter_attr *attr_uptr,
pid_t pid, int cpu, int group_fd, pid_t pid, int cpu, int group_fd,
unsigned long flags) unsigned long flags)
{ {
return syscall(__NR_perf_counter_open, hw_event_uptr, pid, cpu, return syscall(__NR_perf_counter_open, attr_uptr, pid, cpu,
group_fd, flags); group_fd, flags);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册