diff options
author | Avi Kivity <avi@redhat.com> | 2009-12-20 13:54:52 +0200 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2009-12-20 13:54:52 +0200 |
commit | 643bcbd667793141d75b39a3546dda41d66ff603 (patch) | |
tree | d821818915c4bca2cd6c8b3ccef90ee44cc8fddd /monitor.c | |
parent | Merge commit '345c22aa80d1f6ddfe7898f721fd1be3bccb08f1' into stable-0.12-merge (diff) | |
parent | Update version and changelog for 0.12.1 (diff) | |
download | qemu-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.c | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -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; } |