summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2009-12-20 13:54:52 +0200
committerAvi Kivity <avi@redhat.com>2009-12-20 13:54:52 +0200
commit643bcbd667793141d75b39a3546dda41d66ff603 (patch)
treed821818915c4bca2cd6c8b3ccef90ee44cc8fddd /monitor.c
parentMerge commit '345c22aa80d1f6ddfe7898f721fd1be3bccb08f1' into stable-0.12-merge (diff)
parentUpdate version and changelog for 0.12.1 (diff)
downloadqemu-kvm-643bcbd667793141d75b39a3546dda41d66ff603.tar.gz
qemu-kvm-643bcbd667793141d75b39a3546dda41d66ff603.tar.bz2
qemu-kvm-643bcbd667793141d75b39a3546dda41d66ff603.zip
Merge commit 'fe1b69708c72b163d3acdf2bb012e169d2d3dda0' into stable-0.12-merge
* commit 'fe1b69708c72b163d3acdf2bb012e169d2d3dda0': Update version and changelog for 0.12.1 Multiboot support: Fix rom_copy roms: allow roms to be loaded at address 0 Update for 0.12.0 release Update to SeaBIOS 0.5.0 Revert "monitor: Convert do_migrate_set_speed() to QObject" e1000: Don't muck with PCI commmand register monitor: do_balloon(): Use 'M' argument type monitor: Introduce 'M' argument type QMP: Update spec file QMP: Update README file QMP: Assure that returned data is a QDict QMP: Return an empty dict by default QMP: Only handle converted commands Update SeaBIOS to include PCI based option rom loading Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'monitor.c')
-rw-r--r--monitor.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/monitor.c b/monitor.c
index f495da149..5a9fae642 100644
--- a/monitor.c
+++ b/monitor.c
@@ -286,10 +286,12 @@ static void monitor_protocol_emitter(Monitor *mon, QObject *data)
if (!monitor_has_error(mon)) {
/* success response */
if (data) {
+ assert(qobject_type(data) == QTYPE_QDICT);
qobject_incref(data);
qdict_put_obj(qmp, "return", data);
} else {
- qdict_put(qmp, "return", qstring_from_str("OK"));
+ /* return an empty QDict by default */
+ qdict_put(qmp, "return", qdict_new());
}
} else {
/* error response */
@@ -2114,8 +2116,7 @@ static void do_balloon(Monitor *mon, const QDict *qdict, QObject **ret_data)
{
if (balloon_get_value()) {
/* ballooning is active */
- ram_addr_t value = qdict_get_int(qdict, "value");
- qemu_balloon(value << 20);
+ qemu_balloon(qdict_get_int(qdict, "value"));
}
}
@@ -3532,6 +3533,7 @@ static const mon_cmd_t *monitor_parse_command(Monitor *mon,
break;
case 'i':
case 'l':
+ case 'M':
{
int64_t val;
@@ -3562,6 +3564,8 @@ static const mon_cmd_t *monitor_parse_command(Monitor *mon,
monitor_printf(mon, "\'%s\' has failed: ", cmdname);
monitor_printf(mon, "integer is for 32-bit values\n");
goto fail;
+ } else if (c == 'M') {
+ val <<= 20;
}
qdict_put(qdict, key, qint_from_int(val));
}
@@ -3966,6 +3970,7 @@ static int check_arg(const CmdArgs *cmd_args, QDict *args)
}
case 'i':
case 'l':
+ case 'M':
if (qobject_type(value) != QTYPE_QINT) {
qemu_error_new(QERR_INVALID_PARAMETER_TYPE, name, "int");
return -1;
@@ -4103,7 +4108,7 @@ static void handle_qmp_command(JSONMessageParser *parser, QList *tokens)
qobject_from_jsonf("{ 'item': %s }", info_item));
} else {
cmd = monitor_find_command(cmd_name);
- if (!cmd) {
+ if (!cmd || !monitor_handler_ported(cmd)) {
qemu_error_new(QERR_COMMAND_NOT_FOUND, cmd_name);
goto err_input;
}