lkml.org 
[lkml]   [2009]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/6] tracing/core: Make the stack entry helpers global
    Date
    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>
    ---
    kernel/trace/trace.c | 24 ++++++++----------------
    kernel/trace/trace.h | 28 +++++++++++++++++++++++++---
    2 files changed, 33 insertions(+), 19 deletions(-)
    diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
    index 769d5cf..d126c88 100644
    --- a/kernel/trace/trace.c
    +++ b/kernel/trace/trace.c
    @@ -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,
    @@ -978,11 +974,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;
    @@ -1003,12 +999,10 @@ 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;
    @@ -1016,17 +1010,14 @@ static void ftrace_trace_stack(struct trace_array *tr,
    __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;
    @@ -1051,7 +1042,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
    @@ -1061,6 +1051,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,
    diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
    index 186543a..e5802a2 100644
    --- a/kernel/trace/trace.h
    +++ b/kernel/trace/trace.h
    @@ -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);

    --
    1.6.2.3


    \
     
     \ /
      Last update: 2009-07-29 19:15    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean