Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 338994
b: refs/heads/master
c: 8169883
h: refs/heads/master
v: v3
  • Loading branch information
Steven Rostedt authored and Steven Rostedt committed Oct 31, 2012
1 parent d1f9460 commit 00d402b
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b382ede6b5eb8188926b72a9ef42fd2354342a97
refs/heads/master: 81698831bc462ff16f76bc11249a1e492424da4c
36 changes: 34 additions & 2 deletions trunk/kernel/trace/trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -1559,10 +1559,10 @@ static int alloc_percpu_trace_buffer(void)
return -ENOMEM;
}

static int buffers_allocated;

void trace_printk_init_buffers(void)
{
static int buffers_allocated;

if (buffers_allocated)
return;

Expand All @@ -1575,6 +1575,34 @@ void trace_printk_init_buffers(void)
tracing_update_buffers();

buffers_allocated = 1;

/*
* trace_printk_init_buffers() can be called by modules.
* If that happens, then we need to start cmdline recording
* directly here. If the global_trace.buffer is already
* allocated here, then this was called by module code.
*/
if (global_trace.buffer)
tracing_start_cmdline_record();
}

void trace_printk_start_comm(void)
{
/* Start tracing comms if trace printk is set */
if (!buffers_allocated)
return;
tracing_start_cmdline_record();
}

static void trace_printk_start_stop_comm(int enabled)
{
if (!buffers_allocated)
return;

if (enabled)
tracing_start_cmdline_record();
else
tracing_stop_cmdline_record();
}

/**
Expand Down Expand Up @@ -2797,6 +2825,9 @@ static void set_tracer_flags(unsigned int mask, int enabled)

if (mask == TRACE_ITER_OVERWRITE)
ring_buffer_change_overwrite(global_trace.buffer, enabled);

if (mask == TRACE_ITER_PRINTK)
trace_printk_start_stop_comm(enabled);
}

static ssize_t
Expand Down Expand Up @@ -5099,6 +5130,7 @@ __init static int tracer_alloc_buffers(void)

/* Only allocate trace_printk buffers if a trace_printk exists */
if (__stop___trace_bprintk_fmt != __start___trace_bprintk_fmt)
/* Must be called before global_trace.buffer is allocated */
trace_printk_init_buffers();

/* To save memory, keep the ring buffer size to its minimum */
Expand Down
1 change: 1 addition & 0 deletions trunk/kernel/trace/trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -841,6 +841,7 @@ extern const char *__start___trace_bprintk_fmt[];
extern const char *__stop___trace_bprintk_fmt[];

void trace_printk_init_buffers(void);
void trace_printk_start_comm(void);

#undef FTRACE_ENTRY
#define FTRACE_ENTRY(call, struct_name, id, tstruct, print, filter) \
Expand Down
3 changes: 3 additions & 0 deletions trunk/kernel/trace/trace_events.c
Original file line number Diff line number Diff line change
Expand Up @@ -1489,6 +1489,9 @@ static __init int event_trace_enable(void)
if (ret)
pr_warn("Failed to enable trace event: %s\n", token);
}

trace_printk_start_comm();

return 0;
}

Expand Down

0 comments on commit 00d402b

Please sign in to comment.