xref: /openbmc/qemu/qapi/qmp-registry.c (revision 7c6da3de)
1 /*
2  * Core Definitions for QAPI/QMP Dispatch
3  *
4  * Copyright IBM, Corp. 2011
5  *
6  * Authors:
7  *  Anthony Liguori   <aliguori@us.ibm.com>
8  *  Michael Roth      <mdroth@us.ibm.com>
9  *
10  * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
11  * See the COPYING.LIB file in the top-level directory.
12  *
13  */
14 
15 #include "qapi/qmp-core.h"
16 
17 static QTAILQ_HEAD(, QmpCommand) qmp_commands =
18     QTAILQ_HEAD_INITIALIZER(qmp_commands);
19 
20 void qmp_register_command(const char *name, QmpCommandFunc *fn)
21 {
22     QmpCommand *cmd = g_malloc0(sizeof(*cmd));
23 
24     cmd->name = name;
25     cmd->type = QCT_NORMAL;
26     cmd->fn = fn;
27     QTAILQ_INSERT_TAIL(&qmp_commands, cmd, node);
28 }
29 
30 QmpCommand *qmp_find_command(const char *name)
31 {
32     QmpCommand *i;
33 
34     QTAILQ_FOREACH(i, &qmp_commands, node) {
35         if (strcmp(i->name, name) == 0) {
36             return i;
37         }
38     }
39     return NULL;
40 }
41