From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755167AbbDTVny (ORCPT ); Mon, 20 Apr 2015 17:43:54 -0400 Received: from mail03v-smtp01.fnal.gov ([131.225.199.28]:44229 "EHLO ex-smtp.fnal.gov" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754572AbbDTVnm (ORCPT ); Mon, 20 Apr 2015 17:43:42 -0400 X-Greylist: delayed 329 seconds by postgrey-1.27 at vger.kernel.org; Mon, 20 Apr 2015 17:43:42 EDT Message-ID: <553571C3.1060505@fnal.gov> Date: Mon, 20 Apr 2015 16:38:11 -0500 From: Ron Rechenmacher Reply-To: User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: CC: Steven Rostedt Subject: [PATCH] tracing: Export key trace event symbols Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [131.225.86.197] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If symbols are not exported, modules can no longer register additional (module specified) tracepoints like they use to be able to (i.e linux-3.15.x). Somewhere on or about commit de7b2973903c6cc50b31ee5682a69b2219b9919d (Author: Mathieu Desnoyers Date: Tue Apr 8 17:26:21 2014 -0400 tracepoint: Use struct pointer instead of name hash for reg/unreg tracepoints) modules which attempted to register additional tracing functions would get "Unknown symbol" errors. For example: "... Unknown symbol __tracepoint_sched_switch (err 0)" Symbols can be exported using the kernel's EXPORT_TRACEPOINT_SYMBOL_GPL macro to allow modules to once again register their own tracing functions (for at least some key points in the kernel as provided by this patch). Signed-off-by: Ron Rechenmacher Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=96051 --- kernel/irq/handle.c | 6 ++++++ kernel/softirq.c | 6 ++++++ kernel/trace/trace_sched_switch.c | 5 +++++ kernel/trace/trace_syscalls.c | 6 ++++++ 4 files changed, 23 insertions(+), 0 deletions(-) diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c index 470d08c..a98d763 100644 --- a/kernel/irq/handle.c +++ b/kernel/irq/handle.c @@ -20,6 +20,12 @@ #include "internals.h" +/* + * Allow modules to register additional trace routines + */ +EXPORT_TRACEPOINT_SYMBOL_GPL(irq_handler_entry); +EXPORT_TRACEPOINT_SYMBOL_GPL(irq_handler_exit); + /** * handle_bad_irq - handle spurious and unhandled irqs * @irq: the interrupt number diff --git a/kernel/softirq.c b/kernel/softirq.c index fca82c3..af6fa2e 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -52,6 +52,12 @@ irq_cpustat_t irq_stat[NR_CPUS] ____cacheline_aligned; EXPORT_SYMBOL(irq_stat); #endif +/* + * Allow modules to register additional trace routines + */ +EXPORT_TRACEPOINT_SYMBOL_GPL(softirq_entry); +EXPORT_TRACEPOINT_SYMBOL_GPL(softirq_exit); + static struct softirq_action softirq_vec[NR_SOFTIRQS] __cacheline_aligned_in_smp; DEFINE_PER_CPU(struct task_struct *, ksoftirqd); diff --git a/kernel/trace/trace_sched_switch.c b/kernel/trace/trace_sched_switch.c index 7e62c0a..2ea1a6a 100644 --- a/kernel/trace/trace_sched_switch.c +++ b/kernel/trace/trace_sched_switch.c @@ -14,6 +14,11 @@ #include "trace.h" +/* + * Allow modules to register additional trace routines + */ +EXPORT_TRACEPOINT_SYMBOL_GPL(sched_switch); + static struct trace_array *ctx_trace; static int __read_mostly tracer_enabled; static int sched_ref; diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c index ee7b5a0..6c3bbd0 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c @@ -9,6 +9,12 @@ #include "trace_output.h" #include "trace.h" +/* + * Allow modules to register additional trace routines + */ +EXPORT_TRACEPOINT_SYMBOL_GPL(sys_enter); +EXPORT_TRACEPOINT_SYMBOL_GPL(sys_exit); + static DEFINE_MUTEX(syscall_trace_lock); static int sys_refcount_enter; static int sys_refcount_exit;