diff options
author | Luiz Capitulino <lcapitulino@redhat.com> | 2010-02-10 23:49:47 -0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2010-02-19 15:18:16 -0600 |
commit | 97536cffbfb0b5f62b1dea50411031afa4f0cc35 (patch) | |
tree | 454106155b29868bce0624529aa2bbf9047b7a18 /monitor.c | |
parent | 98b5008081b438407bca3fc879e4c51f383c5a80 (diff) | |
download | qemu-97536cffbfb0b5f62b1dea50411031afa4f0cc35.tar.gz qemu-97536cffbfb0b5f62b1dea50411031afa4f0cc35.tar.bz2 qemu-97536cffbfb0b5f62b1dea50411031afa4f0cc35.zip |
Monitor: Introduce cmd_new_ret()
In order to implement the new error handling and debugging
mechanism for command handlers, we need to change the cmd_new()
callback to return a value.
This commit introduces cmd_new_ret(), which returns a value and
will be used only temporarily to handle the transition from
cmd_new().
That is, as soon as all command handlers are ported to cmd_new_ret(),
it will be renamed back to cmd_new() and the new error handling
and debugging mechanism will be added on top of it.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'monitor.c')
-rw-r--r-- | monitor.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -98,6 +98,7 @@ typedef struct mon_cmd_t { const char *params; const char *help; void (*user_print)(Monitor *mon, const QObject *data); + int (*cmd_new_ret)(Monitor *mon, const QDict *params, QObject **ret_data); union { void (*info)(Monitor *mon); void (*info_new)(Monitor *mon, QObject **ret_data); @@ -3801,7 +3802,11 @@ static void monitor_call_handler(Monitor *mon, const mon_cmd_t *cmd, { QObject *data = NULL; - cmd->mhandler.cmd_new(mon, params, &data); + if (cmd->cmd_new_ret) { + cmd->cmd_new_ret(mon, params, &data); + } else { + cmd->mhandler.cmd_new(mon, params, &data); + } if (is_async_return(data)) { /* |