From c45a81682d6d15b7ec82ed90c34a537de66dea55 Mon Sep 17 00:00:00 2001 From: Michael Roth Date: Sun, 2 Oct 2011 08:44:37 -0500 Subject: [PATCH 1/4] hmp: re-enable trace-file command Commit 31965ae27bc11e90674be12584bb201b83df5aef reverted a previous renaming of CONFIG_SIMPLE_TRACE->CONFIG_TRACE_SIMPLE in a couple spots, leading to trace-file currently being unavailable. Signed-off-by: Michael Roth Signed-off-by: Stefan Hajnoczi --- hmp-commands.hx | 2 +- monitor.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hmp-commands.hx b/hmp-commands.hx index 9e1cca8e3d..844e6c91e7 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -194,7 +194,7 @@ STEXI changes status of a trace event ETEXI -#if defined(CONFIG_SIMPLE_TRACE) +#if defined(CONFIG_TRACE_SIMPLE) { .name = "trace-file", .args_type = "op:s?,arg:F?", diff --git a/monitor.c b/monitor.c index d323ea5851..08f6197863 100644 --- a/monitor.c +++ b/monitor.c @@ -606,7 +606,7 @@ static void do_trace_event_set_state(Monitor *mon, const QDict *qdict) } } -#ifdef CONFIG_SIMPLE_TRACE +#ifdef CONFIG_TRACE_SIMPLE static void do_trace_file(Monitor *mon, const QDict *qdict) { const char *op = qdict_get_try_str(qdict, "op"); From 28dcee10c54984449259a13c6f27bf98c4770f3c Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Thu, 22 Sep 2011 20:14:12 +0100 Subject: [PATCH 2/4] trace: trace bdrv_open_common() bdrv_open_common() is a useful point to trace since it reveals the filename and block driver for a given BlockDriverState. Signed-off-by: Stefan Hajnoczi --- block.c | 2 ++ trace-events | 1 + 2 files changed, 3 insertions(+) diff --git a/block.c b/block.c index e3fe97f275..1ae22d5d2a 100644 --- a/block.c +++ b/block.c @@ -475,6 +475,8 @@ static int bdrv_open_common(BlockDriverState *bs, const char *filename, assert(drv != NULL); + trace_bdrv_open_common(bs, filename, flags, drv->format_name); + bs->file = NULL; bs->total_sectors = 0; bs->encrypted = 0; diff --git a/trace-events b/trace-events index b7ddf14bd8..f408564775 100644 --- a/trace-events +++ b/trace-events @@ -56,6 +56,7 @@ virtio_console_chr_read(unsigned int port, int size) "port %u, size %d" virtio_console_chr_event(unsigned int port, int event) "port %u, event %d" # block.c +bdrv_open_common(void *bs, const char *filename, int flags, const char *format_name) "bs %p filename \"%s\" flags %#x format_name \"%s\"" multiwrite_cb(void *mcb, int ret) "mcb %p ret %d" bdrv_aio_multiwrite(void *mcb, int num_callbacks, int num_reqs) "mcb %p num_callbacks %d num_reqs %d" bdrv_aio_multiwrite_earlyfail(void *mcb) "mcb %p" From 89bd820acb477b2c41f13977a3ceb4538fadcd02 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Fri, 23 Sep 2011 08:23:06 +0100 Subject: [PATCH 3/4] trace: trace monitor qmp dispatch/completion Add trace events for handle_qmp_command(), which dispatches qmp commands, and monitor_protocol_emitter(), which produces the reply to a qmp command. Also remove duplicate #include "trace/control.h". Signed-off-by: Stefan Hajnoczi --- monitor.c | 5 ++++- trace-events | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/monitor.c b/monitor.c index 08f6197863..cf59442754 100644 --- a/monitor.c +++ b/monitor.c @@ -57,11 +57,11 @@ #include "json-parser.h" #include "osdep.h" #include "cpu.h" +#include "trace.h" #include "trace/control.h" #ifdef CONFIG_TRACE_SIMPLE #include "trace/simple.h" #endif -#include "trace/control.h" #include "ui/qemu-spice.h" #include "memory.h" @@ -370,6 +370,8 @@ static void monitor_protocol_emitter(Monitor *mon, QObject *data) { QDict *qmp; + trace_monitor_protocol_emitter(mon); + qmp = qdict_new(); if (!monitor_has_error(mon)) { @@ -5102,6 +5104,7 @@ static void handle_qmp_command(JSONMessageParser *parser, QList *tokens) qobject_incref(mon->mc->id); cmd_name = qdict_get_str(input, "execute"); + trace_handle_qmp_command(mon, cmd_name); if (invalid_qmp_mode(mon, cmd_name)) { qerror_report(QERR_COMMAND_NOT_FOUND, cmd_name); goto err_out; diff --git a/trace-events b/trace-events index f408564775..c9fd8e5ad5 100644 --- a/trace-events +++ b/trace-events @@ -534,3 +534,7 @@ esp_mem_writeb_cmd_sel(uint32_t val) "Select without ATN (%2.2x)" esp_mem_writeb_cmd_selatn(uint32_t val) "Select with ATN (%2.2x)" esp_mem_writeb_cmd_selatns(uint32_t val) "Select with ATN & stop (%2.2x)" esp_mem_writeb_cmd_ensel(uint32_t val) "Enable selection (%2.2x)" + +# monitor.c +handle_qmp_command(void *mon, const char *cmd_name) "mon %p cmd_name \"%s\"" +monitor_protocol_emitter(void *mon) "mon %p" From 59370aaa5693d57c350074e537f2627d5b9d446c Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Fri, 30 Sep 2011 17:34:58 +0100 Subject: [PATCH 4/4] trace: add arguments to bdrv_co_io_em() trace event It is useful to know the BlockDriverState as well as the sector_num/nb_sectors of an emulated .bdrv_co_*() request. Signed-off-by: Stefan Hajnoczi --- block.c | 2 +- trace-events | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/block.c b/block.c index 1ae22d5d2a..e865fab27e 100644 --- a/block.c +++ b/block.c @@ -2999,7 +2999,7 @@ static int coroutine_fn bdrv_co_io_em(BlockDriverState *bs, int64_t sector_num, bdrv_co_io_em_complete, &co); } - trace_bdrv_co_io(is_write, acb); + trace_bdrv_co_io_em(bs, sector_num, nb_sectors, is_write, acb); if (!acb) { return -EIO; } diff --git a/trace-events b/trace-events index c9fd8e5ad5..9528c04fed 100644 --- a/trace-events +++ b/trace-events @@ -67,7 +67,7 @@ bdrv_aio_writev(void *bs, int64_t sector_num, int nb_sectors, void *opaque) "bs bdrv_lock_medium(void *bs, bool locked) "bs %p locked %d" bdrv_co_readv(void *bs, int64_t sector_num, int nb_sector) "bs %p sector_num %"PRId64" nb_sectors %d" bdrv_co_writev(void *bs, int64_t sector_num, int nb_sector) "bs %p sector_num %"PRId64" nb_sectors %d" -bdrv_co_io(int is_write, void *acb) "is_write %d acb %p" +bdrv_co_io_em(void *bs, int64_t sector_num, int nb_sectors, int is_write, void *acb) "bs %p sector_num %"PRId64" nb_sectors %d is_write %d acb %p" # hw/virtio-blk.c virtio_blk_req_complete(void *req, int status) "req %p status %d"