perf: Fix hlist related build error
hlist helpers need to be available for all software events, not only trace events. Pull them out outside the ifdef CONFIG_EVENT_TRACING section. Fixes: kernel/perf_event.c:4573: error: implicit declaration of function 'swevent_hlist_put' kernel/perf_event.c:4614: error: implicit declaration of function 'swevent_hlist_get' kernel/perf_event.c:5534: error: implicit declaration of function 'swevent_hlist_release Reported-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> LKML-Reference: <1271281338-23491-1-git-send-regression-fweisbec@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
df8290bf7e
commit
95476b64ab
@ -4313,36 +4313,6 @@ static const struct pmu perf_ops_task_clock = {
|
|||||||
.read = task_clock_perf_event_read,
|
.read = task_clock_perf_event_read,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_EVENT_TRACING
|
|
||||||
|
|
||||||
void perf_tp_event(int event_id, u64 addr, u64 count, void *record,
|
|
||||||
int entry_size, struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
struct perf_sample_data data;
|
|
||||||
struct perf_raw_record raw = {
|
|
||||||
.size = entry_size,
|
|
||||||
.data = record,
|
|
||||||
};
|
|
||||||
|
|
||||||
perf_sample_data_init(&data, addr);
|
|
||||||
data.raw = &raw;
|
|
||||||
|
|
||||||
/* Trace events already protected against recursion */
|
|
||||||
do_perf_sw_event(PERF_TYPE_TRACEPOINT, event_id, count, 1,
|
|
||||||
&data, regs);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(perf_tp_event);
|
|
||||||
|
|
||||||
static int perf_tp_event_match(struct perf_event *event,
|
|
||||||
struct perf_sample_data *data)
|
|
||||||
{
|
|
||||||
void *record = data->raw->data;
|
|
||||||
|
|
||||||
if (likely(!event->filter) || filter_match_preds(event->filter, record))
|
|
||||||
return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void swevent_hlist_release_rcu(struct rcu_head *rcu_head)
|
static void swevent_hlist_release_rcu(struct rcu_head *rcu_head)
|
||||||
{
|
{
|
||||||
struct swevent_hlist *hlist;
|
struct swevent_hlist *hlist;
|
||||||
@ -4442,6 +4412,36 @@ static int swevent_hlist_get(struct perf_event *event)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_EVENT_TRACING
|
||||||
|
|
||||||
|
void perf_tp_event(int event_id, u64 addr, u64 count, void *record,
|
||||||
|
int entry_size, struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
struct perf_sample_data data;
|
||||||
|
struct perf_raw_record raw = {
|
||||||
|
.size = entry_size,
|
||||||
|
.data = record,
|
||||||
|
};
|
||||||
|
|
||||||
|
perf_sample_data_init(&data, addr);
|
||||||
|
data.raw = &raw;
|
||||||
|
|
||||||
|
/* Trace events already protected against recursion */
|
||||||
|
do_perf_sw_event(PERF_TYPE_TRACEPOINT, event_id, count, 1,
|
||||||
|
&data, regs);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(perf_tp_event);
|
||||||
|
|
||||||
|
static int perf_tp_event_match(struct perf_event *event,
|
||||||
|
struct perf_sample_data *data)
|
||||||
|
{
|
||||||
|
void *record = data->raw->data;
|
||||||
|
|
||||||
|
if (likely(!event->filter) || filter_match_preds(event->filter, record))
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void tp_perf_event_destroy(struct perf_event *event)
|
static void tp_perf_event_destroy(struct perf_event *event)
|
||||||
{
|
{
|
||||||
perf_trace_disable(event->attr.config);
|
perf_trace_disable(event->attr.config);
|
||||||
|
Loading…
Reference in New Issue
Block a user