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
This commit is contained in:
aliguori 2008-10-06 13:52:44 +00:00
parent 1ed1a78738
commit d8f4460989
2 changed files with 20 additions and 1 deletions

View File

@ -175,6 +175,8 @@ void term_flush(void);
void term_print_help(void);
void monitor_readline(const char *prompt, int is_password,
char *buf, int buf_size);
void monitor_suspend(void);
void monitor_resume(void);
/* readline.c */
typedef void ReadLineFunc(void *opaque, const char *str);

View File

@ -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)