@@ -124,6 +124,8 @@ typedef struct mon_cmd_t {
const char *args_type;
const char *params;
const char *help;
+ /* Whether this command can be run without taking BQL? */
+ bool without_bql;
void (*cmd)(Monitor *mon, const QDict *qdict);
/* @sub_table is a list of 2nd level of commands. If it does not exist,
* cmd should be used. If it exists, sub_table[?].cmd should be
@@ -3146,6 +3148,14 @@ static void handle_hmp_command(Monitor *mon, const char *cmdline)
return;
}
+ if (cmd->without_bql) {
+ /*
+ * This is similar to QMP's "without-bql". See comments in
+ * do_qmp_dispatch().
+ */
+ take_bql = false;
+ }
+
if (take_bql) {
qemu_mutex_lock_iothread();
}
Introducing new option "without_bql" for HMP commands. It works just like QMP "without-bql", but for HMP commands. Signed-off-by: Peter Xu <peterx@redhat.com> --- monitor.c | 10 ++++++++++ 1 file changed, 10 insertions(+)