@@ -14,7 +14,6 @@
#ifndef QAPI_QMP_DISPATCH_H
#define QAPI_QMP_DISPATCH_H
-#include "monitor/monitor.h"
#include "qemu/queue.h"
typedef void (QmpCommandFunc)(QDict *, QObject **, Error **);
@@ -41,7 +40,7 @@ typedef struct QmpCommand
typedef QTAILQ_HEAD(QmpCommandList, QmpCommand) QmpCommandList;
-void qmp_dispatch_exec(const QmpCommand *cmd, bool oob, Monitor *cur_mon,
+void qmp_dispatch_exec(const QmpCommand *cmd, bool oob, void *exec_data,
QDict *args, QObject **ret, Error **err);
void qmp_register_command(QmpCommandList *cmds, const char *name,
@@ -59,7 +58,7 @@ const char *qmp_command_name(const QmpCommand *cmd);
bool qmp_has_success_response(const QmpCommand *cmd);
QDict *qmp_error_response(Error *err);
QDict *qmp_dispatch(const QmpCommandList *cmds, QObject *request,
- bool allow_oob, Monitor *cur_mon);
+ bool allow_oob, void *exec_data);
bool qmp_is_oob(const QDict *dict);
typedef void (*qmp_cmd_callback_fn)(const QmpCommand *cmd, void *opaque);
@@ -156,9 +156,10 @@ static void do_qmp_dispatch_bh(void *opaque)
* Runs outside of coroutine context for OOB commands, but in coroutine
* context for everything else.
*/
-void qmp_dispatch_exec(const QmpCommand *cmd, bool oob, Monitor *cur_mon,
+void qmp_dispatch_exec(const QmpCommand *cmd, bool oob, void *exec_data,
QDict *args, QObject **ret, Error **errp)
{
+ Monitor *cur_mon = exec_data;
assert(!(oob && qemu_in_coroutine()));
assert(monitor_cur() == NULL);
@@ -108,7 +108,7 @@ bool qmp_is_oob(const QDict *dict)
}
QDict *qmp_dispatch(const QmpCommandList *cmds, QObject *request,
- bool allow_oob, Monitor *cur_mon)
+ bool allow_oob, void *exec_data)
{
Error *err = NULL;
bool oob;
@@ -176,7 +176,7 @@ QDict *qmp_dispatch(const QmpCommandList *cmds, QObject *request,
qobject_ref(args);
}
- qmp_dispatch_exec(cmd, oob, cur_mon, args, &ret, &err);
+ qmp_dispatch_exec(cmd, oob, exec_data, args, &ret, &err);
qobject_unref(args);
if (err) {
@@ -1,7 +1,7 @@
#include "qemu/osdep.h"
#include "qapi/qmp/dispatch.h"
-void qmp_dispatch_exec(const QmpCommand *cmd, bool oob, Monitor *cur_mon,
+void qmp_dispatch_exec(const QmpCommand *cmd, bool oob, void *exec_data,
QDict *args, QObject **ret, Error **err)
{
cmd->fn(args, ret, err);