From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39959) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b1YGB-000384-Nu for qemu-devel@nongnu.org; Sat, 14 May 2016 08:01:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b1YG5-0006mT-O0 for qemu-devel@nongnu.org; Sat, 14 May 2016 08:01:30 -0400 Received: from mailhub.sw.ru ([195.214.232.25]:9191 helo=relay.sw.ru) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b1YG5-0006lh-AZ for qemu-devel@nongnu.org; Sat, 14 May 2016 08:01:25 -0400 From: "Denis V. Lunev" Date: Sat, 14 May 2016 15:01:08 +0300 Message-Id: <1463227273-27523-2-git-send-email-den@openvz.org> In-Reply-To: <1463227273-27523-1-git-send-email-den@openvz.org> References: <1463227273-27523-1-git-send-email-den@openvz.org> Subject: [Qemu-devel] [PATCH 1/6] qemu-io: enable tracing in qemu-io List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: den@openvz.org, Kevin Wolf , Paolo Bonzini It would be convinient to enable tracepoints in qemu-io binary. This would allow to perform investigations without additional code recompilations. The command line will be exactly the same as in qemu-system. Signed-off-by: Denis V. Lunev CC: Kevin Wolf CC: Paolo Bonzini --- qemu-io.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/qemu-io.c b/qemu-io.c index 5ef3ef7..2d0d2b0 100644 --- a/qemu-io.c +++ b/qemu-io.c @@ -18,6 +18,7 @@ #include "qemu/option.h" #include "qemu/config-file.h" #include "qemu/readline.h" +#include "qemu/log.h" #include "qapi/qmp/qstring.h" #include "qom/object_interfaces.h" #include "sysemu/block-backend.h" @@ -419,6 +420,25 @@ static QemuOptsList qemu_object_opts = { }, }; +static QemuOptsList qemu_trace_opts = { + .name = "trace", + .implied_opt_name = "enable", + .head = QTAILQ_HEAD_INITIALIZER(qemu_trace_opts.head), + .desc = { + { + .name = "enable", + .type = QEMU_OPT_STRING, + }, + { + .name = "events", + .type = QEMU_OPT_STRING, + },{ + .name = "file", + .type = QEMU_OPT_STRING, + }, + { /* end of list */ } + }, +}; static QemuOptsList file_opts = { .name = "file", @@ -473,6 +493,7 @@ int main(int argc, char **argv) module_call_init(MODULE_INIT_QOM); qemu_add_opts(&qemu_object_opts); + qemu_add_opts(&qemu_trace_opts); bdrv_init(); while ((c = getopt_long(argc, argv, sopt, lopt, &opt_index)) != -1) { @@ -512,10 +533,32 @@ int main(int argc, char **argv) } break; case 'T': + { + QemuOpts *trace_opts; + char *trace_file; + + trace_opts = qemu_opts_parse_noisily(qemu_find_opts("trace"), + optarg, true); + if (trace_opts == NULL) { + exit(1); + } + if (qemu_opt_get(trace_opts, "enable")) { + trace_enable_events(qemu_opt_get(trace_opts, "enable")); + } + trace_init_events(qemu_opt_get(trace_opts, "events")); + + trace_file = g_strdup(qemu_opt_get(trace_opts, "file")); + qemu_opts_del(trace_opts); + if (!trace_init_backends()) { exit(1); /* error message will have been printed */ } + trace_init_file(trace_file); + g_free(trace_file); + + qemu_set_log(LOG_TRACE); break; + } case 'V': printf("%s version %s\n", progname, QEMU_VERSION); exit(0); -- 2.5.0