From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757728AbYAOUzf (ORCPT ); Tue, 15 Jan 2008 15:55:35 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1757401AbYAOUus (ORCPT ); Tue, 15 Jan 2008 15:50:48 -0500 Received: from ms-smtp-04.nyroc.rr.com ([24.24.2.58]:63798 "EHLO ms-smtp-04.nyroc.rr.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755225AbYAOUuf (ORCPT ); Tue, 15 Jan 2008 15:50:35 -0500 Message-Id: <20080115205023.081474130@goodmis.org> References: <20080115204907.838227723@goodmis.org> User-Agent: quilt/0.46-1 Date: Tue, 15 Jan 2008 15:49:18 -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" , Jan Kiszka , Steven Rostedt Subject: [RFC PATCH 11/30 v3] 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.git/lib/tracing/tracer.c =================================================================== --- linux-compile.git.orig/lib/tracing/tracer.c 2008-01-14 13:14:13.000000000 -0500 +++ linux-compile.git/lib/tracing/tracer.c 2008-01-14 14:57:54.000000000 -0500 @@ -88,6 +88,16 @@ static struct mcount_ops trace_ops __rea .func = trace_function, }; +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, @@ -334,6 +344,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) trace_enabled = 1; --