[PATCH 3/6] tracing/function-tracer: Move trace_function() in the function tracer file

From: Frederic Weisbecker
Date: Wed Jul 29 2009 - 13:14:20 EST


The trace_function() helper which inserts the function events into
the ring buffer is currently in trace.c
But this file is quite overloaded and the right place for this helper
is in the function tracer file.

Then move it in trace_functions.c

Signed-off-by: Frederic Weisbecker <fweisbec@xxxxxxxxx>
Cc: Steven Rostedt <rostedt@xxxxxxxxxxx>
---
kernel/trace/trace.c | 27 +--------------------------
kernel/trace/trace.h | 1 +
kernel/trace/trace_functions.c | 25 +++++++++++++++++++++++++
3 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index e30e6b1..769d5cf 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -89,7 +89,7 @@ static int dummy_set_flag(u32 old_flags, u32 bit, int set)
*/
static int tracing_disabled = 1;

-static DEFINE_PER_CPU(local_t, ftrace_cpu_disabled);
+DEFINE_PER_CPU(local_t, ftrace_cpu_disabled);

static inline void ftrace_disable_cpu(void)
{
@@ -921,31 +921,6 @@ void trace_current_buffer_discard_commit(struct ring_buffer_event *event)
}
EXPORT_SYMBOL_GPL(trace_current_buffer_discard_commit);

-void
-trace_function(struct trace_array *tr,
- unsigned long ip, unsigned long parent_ip, unsigned long flags,
- int pc)
-{
- struct ftrace_event_call *call = &event_function;
- struct ring_buffer_event *event;
- struct ftrace_entry *entry;
-
- /* If we are reading the ring buffer, don't trace */
- if (unlikely(local_read(&__get_cpu_var(ftrace_cpu_disabled))))
- return;
-
- event = trace_buffer_lock_reserve(tr, TRACE_FN, sizeof(*entry),
- flags, pc);
- if (!event)
- return;
- entry = ring_buffer_event_data(event);
- entry->ip = ip;
- entry->parent_ip = parent_ip;
-
- if (!filter_check_discard(call, entry, tr->buffer, event))
- ring_buffer_unlock_commit(tr->buffer, event);
-}
-
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
static int __trace_graph_entry(struct trace_array *tr,
struct ftrace_graph_ent *trace,
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 94305c7..186543a 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -519,6 +519,7 @@ extern int DYN_FTRACE_TEST_NAME(void);

extern int ring_buffer_expanded;
extern bool tracing_selftest_disabled;
+DECLARE_PER_CPU(local_t, ftrace_cpu_disabled);

#ifdef CONFIG_FTRACE_STARTUP_TEST
extern int trace_selftest_startup_function(struct tracer *trace,
diff --git a/kernel/trace/trace_functions.c b/kernel/trace/trace_functions.c
index 5b01b94..28d3295 100644
--- a/kernel/trace/trace_functions.c
+++ b/kernel/trace/trace_functions.c
@@ -47,6 +47,31 @@ static void function_trace_start(struct trace_array *tr)
tracing_reset_online_cpus(tr);
}

+void
+trace_function(struct trace_array *tr,
+ unsigned long ip, unsigned long parent_ip, unsigned long flags,
+ int pc)
+{
+ struct ftrace_event_call *call = &event_function;
+ struct ring_buffer_event *event;
+ struct ftrace_entry *entry;
+
+ /* If we are reading the ring buffer, don't trace */
+ if (unlikely(local_read(&__get_cpu_var(ftrace_cpu_disabled))))
+ return;
+
+ event = trace_buffer_lock_reserve(tr, TRACE_FN, sizeof(*entry),
+ flags, pc);
+ if (!event)
+ return;
+ entry = ring_buffer_event_data(event);
+ entry->ip = ip;
+ entry->parent_ip = parent_ip;
+
+ if (!filter_check_discard(call, entry, tr->buffer, event))
+ ring_buffer_unlock_commit(tr->buffer, event);
+}
+
static void
function_trace_call_preempt_only(unsigned long ip, unsigned long parent_ip)
{
--
1.6.2.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/