lkml.org 
[lkml]   [2009]   [Sep]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 15/18] tracing: add trace_array_printk for internal tracers to use
    From: Steven Rostedt <srostedt@redhat.com>

    This patch adds a trace_array_printk to allow a tracer to use the
    trace_printk on its own trace array.

    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    ---
    kernel/trace/trace.c | 24 ++++++++++++++++++++++--
    kernel/trace/trace.h | 5 +++++
    2 files changed, 27 insertions(+), 2 deletions(-)

    diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
    index 0c61836..ef08328 100644
    --- a/kernel/trace/trace.c
    +++ b/kernel/trace/trace.c
    @@ -1201,7 +1201,23 @@ out:
    }
    EXPORT_SYMBOL_GPL(trace_vbprintk);

    -int trace_vprintk(unsigned long ip, const char *fmt, va_list args)
    +int trace_array_printk(struct trace_array *tr,
    + unsigned long ip, const char *fmt, ...)
    +{
    + int ret;
    + va_list ap;
    +
    + if (!(trace_flags & TRACE_ITER_PRINTK))
    + return 0;
    +
    + va_start(ap, fmt);
    + ret = trace_array_vprintk(tr, ip, fmt, ap);
    + va_end(ap);
    + return ret;
    +}
    +
    +int trace_array_vprintk(struct trace_array *tr,
    + unsigned long ip, const char *fmt, va_list args)
    {
    static raw_spinlock_t trace_buf_lock = __RAW_SPIN_LOCK_UNLOCKED;
    static char trace_buf[TRACE_BUF_SIZE];
    @@ -1209,7 +1225,6 @@ int trace_vprintk(unsigned long ip, const char *fmt, va_list args)
    struct ftrace_event_call *call = &event_print;
    struct ring_buffer_event *event;
    struct ring_buffer *buffer;
    - struct trace_array *tr = &global_trace;
    struct trace_array_cpu *data;
    int cpu, len = 0, size, pc;
    struct print_entry *entry;
    @@ -1260,6 +1275,11 @@ int trace_vprintk(unsigned long ip, const char *fmt, va_list args)

    return len;
    }
    +
    +int trace_vprintk(unsigned long ip, const char *fmt, va_list args)
    +{
    + return trace_array_printk(&global_trace, ip, fmt, args);
    +}
    EXPORT_SYMBOL_GPL(trace_vprintk);

    enum trace_file_type {
    diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
    index 4d30414..fa1dccb 100644
    --- a/kernel/trace/trace.h
    +++ b/kernel/trace/trace.h
    @@ -566,6 +566,11 @@ extern int
    trace_vbprintk(unsigned long ip, const char *fmt, va_list args);
    extern int
    trace_vprintk(unsigned long ip, const char *fmt, va_list args);
    +extern int
    +trace_array_vprintk(struct trace_array *tr,
    + unsigned long ip, const char *fmt, va_list args);
    +int trace_array_printk(struct trace_array *tr,
    + unsigned long ip, const char *fmt, ...);

    extern unsigned long trace_flags;

    --
    1.6.3.3
    --


    \
     
     \ /
      Last update: 2009-09-05 02:05    [W:0.023 / U:30.212 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site