From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758450AbYAIXfw (ORCPT ); Wed, 9 Jan 2008 18:35:52 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1757045AbYAIXbJ (ORCPT ); Wed, 9 Jan 2008 18:31:09 -0500 Received: from ms-smtp-04.nyroc.rr.com ([24.24.2.58]:37804 "EHLO ms-smtp-04.nyroc.rr.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756080AbYAIXay (ORCPT ); Wed, 9 Jan 2008 18:30:54 -0500 Message-Id: <20080109233043.974444280@goodmis.org> References: <20080109232914.676624725@goodmis.org> User-Agent: quilt/0.46-1 Date: Wed, 09 Jan 2008 18:29:25 -0500 From: Steven Rostedt To: LKML Cc: Ingo Molnar , Linus Torvalds , Andrew Morton , Peter Zijlstra , Christoph Hellwig , Mathieu Desnoyers , Gregory Haskins , Arnaldo Carvalho de Melo , Thomas Gleixner , Tim Bird , Sam Ravnborg , "Frank Ch. Eigler" , Steven Rostedt Subject: [RFC PATCH 11/22 -v2] Reset the tracer when started Content-Disposition: inline; filename=mcount-tracer-clear-buffer.patch Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch resets the trace when it is started by the user. Signed-off-by: Steven Rostedt --- 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); --