aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Bellows <greg.bellows@linaro.org>2014-11-18 17:06:18 -0600
committerGreg Bellows <greg.bellows@linaro.org>2015-01-15 16:19:02 -0600
commit4b742fc8b93ce10b43b0bd29ec4e37aeea2cf726 (patch)
tree27e8bab308a03ba938dac28faa937620b828427f
parent123ac96fdad3f0682f526a04c00045377e5c29ef (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.h7
-rw-r--r--android-console.c21
-rw-r--r--android-console.h1
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);