diff options
author | aliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-10-06 13:52:44 +0000 |
---|---|---|
committer | aliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-10-06 13:52:44 +0000 |
commit | d8f4460989d6d6749ff649f1c5439de38c2dfeab (patch) | |
tree | 4e3f50d4ec3412fc1768056bca1379af39a72771 /monitor.c | |
parent | 1ed1a7873882b75d1c857a0b3d0415be70d886ef (diff) | |
download | qemu-d8f4460989d6d6749ff649f1c5439de38c2dfeab.zip qemu-d8f4460989d6d6749ff649f1c5439de38c2dfeab.tar.gz qemu-d8f4460989d6d6749ff649f1c5439de38c2dfeab.tar.bz2 |
Allow the monitor to be suspended during non-blocking op
Live migration happens in the background, but it is useful to make the monitor
command appear as if it's blocking. This allows a management tool to
immediately know when the live migration has completed without having to poll
the migration status.
This patch allows the monitor to be suspended from a monitor callback which
will prevent new monitor commands from being executed.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5431 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'monitor.c')
-rw-r--r-- | monitor.c | 19 |
1 files changed, 18 insertions, 1 deletions
@@ -2694,10 +2694,27 @@ static void term_read(void *opaque, const uint8_t *buf, int size) readline_handle_byte(buf[i]); } +static int monitor_suspended; + static void monitor_handle_command1(void *opaque, const char *cmdline) { monitor_handle_command(cmdline); - monitor_start_input(); + if (!monitor_suspended) + monitor_start_input(); + else + monitor_suspended = 2; +} + +void monitor_suspend(void) +{ + monitor_suspended = 1; +} + +void monitor_resume(void) +{ + if (monitor_suspended == 2) + monitor_start_input(); + monitor_suspended = 0; } static void monitor_start_input(void) |