summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2016-09-12 13:19:01 +0400
committerMarkus Armbruster <armbru@redhat.com>2016-09-19 17:32:21 +0200
commit60b03e4e6ac6eee3acac3c3173180f43adc6ddd5 (patch)
treec54fa1eb91fb4219f7f7017e6fc81143cd2a5c2d
parentedcfaefe07e242f204d476a8f2290895593eb09f (diff)
downloadqemu-60b03e4e6ac6eee3acac3c3173180f43adc6ddd5.tar.gz
qemu-60b03e4e6ac6eee3acac3c3173180f43adc6ddd5.tar.bz2
qemu-60b03e4e6ac6eee3acac3c3173180f43adc6ddd5.zip
qapi: Support unregistering QMP commands
Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20160912091913.15831-7-marcandre.lureau@redhat.com>
-rw-r--r--include/qapi/qmp/dispatch.h1
-rw-r--r--qapi/qmp-registry.c8
2 files changed, 9 insertions, 0 deletions
diff --git a/include/qapi/qmp/dispatch.h b/include/qapi/qmp/dispatch.h
index 48c11b66d1..57651ea955 100644
--- a/include/qapi/qmp/dispatch.h
+++ b/include/qapi/qmp/dispatch.h
@@ -36,6 +36,7 @@ typedef struct QmpCommand
void qmp_register_command(const char *name, QmpCommandFunc *fn,
QmpCommandOptions options);
+void qmp_unregister_command(const char *name);
QmpCommand *qmp_find_command(const char *name);
QObject *qmp_dispatch(QObject *request);
void qmp_disable_command(const char *name);
diff --git a/qapi/qmp-registry.c b/qapi/qmp-registry.c
index 68b24c98b0..e8053686f3 100644
--- a/qapi/qmp-registry.c
+++ b/qapi/qmp-registry.c
@@ -30,6 +30,14 @@ void qmp_register_command(const char *name, QmpCommandFunc *fn,
QTAILQ_INSERT_TAIL(&qmp_commands, cmd, node);
}
+void qmp_unregister_command(const char *name)
+{
+ QmpCommand *cmd = qmp_find_command(name);
+
+ QTAILQ_REMOVE(&qmp_commands, cmd, node);
+ g_free(cmd);
+}
+
QmpCommand *qmp_find_command(const char *name)
{
QmpCommand *cmd;