From patchwork Wed Feb 3 15:47:37 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Hajnoczi X-Patchwork-Id: 8204151 Return-Path: X-Original-To: patchwork-qemu-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 6F52F9F6DA for ; Wed, 3 Feb 2016 15:50:19 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 9767520251 for ; Wed, 3 Feb 2016 15:50:17 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 46C44200DF for ; Wed, 3 Feb 2016 15:50:16 +0000 (UTC) Received: from localhost ([::1]:35738 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aQzh9-0004IT-MF for patchwork-qemu-devel@patchwork.kernel.org; Wed, 03 Feb 2016 10:50:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33709) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aQzf2-00016X-Ni for qemu-devel@nongnu.org; Wed, 03 Feb 2016 10:48:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aQzex-0002VJ-3c for qemu-devel@nongnu.org; Wed, 03 Feb 2016 10:48:04 -0500 Received: from mx1.redhat.com ([209.132.183.28]:51719) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aQzew-0002UD-SN for qemu-devel@nongnu.org; Wed, 03 Feb 2016 10:47:59 -0500 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 718B53CA99F; Wed, 3 Feb 2016 15:47:58 +0000 (UTC) Received: from localhost (ovpn-112-66.ams2.redhat.com [10.36.112.66]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u13FlvP2031104; Wed, 3 Feb 2016 10:47:57 -0500 From: Stefan Hajnoczi To: Date: Wed, 3 Feb 2016 15:47:37 +0000 Message-Id: <1454514465-11856-6-git-send-email-stefanha@redhat.com> In-Reply-To: <1454514465-11856-1-git-send-email-stefanha@redhat.com> References: <1454514465-11856-1-git-send-email-stefanha@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 209.132.183.28 Cc: "Denis V. Lunev" , Peter Maydell , Stefan Hajnoczi , Paolo Bonzini Subject: [Qemu-devel] [PULL 05/13] trace: split trace_init_file out of trace_init_backends X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Paolo Bonzini This is cleaner, and improves error reporting with -daemonize. Signed-off-by: Paolo Bonzini Signed-off-by: Denis V. Lunev Acked-by: Christian Borntraeger Message-id: 1452174932-28657-4-git-send-email-den@openvz.org Signed-off-by: Stefan Hajnoczi --- qemu-io.c | 2 +- trace/control.c | 17 ++++++++++++----- trace/control.h | 13 ++++++++++++- trace/simple.c | 6 ++---- trace/simple.h | 4 ++-- vl.c | 13 +++++++++---- 6 files changed, 38 insertions(+), 17 deletions(-) diff --git a/qemu-io.c b/qemu-io.c index 1c11d57..83c48f4 100644 --- a/qemu-io.c +++ b/qemu-io.c @@ -435,7 +435,7 @@ int main(int argc, char **argv) } break; case 'T': - if (!trace_init_backends(optarg)) { + if (!trace_init_backends()) { exit(1); /* error message will have been printed */ } break; diff --git a/trace/control.c b/trace/control.c index 931d64c..f5a497a 100644 --- a/trace/control.c +++ b/trace/control.c @@ -145,17 +145,24 @@ void trace_init_events(const char *fname) loc_pop(&loc); } -bool trace_init_backends(const char *file) +void trace_init_file(const char *file) { #ifdef CONFIG_TRACE_SIMPLE - if (!st_init(file)) { - fprintf(stderr, "failed to initialize simple tracing backend.\n"); - return false; - } + st_set_trace_file(file); #else if (file) { fprintf(stderr, "error: -trace file=...: " "option not supported by the selected tracing backends\n"); + exit(1); + } +#endif +} + +bool trace_init_backends(void) +{ +#ifdef CONFIG_TRACE_SIMPLE + if (!st_init()) { + fprintf(stderr, "failed to initialize simple tracing backend.\n"); return false; } #endif diff --git a/trace/control.h b/trace/control.h index 7905917..d50f399 100644 --- a/trace/control.h +++ b/trace/control.h @@ -157,7 +157,7 @@ static void trace_event_set_state_dynamic(TraceEvent *ev, bool state); * * Returns: Whether the backends could be successfully initialized. */ -bool trace_init_backends(const char *file); +bool trace_init_backends(void); /** * trace_init_events: @@ -170,6 +170,17 @@ bool trace_init_backends(const char *file); */ void trace_init_events(const char *file); +/** + * trace_init_file: + * @file: Name of trace output file; may be NULL. + * Corresponds to commandline option "-trace file=...". + * + * Record the name of the output file for the tracing backend. + * Exits if no selected backend does not support specifying the + * output file, and a non-NULL file was passed. + */ +void trace_init_file(const char *file); + #include "trace/control-internal.h" diff --git a/trace/simple.c b/trace/simple.c index 56a624c..e8594cd 100644 --- a/trace/simple.c +++ b/trace/simple.c @@ -322,7 +322,7 @@ void st_set_trace_file_enabled(bool enable) * @file The trace file name or NULL for the default name- set at * config time */ -bool st_set_trace_file(const char *file) +void st_set_trace_file(const char *file) { st_set_trace_file_enabled(false); @@ -336,7 +336,6 @@ bool st_set_trace_file(const char *file) } st_set_trace_file_enabled(true); - return true; } void st_print_trace_file_status(FILE *stream, int (*stream_printf)(FILE *stream, const char *fmt, ...)) @@ -374,7 +373,7 @@ static GThread *trace_thread_create(GThreadFunc fn) return thread; } -bool st_init(const char *file) +bool st_init(void) { GThread *thread; @@ -387,6 +386,5 @@ bool st_init(const char *file) } atexit(st_flush_trace_buffer); - st_set_trace_file(file); return true; } diff --git a/trace/simple.h b/trace/simple.h index 6997996..8d1a32e 100644 --- a/trace/simple.h +++ b/trace/simple.h @@ -20,8 +20,8 @@ void st_print_trace_file_status(FILE *stream, fprintf_function stream_printf); void st_set_trace_file_enabled(bool enable); -bool st_set_trace_file(const char *file); -bool st_init(const char *file); +void st_set_trace_file(const char *file); +bool st_init(void); void st_flush_trace_buffer(void); typedef struct { diff --git a/vl.c b/vl.c index ff2a7d5..955f364 100644 --- a/vl.c +++ b/vl.c @@ -2988,7 +2988,7 @@ int main(int argc, char **argv, char **envp) bool userconfig = true; const char *log_mask = NULL; const char *log_file = NULL; - const char *trace_file = NULL; + char *trace_file = NULL; ram_addr_t maxram_size; uint64_t ram_slots = 0; FILE *vmstate_dump_file = NULL; @@ -3905,7 +3905,10 @@ int main(int argc, char **argv, char **envp) exit(1); } trace_init_events(qemu_opt_get(opts, "events")); - trace_file = qemu_opt_get(opts, "file"); + if (trace_file) { + g_free(trace_file); + } + trace_file = g_strdup(qemu_opt_get(opts, "file")); qemu_opts_del(opts); break; } @@ -4089,6 +4092,8 @@ int main(int argc, char **argv, char **envp) exit(0); } + trace_init_file(trace_file); + /* Open the logfile at this point and set the log mask if necessary. */ if (log_file) { @@ -4106,7 +4111,7 @@ int main(int argc, char **argv, char **envp) } if (!is_daemonized()) { - if (!trace_init_backends(trace_file)) { + if (!trace_init_backends()) { exit(1); } } @@ -4653,7 +4658,7 @@ int main(int argc, char **argv, char **envp) os_setup_post(); if (is_daemonized()) { - if (!trace_init_backends(trace_file)) { + if (!trace_init_backends()) { exit(1); } }