mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
monitor: Use getter/setter functions for cur_mon
cur_mon really needs to be coroutine-local as soon as we move monitor command handlers to coroutines and let them yield. As a first step, just remove all direct accesses to cur_mon so that we can implement this in the getter function later. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20201005155855.256490-4-kwolf@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
87e6f4a4d6
commit
947e47448d
21 changed files with 73 additions and 46 deletions
|
@ -66,13 +66,31 @@ MonitorList mon_list;
|
|||
int mon_refcount;
|
||||
static bool monitor_destroyed;
|
||||
|
||||
__thread Monitor *cur_mon;
|
||||
static __thread Monitor *cur_monitor;
|
||||
|
||||
Monitor *monitor_cur(void)
|
||||
{
|
||||
return cur_monitor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a new current monitor and returns the old one.
|
||||
*/
|
||||
Monitor *monitor_set_cur(Monitor *mon)
|
||||
{
|
||||
Monitor *old_monitor = cur_monitor;
|
||||
|
||||
cur_monitor = mon;
|
||||
return old_monitor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the current monitor, if any, a QMP monitor?
|
||||
*/
|
||||
bool monitor_cur_is_qmp(void)
|
||||
{
|
||||
Monitor *cur_mon = monitor_cur();
|
||||
|
||||
return cur_mon && monitor_is_qmp(cur_mon);
|
||||
}
|
||||
|
||||
|
@ -209,6 +227,8 @@ int monitor_printf(Monitor *mon, const char *fmt, ...)
|
|||
*/
|
||||
int error_vprintf(const char *fmt, va_list ap)
|
||||
{
|
||||
Monitor *cur_mon = monitor_cur();
|
||||
|
||||
if (cur_mon && !monitor_cur_is_qmp()) {
|
||||
return monitor_vprintf(cur_mon, fmt, ap);
|
||||
}
|
||||
|
@ -217,6 +237,8 @@ int error_vprintf(const char *fmt, va_list ap)
|
|||
|
||||
int error_vprintf_unless_qmp(const char *fmt, va_list ap)
|
||||
{
|
||||
Monitor *cur_mon = monitor_cur();
|
||||
|
||||
if (!cur_mon) {
|
||||
return vfprintf(stderr, fmt, ap);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue