This exports enough api to allow drivers to output their own PERF_RECORD_DEVICE events. Signed-off-by: Robert Bragg <robert@xxxxxxxxxxxxx> --- include/linux/perf_event.h | 7 +++++++ kernel/events/core.c | 2 ++ kernel/events/internal.h | 9 --------- kernel/events/ring_buffer.c | 3 +++ 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 69a0cb9..293f041 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -633,6 +633,10 @@ struct perf_sample_data { PERF_MEM_S(LOCK, NA) |\ PERF_MEM_S(TLB, NA)) +extern void perf_event_header__init_id(struct perf_event_header *header, + struct perf_sample_data *data, + struct perf_event *event); + static inline void perf_sample_data_init(struct perf_sample_data *data, u64 addr, u64 period) { @@ -654,6 +658,9 @@ extern void perf_prepare_sample(struct perf_event_header *header, struct perf_sample_data *data, struct perf_event *event, struct pt_regs *regs); +extern void perf_event__output_id_sample(struct perf_event *event, + struct perf_output_handle *handle, + struct perf_sample_data *sample); extern int perf_event_overflow(struct perf_event *event, struct perf_sample_data *data, diff --git a/kernel/events/core.c b/kernel/events/core.c index 340deaa..26b84fc 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -4793,6 +4793,7 @@ void perf_event_header__init_id(struct perf_event_header *header, if (event->attr.sample_id_all) __perf_event_header__init_id(header, data, event); } +EXPORT_SYMBOL_GPL(perf_event_header__init_id); static void __perf_event__output_id_sample(struct perf_output_handle *handle, struct perf_sample_data *data) @@ -4825,6 +4826,7 @@ void perf_event__output_id_sample(struct perf_event *event, if (event->attr.sample_id_all) __perf_event__output_id_sample(handle, sample); } +EXPORT_SYMBOL_GPL(perf_event__output_id_sample); static void perf_output_read_one(struct perf_output_handle *handle, struct perf_event *event, diff --git a/kernel/events/internal.h b/kernel/events/internal.h index 569b2187..3c86bb3 100644 --- a/kernel/events/internal.h +++ b/kernel/events/internal.h @@ -44,15 +44,6 @@ extern struct ring_buffer * rb_alloc(int nr_pages, long watermark, int cpu, int flags); extern void perf_event_wakeup(struct perf_event *event); -extern void -perf_event_header__init_id(struct perf_event_header *header, - struct perf_sample_data *data, - struct perf_event *event); -extern void -perf_event__output_id_sample(struct perf_event *event, - struct perf_output_handle *handle, - struct perf_sample_data *sample); - extern struct page * perf_mmap_to_page(struct ring_buffer *rb, unsigned long pgoff); diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c index eadb95c..fa100d4 100644 --- a/kernel/events/ring_buffer.c +++ b/kernel/events/ring_buffer.c @@ -202,12 +202,14 @@ out: return -ENOSPC; } +EXPORT_SYMBOL_GPL(perf_output_begin); unsigned int perf_output_copy(struct perf_output_handle *handle, const void *buf, unsigned int len) { return __output_copy(handle, buf, len); } +EXPORT_SYMBOL_GPL(perf_output_copy); unsigned int perf_output_skip(struct perf_output_handle *handle, unsigned int len) @@ -220,6 +222,7 @@ void perf_output_end(struct perf_output_handle *handle) perf_output_put_handle(handle); rcu_read_unlock(); } +EXPORT_SYMBOL_GPL(perf_output_end); static void ring_buffer_init(struct ring_buffer *rb, long watermark, int flags) -- 2.3.2 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel