Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 95476b64 authored by Frederic Weisbecker's avatar Frederic Weisbecker Committed by Ingo Molnar
Browse files

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: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarFrederic 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: default avatarIngo Molnar <mingo@elte.hu>
parent df8290bf
Loading
Loading
Loading
Loading
+30 −30
Original line number Original line Diff line number Diff line
@@ -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);