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>
This commit is contained in:
committed by
Ingo Molnar
parent
e3560336be
commit
3a6593050f
@ -3703,17 +3703,17 @@ static const struct pmu perf_ops_task_clock = {
|
||||
};
|
||||
|
||||
#ifdef CONFIG_EVENT_PROFILE
|
||||
void perf_tpcounter_event(int event_id)
|
||||
void perf_tpcounter_event(int event_id, u64 addr, u64 count)
|
||||
{
|
||||
struct perf_sample_data data = {
|
||||
.regs = get_irq_regs(),
|
||||
.addr = 0,
|
||||
.addr = addr,
|
||||
};
|
||||
|
||||
if (!data.regs)
|
||||
data.regs = task_pt_regs(current);
|
||||
|
||||
do_perf_swcounter_event(PERF_TYPE_TRACEPOINT, event_id, 1, 1, &data);
|
||||
do_perf_swcounter_event(PERF_TYPE_TRACEPOINT, event_id, count, 1, &data);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(perf_tpcounter_event);
|
||||
|
||||
|
Reference in New Issue
Block a user