summaryrefslogtreecommitdiff
path: root/monitor.c
diff options
context:
space:
mode:
authorLuiz Capitulino <lcapitulino@redhat.com>2010-02-10 23:49:47 -0200
committerAnthony Liguori <aliguori@us.ibm.com>2010-02-19 15:18:16 -0600
commit97536cffbfb0b5f62b1dea50411031afa4f0cc35 (patch)
tree454106155b29868bce0624529aa2bbf9047b7a18 /monitor.c
parent98b5008081b438407bca3fc879e4c51f383c5a80 (diff)
downloadqemu-97536cffbfb0b5f62b1dea50411031afa4f0cc35.tar.gz
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.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/monitor.c b/monitor.c
index ae125b8230..63c62fb3ae 100644
--- a/monitor.c
+++ b/monitor.c
@@ -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)) {
/*