Skip to content

Commit

Permalink
tracing/core: Make the stack entry helpers global
Browse files Browse the repository at this point in the history
Make the stacktrace event insertion helpers globals.
This has two effects:

- Prepare for moving the sched events insertion helpers to
  the sched switch tracer file.
- Move some ifdef outside function definitions

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
  • Loading branch information
Frederic Weisbecker committed Aug 6, 2009
1 parent 5e5bf48 commit c0a0d0d
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 19 deletions.
24 changes: 8 additions & 16 deletions kernel/trace/trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -866,10 +866,6 @@ struct ring_buffer_event *trace_buffer_lock_reserve(struct trace_array *tr,

return event;
}
static void ftrace_trace_stack(struct trace_array *tr,
unsigned long flags, int skip, int pc);
static void ftrace_trace_userstack(struct trace_array *tr,
unsigned long flags, int pc);

static inline void __trace_buffer_unlock_commit(struct trace_array *tr,
struct ring_buffer_event *event,
Expand Down Expand Up @@ -1003,11 +999,11 @@ ftrace(struct trace_array *tr, struct trace_array_cpu *data,
trace_function(tr, ip, parent_ip, flags, pc);
}

#ifdef CONFIG_STACKTRACE
static void __ftrace_trace_stack(struct trace_array *tr,
unsigned long flags,
int skip, int pc)
{
#ifdef CONFIG_STACKTRACE
struct ftrace_event_call *call = &event_kernel_stack;
struct ring_buffer_event *event;
struct stack_entry *entry;
Expand All @@ -1028,30 +1024,25 @@ static void __ftrace_trace_stack(struct trace_array *tr,
save_stack_trace(&trace);
if (!filter_check_discard(call, entry, tr->buffer, event))
ring_buffer_unlock_commit(tr->buffer, event);
#endif
}

static void ftrace_trace_stack(struct trace_array *tr,
unsigned long flags,
int skip, int pc)
void ftrace_trace_stack(struct trace_array *tr, unsigned long flags, int skip,
int pc)
{
if (!(trace_flags & TRACE_ITER_STACKTRACE))
return;

__ftrace_trace_stack(tr, flags, skip, pc);
}

void __trace_stack(struct trace_array *tr,
unsigned long flags,
int skip, int pc)
void __trace_stack(struct trace_array *tr, unsigned long flags, int skip,
int pc)
{
__ftrace_trace_stack(tr, flags, skip, pc);
}

static void ftrace_trace_userstack(struct trace_array *tr,
unsigned long flags, int pc)
void ftrace_trace_userstack(struct trace_array *tr, unsigned long flags, int pc)
{
#ifdef CONFIG_STACKTRACE
struct ftrace_event_call *call = &event_user_stack;
struct ring_buffer_event *event;
struct userstack_entry *entry;
Expand All @@ -1076,7 +1067,6 @@ static void ftrace_trace_userstack(struct trace_array *tr,
save_stack_trace_user(&trace);
if (!filter_check_discard(call, entry, tr->buffer, event))
ring_buffer_unlock_commit(tr->buffer, event);
#endif
}

#ifdef UNUSED
Expand All @@ -1086,6 +1076,8 @@ static void __trace_userstack(struct trace_array *tr, unsigned long flags)
}
#endif /* UNUSED */

#endif /* CONFIG_STACKTRACE */

static void
ftrace_trace_special(void *__tr,
unsigned long arg1, unsigned long arg2, unsigned long arg3,
Expand Down
28 changes: 25 additions & 3 deletions kernel/trace/trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -489,9 +489,31 @@ void update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu);
void update_max_tr_single(struct trace_array *tr,
struct task_struct *tsk, int cpu);

void __trace_stack(struct trace_array *tr,
unsigned long flags,
int skip, int pc);
#ifdef CONFIG_STACKTRACE
void ftrace_trace_stack(struct trace_array *tr, unsigned long flags,
int skip, int pc);

void ftrace_trace_userstack(struct trace_array *tr, unsigned long flags,
int pc);

void __trace_stack(struct trace_array *tr, unsigned long flags, int skip,
int pc);
#else
static inline void ftrace_trace_stack(struct trace_array *tr,
unsigned long flags, int skip, int pc)
{
}

static inline void ftrace_trace_userstack(struct trace_array *tr,
unsigned long flags, int pc)
{
}

static inline void __trace_stack(struct trace_array *tr, unsigned long flags,
int skip, int pc)
{
}
#endif /* CONFIG_STACKTRACE */

extern cycle_t ftrace_now(int cpu);

Expand Down

0 comments on commit c0a0d0d

Please sign in to comment.