diff options
author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2009-03-19 15:26:18 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-04-06 03:30:17 -0400 |
commit | b8e83514b64577b48bfb794fe85fcde40a9343ca (patch) | |
tree | 3fd79b41c917f56fe5a5b1f779b892110e0ec909 /arch/x86/kernel/cpu | |
parent | e077df4f439681e43f0db8255b2d215b342ebdc6 (diff) |
perf_counter: revamp syscall input ABI
Impact: modify ABI
The hardware/software classification in hw_event->type became a little
strained due to the addition of tracepoint tracing.
Instead split up the field and provide a type field to explicitly specify
the counter type, while using the event_id field to specify which event to
use.
Raw counters still work as before, only the raw config now goes into
raw_event.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Orig-LKML-Reference: <20090319194233.836807573@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/cpu')
-rw-r--r-- | arch/x86/kernel/cpu/perf_counter.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/x86/kernel/cpu/perf_counter.c b/arch/x86/kernel/cpu/perf_counter.c index 6cba9d47b711..d844ae41d5a3 100644 --- a/arch/x86/kernel/cpu/perf_counter.c +++ b/arch/x86/kernel/cpu/perf_counter.c | |||
@@ -217,15 +217,15 @@ static int __hw_perf_counter_init(struct perf_counter *counter) | |||
217 | /* | 217 | /* |
218 | * Raw event type provide the config in the event structure | 218 | * Raw event type provide the config in the event structure |
219 | */ | 219 | */ |
220 | if (hw_event->raw) { | 220 | if (hw_event->raw_type) { |
221 | hwc->config |= pmc_ops->raw_event(hw_event->type); | 221 | hwc->config |= pmc_ops->raw_event(hw_event->raw_event_id); |
222 | } else { | 222 | } else { |
223 | if (hw_event->type >= pmc_ops->max_events) | 223 | if (hw_event->event_id >= pmc_ops->max_events) |
224 | return -EINVAL; | 224 | return -EINVAL; |
225 | /* | 225 | /* |
226 | * The generic map: | 226 | * The generic map: |
227 | */ | 227 | */ |
228 | hwc->config |= pmc_ops->event_map(hw_event->type); | 228 | hwc->config |= pmc_ops->event_map(hw_event->event_id); |
229 | } | 229 | } |
230 | counter->wakeup_pending = 0; | 230 | counter->wakeup_pending = 0; |
231 | 231 | ||
@@ -715,7 +715,7 @@ perf_handle_group(struct perf_counter *sibling, u64 *status, u64 *overflown) | |||
715 | list_for_each_entry(counter, &group_leader->sibling_list, list_entry) { | 715 | list_for_each_entry(counter, &group_leader->sibling_list, list_entry) { |
716 | 716 | ||
717 | x86_perf_counter_update(counter, &counter->hw, counter->hw.idx); | 717 | x86_perf_counter_update(counter, &counter->hw, counter->hw.idx); |
718 | perf_store_irq_data(sibling, counter->hw_event.type); | 718 | perf_store_irq_data(sibling, counter->hw_event.event_config); |
719 | perf_store_irq_data(sibling, atomic64_read(&counter->count)); | 719 | perf_store_irq_data(sibling, atomic64_read(&counter->count)); |
720 | } | 720 | } |
721 | } | 721 | } |