From mboxrd@z Thu Jan 1 00:00:00 1970 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 From: Stefan Hajnoczi Date: Tue, 6 Jul 2010 21:14:01 +0100 Message-Id: <1278447241-2709-3-git-send-email-stefanha@linux.vnet.ibm.com> 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> Subject: [Qemu-devel] [PATCH 3/3] trace: Flush trace buffer on exit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: sripathik@in.ibm.com, Stefan Hajnoczi , Prerna Saxena 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; - } } } -- 1.7.1