From patchwork Tue Jul 6 20:14:01 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Hajnoczi X-Patchwork-Id: 58060 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 2E535B6EFE for ; Wed, 7 Jul 2010 06:15:52 +1000 (EST) Received: from localhost ([127.0.0.1]:43116 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OWEYW-0006u7-KG for incoming@patchwork.ozlabs.org; Tue, 06 Jul 2010 16:15:48 -0400 Received: from [140.186.70.92] (port=51744 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OWEXF-0006sG-NK for qemu-devel@nongnu.org; Tue, 06 Jul 2010 16:14:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OWEXD-0004DU-3h for qemu-devel@nongnu.org; Tue, 06 Jul 2010 16:14:29 -0400 Received: from mtagate5.uk.ibm.com ([194.196.100.165]:55121) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OWEXC-0004D6-QR for qemu-devel@nongnu.org; Tue, 06 Jul 2010 16:14:27 -0400 Received: from d06nrmr1407.portsmouth.uk.ibm.com (d06nrmr1407.portsmouth.uk.ibm.com [9.149.38.185]) by mtagate5.uk.ibm.com (8.13.1/8.13.1) with ESMTP id o66KEOlI003760 for ; Tue, 6 Jul 2010 20:14:24 GMT Received: from d06av01.portsmouth.uk.ibm.com (d06av01.portsmouth.uk.ibm.com [9.149.37.212]) by d06nrmr1407.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o66KEKgj880784 for ; Tue, 6 Jul 2010 21:14:24 +0100 Received: from d06av01.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av01.portsmouth.uk.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id o66KEKs2004692 for ; Tue, 6 Jul 2010 21:14:20 +0100 Received: from stefan-thinkpad.ibm.com (sig-9-146-153-238.uk.ibm.com [9.146.153.238]) by d06av01.portsmouth.uk.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id o66KEFQ9004570; Tue, 6 Jul 2010 21:14:19 +0100 From: Stefan Hajnoczi To: Date: Tue, 6 Jul 2010 21:14:01 +0100 Message-Id: <1278447241-2709-3-git-send-email-stefanha@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1278447241-2709-1-git-send-email-stefanha@linux.vnet.ibm.com> References: <1278447241-2709-1-git-send-email-stefanha@linux.vnet.ibm.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) Cc: sripathik@in.ibm.com, Stefan Hajnoczi , Prerna Saxena Subject: [Qemu-devel] [PATCH 3/3] trace: Flush trace buffer on exit X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Stefan Hajnoczi --- This applies to the tracing branch at: http://repo.or.cz/w/qemu/stefanha.git/shortlog/refs/heads/tracing-dev simpletrace.c | 23 +++++++++++++++-------- 1 files changed, 15 insertions(+), 8 deletions(-) diff --git a/simpletrace.c b/simpletrace.c index ace009f..9604ea6 100644 --- a/simpletrace.c +++ b/simpletrace.c @@ -22,6 +22,20 @@ static TraceRecord trace_buf[TRACE_BUF_LEN]; static unsigned int trace_idx; static FILE *trace_fp; +static void flush_trace_buffer(void) +{ + if (!trace_fp) { + trace_fp = fopen("/tmp/trace.log", "w"); + if (trace_fp) { + atexit(flush_trace_buffer); + } + } + if (trace_fp) { + size_t unused; /* for when fwrite(3) is declared warn_unused_result */ + unused = fwrite(trace_buf, trace_idx * sizeof(trace_buf[0]), 1, trace_fp); + } +} + static void trace(TraceEventID event, unsigned long x1, unsigned long x2, unsigned long x3, unsigned long x4, unsigned long x5) @@ -44,15 +58,8 @@ static void trace(TraceEventID event, unsigned long x1, rec->x5 = x5; if (++trace_idx == TRACE_BUF_LEN) { + flush_trace_buffer(); trace_idx = 0; - - if (!trace_fp) { - trace_fp = fopen("/tmp/trace.log", "w"); - } - if (trace_fp) { - size_t result = fwrite(trace_buf, sizeof trace_buf, 1, trace_fp); - result = result; - } } }