diff options
author | Greg Bellows <greg.bellows@linaro.org> | 2014-11-18 17:06:18 -0600 |
---|---|---|
committer | Greg Bellows <greg.bellows@linaro.org> | 2015-01-15 16:19:02 -0600 |
commit | 4b742fc8b93ce10b43b0bd29ec4e37aeea2cf726 (patch) | |
tree | 27e8bab308a03ba938dac28faa937620b828427f | |
parent | 123ac96fdad3f0682f526a04c00045377e5c29ef (diff) |
android-console: Add avd stop command
Add Android emulator console "avd stop" commmand and associated help messages.
Signed-off-by: Greg Bellows <greg.bellows@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
-rw-r--r-- | android-commands.h | 7 | ||||
-rw-r--r-- | android-console.c | 21 | ||||
-rw-r--r-- | android-console.h | 1 |
3 files changed, 28 insertions, 1 deletions
diff --git a/android-commands.h b/android-commands.h index 99dd54200..6057afc18 100644 --- a/android-commands.h +++ b/android-commands.h @@ -105,6 +105,13 @@ static mon_cmd_t android_event_cmds[] = { static mon_cmd_t android_avd_cmds[] = { { + .name = "stop", + .args_type = "", + .params = "", + .help = "stop the virtual device", + .mhandler.cmd = android_console_avd_stop, + }, + { .name = "status", .args_type = "", .params = "", diff --git a/android-console.c b/android-console.c index 029dea78a..37030699e 100644 --- a/android-console.c +++ b/android-console.c @@ -24,6 +24,7 @@ #include "hw/misc/goldfish_battery.h" #include "hw/input/goldfish_events.h" #include "sysemu/sysemu.h" +#include "hmp.h" typedef struct { int is_udp; @@ -730,6 +731,7 @@ void android_console_event(Monitor *mon, const QDict *qdict) enum { CMD_AVD, + CMD_AVD_STOP, CMD_AVD_STATUS, }; @@ -744,10 +746,25 @@ static const char *avd_help[] = { " avd status query virtual device status\n" " avd name query virtual device name\n" " avd snapshot state snapshot commands\n", + /* CMD_AVD_STOP */ + "'avd stop' stops the virtual device immediately, use 'avd start' to " + "continue execution", /* CMD_AVD_STATUS */ "'avd status' will indicate whether the virtual device is running or not", }; +void android_console_avd_stop(Monitor *mon, const QDict *qdict) +{ + if (!runstate_is_running()) { + monitor_printf(mon, "KO: virtual device already stopped\n"); + return; + } + + qmp_stop(NULL); + + monitor_printf(mon, "OK\n"); +} + void android_console_avd_status(Monitor *mon, const QDict *qdict) { monitor_printf(mon, "virtual device is %s\n", @@ -765,7 +782,9 @@ void android_console_avd(Monitor *mon, const QDict *qdict) int cmd = CMD_AVD; if (helptext) { - if (strstr(helptext, "status")) { + if (strstr(helptext, "stop")) { + cmd = CMD_AVD_STOP; + } else if (strstr(helptext, "status")) { cmd = CMD_AVD_STATUS; } } diff --git a/android-console.h b/android-console.h index 49b9e907c..9f9d9cb44 100644 --- a/android-console.h +++ b/android-console.h @@ -42,6 +42,7 @@ void android_console_event_send(Monitor *mon, const QDict *qdict); void android_console_event_text(Monitor *mon, const QDict *qdict); void android_console_event(Monitor *mon, const QDict *qdict); +void android_console_avd_stop(Monitor *mon, const QDict *qdict); void android_console_avd_status(Monitor *mon, const QDict *qdict); void android_console_avd(Monitor *mon, const QDict *qdict); |