From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:50761) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R96bU-0005N2-EU for qemu-devel@nongnu.org; Wed, 28 Sep 2011 22:44:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R96bT-0004Tv-01 for qemu-devel@nongnu.org; Wed, 28 Sep 2011 22:44:04 -0400 Received: from lemon.ertos.nicta.com.au ([203.143.174.143]:38014 helo=lemon.ken.nicta.com.au) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R96bS-0004Tb-J6 for qemu-devel@nongnu.org; Wed, 28 Sep 2011 22:44:02 -0400 Date: Thu, 29 Sep 2011 12:43:55 +1000 Message-ID: From: Peter Chubb MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH] Remove line buffering from log file List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: bernard.blackham@nicta.com.au, philipo@ok-labs.com This patch was originally written by Bernard Blackham, and modified by Peter Chubb. =46rom 0d755af2f5bef22432da71f2fe0a9dce7d2882cd Mon Sep 17 00:00:00 2001 From: Bernard Blackham Date: Fri, 24 Jul 2009 13:38:03 +1000 Subject: Disable line-based log buffering.=20 There's no real reason for line-based buffering in log file output. If block buffering with a decent sized buffer is used, it can speed=20 qemu up for -d all or -d exec significantly.=20 The only thing you lose is that the last up to 4k of log output may be lost= if qemu crashes. Signed-off-by: Peter Chubb Signed-off-by: Hans Jang Signed-off-by: Bernard Blackham --- exec.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) Index: qemu-working/exec.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- qemu-working.orig/exec.c 2011-09-29 09:03:35.866233828 +1000 +++ qemu-working/exec.c 2011-09-29 12:40:56.668973550 +1000 @@ -1594,29 +1594,28 @@ void cpu_single_step(CPUState *env, int /* enable or disable low levels log */ void cpu_set_log(int log_flags) { loglevel =3D log_flags; if (loglevel && !logfile) { logfile =3D fopen(logfilename, log_append ? "a" : "w"); if (!logfile) { perror(logfilename); _exit(1); } + +/* Don't use line-based buffering: it hurts -d exec */ #if !defined(CONFIG_SOFTMMU) /* must avoid mmap() usage of glibc by setting a buffer "by hand" = */ { static char logfile_buf[4096]; - setvbuf(logfile, logfile_buf, _IOLBF, sizeof(logfile_buf)); + setvbuf(logfile, logfile_buf, _IOFBF, sizeof(logfile_buf)); } -#elif !defined(_WIN32) - /* Win32 doesn't support line-buffering and requires size >=3D 2 */ - setvbuf(logfile, NULL, _IOLBF, 0); #endif log_append =3D 1; } if (!loglevel && logfile) { fclose(logfile); logfile =3D NULL; } } =20 void cpu_set_log_filename(const char *filename) -- Dr Peter Chubb http://www.gelato.unsw.edu.au peterc AT gelato.unsw.edu.au http://www.ertos.nicta.com.au ERTOS within National ICT Australia