Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751666AbbEGOS4 (ORCPT ); Thu, 7 May 2015 10:18:56 -0400 Received: from mail-wi0-f170.google.com ([209.85.212.170]:37214 "EHLO mail-wi0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752055AbbEGOQE (ORCPT ); Thu, 7 May 2015 10:16:04 -0400 From: Robert Bragg To: intel-gfx@lists.freedesktop.org Cc: Daniel Vetter , Jani Nikula , David Airlie , Peter Zijlstra , Paul Mackerras , Ingo Molnar , Arnaldo Carvalho de Melo , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-api@vger.kernel.org Subject: [RFC PATCH 05/11] perf: allow drivers more control over event logging Date: Thu, 7 May 2015 15:15:48 +0100 Message-Id: <1431008154-6833-6-git-send-email-robert@sixbynine.org> X-Mailer: git-send-email 2.3.2 In-Reply-To: <1431008154-6833-1-git-send-email-robert@sixbynine.org> References: <1431008154-6833-1-git-send-email-robert@sixbynine.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3912 Lines: 111 This exports enough api to allow drivers to output their own PERF_RECORD_DEVICE events. Signed-off-by: Robert Bragg --- 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/