QAPI patches for 2020-01-14

-----BEGIN PGP SIGNATURE-----
 
 iQJGBAABCAAwFiEENUvIs9frKmtoZ05fOHC0AOuRhlMFAl4dlLoSHGFybWJydUBy
 ZWRoYXQuY29tAAoJEDhwtADrkYZTKGoQAKXNP/+ezGJvczU/RVtBhSQXRXQyF+zh
 VFznrB8gL4+MkD20bZv1jhSeNHJgQn4Frarq7IfglNy8NSLOwkVWleY9QFZV+t7U
 puXbO4AfIoMyvKYDEweDaHhAkQ1lnd+lDkN8HPm83EdM9ot+sGmppwnONtJm2xoC
 2/+Ff+A7lmr9mU/+KVMgtnhdu8l/NdSJ4dk3gp0zPqcRtM9PanwBjA4ve+4asBxg
 Hec5lQlqkj09ngNtFMXTQdYvpWXXcKyBwsoJymFh6kSYA7ZACvchfvqq0SS1JQfV
 4yCBfro64ZwUeWuwD5Blzb5iwrrVURRm2ecLq9uy62xmEqX72OWpl1h2+Q2HBZoZ
 rSbo85PJ2DTGNK+xRyRF6N7E1RGlVD4tIcE0nH/+JfW1Fkf7wCGe7AR7ywXScDav
 nW9UtpwPMLYHz/jO0khYAlpfY+SGtO7JFokv7R+9Zpi9IFUziyY9Y74/EIUDE8QV
 vk/GFbGPDUg1+aZgI3Q2/iPmgXDYWZIoBNhmebI8jwNktIyCCGWL07/I6jOX8K+/
 f1njp4Bma8sFm1xoSwgJqams1SsuXdKj33V0k1Yw88RvprXBsRRMHBVtlz443/gh
 LtKGgqJMCU+uuDIJBZ7t1r/iNY+2bgsrgPVNf9AMtPoY+A0dP4FiUuGKEY3fkCAy
 h8WF8U/rkJ4/
 =iRJu
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2020-01-14' into staging

QAPI patches for 2020-01-14

# gpg: Signature made Tue 14 Jan 2020 10:15:22 GMT
# gpg:                using RSA key 354BC8B3D7EB2A6B68674E5F3870B400EB918653
# gpg:                issuer "armbru@redhat.com"
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" [full]
# gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>" [full]
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653

* remotes/armbru/tags/pull-qapi-2020-01-14:
  qapi: Simplify QAPISchemaModularCVisitor
  qapi: Fix code generation for empty modules
  qapi: Proper intermediate representation for modules
  qapi: Generate command registration stuff into separate files
  tests/Makefile.include: Fix missing test-qapi-emit-events.[ch]
  qapi: Tweak "command returns a nice type" check for clarity

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2020-01-14 16:42:27 +00:00
commit e021e6fe52
19 changed files with 144 additions and 85 deletions

View file

@ -1493,6 +1493,10 @@ $(prefix)qapi-commands.c: Command marshal/dispatch functions for each
$(prefix)qapi-commands.h: Function prototypes for the QMP commands
specified in the schema
$(prefix)qapi-init-commands.h - Command initialization prototype
$(prefix)qapi-init-commands.c - Command initialization code
Example:
$ cat qapi-generated/example-qapi-commands.h
@ -1502,11 +1506,9 @@ Example:
#define EXAMPLE_QAPI_COMMANDS_H
#include "example-qapi-types.h"
#include "qapi/qmp/dispatch.h"
UserDefOne *qmp_my_command(UserDefOneList *arg1, Error **errp);
void qmp_marshal_my_command(QDict *args, QObject **ret, Error **errp);
void example_qmp_init_marshal(QmpCommandList *cmds);
#endif /* EXAMPLE_QAPI_COMMANDS_H */
$ cat qapi-generated/example-qapi-commands.c
@ -1566,7 +1568,19 @@ Example:
visit_end_struct(v, NULL);
visit_free(v);
}
[Uninteresting stuff omitted...]
$ cat qapi-generated/example-qapi-init-commands.h
[Uninteresting stuff omitted...]
#ifndef EXAMPLE_QAPI_INIT_COMMANDS_H
#define EXAMPLE_QAPI_INIT_COMMANDS_H
#include "qapi/qmp/dispatch.h"
void example_qmp_init_marshal(QmpCommandList *cmds);
#endif /* EXAMPLE_QAPI_INIT_COMMANDS_H */
$ cat qapi-generated/example-qapi-init-commands.c
[Uninteresting stuff omitted...]
void example_qmp_init_marshal(QmpCommandList *cmds)
{
QTAILQ_INIT(cmds);
@ -1574,7 +1588,6 @@ Example:
qmp_register_command(cmds, "my-command",
qmp_marshal_my_command, QCO_NO_OPTIONS);
}
[Uninteresting stuff omitted...]
For a modular QAPI schema (see section Include directives), code for