diff options
author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2009-07-21 11:34:57 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-08-09 06:47:25 -0400 |
commit | 3a6593050fbd8bbcaed3a44d01c31d907315c86c (patch) | |
tree | 5bbaa0015ed0b0986146cc6fa9390f559bcb66b1 /kernel | |
parent | e3560336be655c6791316482fe288b119f34c427 (diff) |
perf_counter, ftrace: Fix perf_counter integration
Adds possible second part to the assign argument of TP_EVENT().
TP_perf_assign(
__perf_count(foo);
__perf_addr(bar);
)
Which, when specified make the swcounter increment with @foo instead
of the usual 1, and report @bar for PERF_SAMPLE_ADDR (data address
associated with the event) when this triggers a counter overflow.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jason Baron <jbaron@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/perf_counter.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/perf_counter.c b/kernel/perf_counter.c index 673c1aaf7332..52eb4b68d34f 100644 --- a/kernel/perf_counter.c +++ b/kernel/perf_counter.c | |||
@@ -3703,17 +3703,17 @@ static const struct pmu perf_ops_task_clock = { | |||
3703 | }; | 3703 | }; |
3704 | 3704 | ||
3705 | #ifdef CONFIG_EVENT_PROFILE | 3705 | #ifdef CONFIG_EVENT_PROFILE |
3706 | void perf_tpcounter_event(int event_id) | 3706 | void perf_tpcounter_event(int event_id, u64 addr, u64 count) |
3707 | { | 3707 | { |
3708 | struct perf_sample_data data = { | 3708 | struct perf_sample_data data = { |
3709 | .regs = get_irq_regs(), | 3709 | .regs = get_irq_regs(), |
3710 | .addr = 0, | 3710 | .addr = addr, |
3711 | }; | 3711 | }; |
3712 | 3712 | ||
3713 | if (!data.regs) | 3713 | if (!data.regs) |
3714 | data.regs = task_pt_regs(current); | 3714 | data.regs = task_pt_regs(current); |
3715 | 3715 | ||
3716 | do_perf_swcounter_event(PERF_TYPE_TRACEPOINT, event_id, 1, 1, &data); | 3716 | do_perf_swcounter_event(PERF_TYPE_TRACEPOINT, event_id, count, 1, &data); |
3717 | } | 3717 | } |
3718 | EXPORT_SYMBOL_GPL(perf_tpcounter_event); | 3718 | EXPORT_SYMBOL_GPL(perf_tpcounter_event); |
3719 | 3719 | ||