[RFC PATCH 11/22 -v2] Reset the tracer when started

Steven Rostedt
2008-01-09T23:35:52Z

[-- Attachment #1: mcount-tracer-clear-buffer.patch --]
[-- Type: text/plain, Size: 1124 bytes --]

This patch resets the trace when it is started by the user.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
---
lib/tracing/tracer.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)

Index: linux-compile-i386.git/lib/tracing/tracer.c
===================================================================
--- linux-compile-i386.git.orig/lib/tracing/tracer.c 2008-01-09 14:14:02.000000000 -0500
+++ linux-compile-i386.git/lib/tracing/tracer.c 2008-01-09 15:17:36.000000000 -0500
@@ -78,6 +78,16 @@ static notrace void trace_function(const
raw_local_irq_restore(flags);
}

+static notrace void mctracer_reset(struct mctracer_trace *tr)
+{
+ int cpu;
+
+ for_each_online_cpu(cpu) {
+ tr->trace_idx[cpu] = 0;
+ atomic_set(&tr->underrun[cpu], 0);
+ }
+}
+
#ifdef CONFIG_DEBUG_FS
enum trace_iterator {
TRACE_ITER_SYM_ONLY = 1,
@@ -324,6 +334,10 @@ static ssize_t mctracer_ctrl_write(struc

val = !!simple_strtoul(buf, NULL, 10);

+ /* When starting a new trace, reset the buffers */
+ if (val)
+ mctracer_reset(tr);
+
if (tr->ctrl ^ val) {
if (val)
register_mcount_function(trace_function);

--