[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 06/50] monitor: Separate "default monitor" and "curr
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH 06/50] monitor: Separate "default monitor" and "current monitor" cleanly |
Date: |
Thu, 4 Mar 2010 16:56:27 +0100 |
Commits 376253ec..731b0364 introduced global variable cur_mon, which
points to the "default monitor" (if any), except during execution of
monitor_read() or monitor_control_read() it points to the monitor from
which we're reading instead (the "current monitor"). Monitor command
handlers run within monitor_read() or monitor_control_read().
Default monitor and current monitor are really separate things, and
squashing them together is confusing and error-prone.
For instance, usb_host_scan() can run both in "info usbhost" and
periodically via usb_host_auto_check(). It prints to cur_mon, which
is what we want in the former case: the monitor executing "info
usbhost". But since that's the default monitor in the latter case, it
periodically spams the default monitor there.
A few places use cur_mon to log stuff to the default monitor. If we
ever log something while cur_mon points to current monitor instead of
default monitor, the log temporarily "jumps" to another monitor.
Whether that can or cannot happen isn't always obvious.
Maybe logging to the default monitor (which may not even exist) is a
bad idea, and we should log to stderr or a logfile instead. But
that's outside the scope of this commit.
Change cur_mon to point to the current monitor. Create new
default_mon to point to the default monitor. Update users of cur_mon
accordingly.
This fixes the periodical spamming of the default monitor by
usb_host_scan(). It also stops "log jumping", should that problem
exist.
Signed-off-by: Markus Armbruster <address@hidden>
---
audio/audio.c | 4 ++--
monitor.c | 7 ++++---
monitor.h | 1 +
slirp/misc.c | 2 +-
vnc.c | 5 ++---
5 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/audio/audio.c b/audio/audio.c
index 2a20e5b..dbf0b96 100644
--- a/audio/audio.c
+++ b/audio/audio.c
@@ -330,10 +330,10 @@ void AUD_vlog (const char *cap, const char *fmt, va_list
ap)
{
if (conf.log_to_monitor) {
if (cap) {
- monitor_printf(cur_mon, "%s: ", cap);
+ monitor_printf(default_mon, "%s: ", cap);
}
- monitor_vprintf(cur_mon, fmt, ap);
+ monitor_vprintf(default_mon, fmt, ap);
}
else {
if (cap) {
diff --git a/monitor.c b/monitor.c
index b16c8c3..8e2e5c3 100644
--- a/monitor.c
+++ b/monitor.c
@@ -177,7 +177,8 @@ static QLIST_HEAD(mon_list, Monitor) mon_list;
static const mon_cmd_t mon_cmds[];
static const mon_cmd_t info_cmds[];
-Monitor *cur_mon = NULL;
+Monitor *cur_mon;
+Monitor *default_mon;
static void monitor_command_cb(Monitor *mon, const char *cmdline,
void *opaque);
@@ -4621,8 +4622,8 @@ void monitor_init(CharDriverState *chr, int flags)
}
QLIST_INSERT_HEAD(&mon_list, mon, entry);
- if (!cur_mon || (flags & MONITOR_IS_DEFAULT))
- cur_mon = mon;
+ if (!default_mon || (flags & MONITOR_IS_DEFAULT))
+ default_mon = mon;
}
static void bdrv_password_cb(Monitor *mon, const char *password, void *opaque)
diff --git a/monitor.h b/monitor.h
index fc09505..c481c9d 100644
--- a/monitor.h
+++ b/monitor.h
@@ -7,6 +7,7 @@
#include "block.h"
extern Monitor *cur_mon;
+extern Monitor *default_mon;
/* flags for monitor_init */
#define MONITOR_IS_DEFAULT 0x01
diff --git a/slirp/misc.c b/slirp/misc.c
index dcb1dc1..1aeb401 100644
--- a/slirp/misc.c
+++ b/slirp/misc.c
@@ -260,7 +260,7 @@ void lprint(const char *format, ...)
va_list args;
va_start(args, format);
- monitor_vprintf(cur_mon, format, args);
+ monitor_vprintf(default_mon, format, args);
va_end(args);
}
diff --git a/vnc.c b/vnc.c
index db34b0e..712043f 100644
--- a/vnc.c
+++ b/vnc.c
@@ -1046,11 +1046,10 @@ static void audio_capture(void *opaque, void *buf, int
size)
static void audio_add(VncState *vs)
{
- Monitor *mon = cur_mon;
struct audio_capture_ops ops;
if (vs->audio_cap) {
- monitor_printf(mon, "audio already running\n");
+ monitor_printf(default_mon, "audio already running\n");
return;
}
@@ -1060,7 +1059,7 @@ static void audio_add(VncState *vs)
vs->audio_cap = AUD_add_capture(&vs->as, &ops, vs);
if (!vs->audio_cap) {
- monitor_printf(mon, "Failed to add audio capture\n");
+ monitor_printf(default_mon, "Failed to add audio capture\n");
}
}
--
1.6.6.1
- [Qemu-devel] [PATCH 11/50] error: Move qemu_error & friends into their own header, (continued)
- [Qemu-devel] [PATCH 11/50] error: Move qemu_error & friends into their own header, Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 35/50] error: New QERR_DEVICE_MULTIPLE_BUSSES, Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 23/50] qdev: Fix -device and device_add to handle unsuitable bus gracefully, Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 14/50] error: Don't abuse qemu_error() for non-error in qbus_find(), Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 26/50] qdev: Hide "ptr" properties from users, Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 08/50] monitor: Factor monitor_set_error() out of qemu_error_internal(), Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 41/50] error: New QERR_DEVICE_INIT_FAILED, Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 31/50] error: New QERR_PROPERTY_VALUE_BAD, Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 13/50] error: Don't abuse qemu_error() for non-error in qdev_device_help(), Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 07/50] block: Simplify usb_msd_initfn() test for "can read bdrv key", Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 06/50] monitor: Separate "default monitor" and "current monitor" cleanly,
Markus Armbruster <=
- [Qemu-devel] [PATCH 40/50] error: New QERR_BUS_NO_HOTPLUG, Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 18/50] error: Infrastructure to track locations for error reporting, Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 15/50] error: Don't abuse qemu_error() for non-error in scsi_hot_add(), Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 34/50] error: New QERR_BUS_NOT_FOUND, Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 39/50] error: New QERR_BAD_BUS_FOR_DEVICE, Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 42/50] error: New QERR_NO_BUS_FOR_DEVICE, Markus Armbruster, 2010/03/04
- [Qemu-devel] [PATCH 45/50] qemu-option: Functions to convert to/from QDict, Markus Armbruster, 2010/03/04