diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2017-03-06 10:18:33 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2017-03-06 10:18:33 +0000 |
commit | fbddc2e5608eb655493253d080598375db61a748 (patch) | |
tree | 9cf6963dda739b319ac1aa31cd433e69bbd959e9 /scripts | |
parent | 17783ac828adc694d986698d2d7014aedfeb48c6 (diff) | |
parent | aa3a982e674b09ae32502940f93ba98b3a8ad50e (diff) | |
download | qemu-fbddc2e5608eb655493253d080598375db61a748.zip qemu-fbddc2e5608eb655493253d080598375db61a748.tar.gz qemu-fbddc2e5608eb655493253d080598375db61a748.tar.bz2 |
Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2017-02-28' into staging
QAPI patches for 2017-02-28
# gpg: Signature made Sun 05 Mar 2017 08:21:51 GMT
# gpg: using RSA key 0x3870B400EB918653
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>"
# gpg: aka "Markus Armbruster <armbru@pond.sub.org>"
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867 4E5F 3870 B400 EB91 8653
* remotes/armbru/tags/pull-qapi-2017-02-28: (27 commits)
qapi: Improve qobject visitor documentation
qapi: Fix object input visit beyond end of list
tests: Cover input visit beyond end of list
qapi: Make input visitors detect unvisited list tails
test-qobject-input-visitor: Cover missing nested struct member
tests: Cover partial input visit of list
test-string-input-visitor: Improve list coverage
test-string-input-visitor: Tear down existing test automatically
tests-qobject-input-strict: Merge into test-qobject-input-visitor
qapi: Drop unused non-strict qobject input visitor
test-qobject-input-visitor: Use strict visitor
qom: Make object_property_set_qobject()'s input visitor strict
qapi: Make string input and opts visitor require non-null input
qapi: Drop string input visitor method optional()
qapi: Improve qobject input visitor error reporting
qapi: Make QObject input visitor set *list reliably
qapi: Clean up after commit 3d344c2
qapi: Improve a QObject input visitor error message
qmp: Eliminate silly QERR_QMP_* macros
qmp: Drop duplicated QMP command object checks
...
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/qapi-commands.py | 19 | ||||
-rw-r--r-- | scripts/qapi-introspect.py | 2 | ||||
-rw-r--r-- | scripts/qapi-visit.py | 3 |
3 files changed, 15 insertions, 9 deletions
diff --git a/scripts/qapi-commands.py b/scripts/qapi-commands.py index 09e8467..0c05449 100644 --- a/scripts/qapi-commands.py +++ b/scripts/qapi-commands.py @@ -130,7 +130,7 @@ def gen_marshal(name, arg_type, boxed, ret_type): push_indent() ret += mcgen(''' - v = qobject_input_visitor_new(QOBJECT(args), true); + v = qobject_input_visitor_new(QOBJECT(args)); visit_start_struct(v, NULL, NULL, 0, &err); if (err) { goto out; @@ -198,7 +198,8 @@ def gen_register_command(name, success_response): options = 'QCO_NO_SUCCESS_RESP' ret = mcgen(''' - qmp_register_command("%(name)s", qmp_marshal_%(c_name)s, %(opts)s); + qmp_register_command(cmds, "%(name)s", + qmp_marshal_%(c_name)s, %(opts)s); ''', name=name, c_name=c_name(name), opts=options) @@ -208,14 +209,15 @@ def gen_register_command(name, success_response): def gen_registry(registry): ret = mcgen(''' -static void qmp_init_marshal(void) +void %(c_prefix)sqmp_init_marshal(QmpCommandList *cmds) { -''') + QTAILQ_INIT(cmds); + +''', + c_prefix=c_name(prefix, protect=False)) ret += registry ret += mcgen(''' } - -qapi_init(qmp_init_marshal); ''') return ret @@ -291,7 +293,6 @@ fdef.write(mcgen(''' #include "qemu-common.h" #include "qemu/module.h" #include "qapi/qmp/types.h" -#include "qapi/qmp/dispatch.h" #include "qapi/visitor.h" #include "qapi/qobject-output-visitor.h" #include "qapi/qobject-input-visitor.h" @@ -306,10 +307,12 @@ fdef.write(mcgen(''' fdecl.write(mcgen(''' #include "%(prefix)sqapi-types.h" #include "qapi/qmp/qdict.h" +#include "qapi/qmp/dispatch.h" #include "qapi/error.h" +void %(c_prefix)sqmp_init_marshal(QmpCommandList *cmds); ''', - prefix=prefix)) + prefix=prefix, c_prefix=c_name(prefix, protect=False))) schema = QAPISchema(input_file) gen = QAPISchemaGenCommandVisitor() diff --git a/scripts/qapi-introspect.py b/scripts/qapi-introspect.py index 541644e..fb72c61 100644 --- a/scripts/qapi-introspect.py +++ b/scripts/qapi-introspect.py @@ -64,7 +64,7 @@ class QAPISchemaGenIntrospectVisitor(QAPISchemaVisitor): # generate C # TODO can generate awfully long lines jsons.extend(self._jsons) - name = prefix + 'qmp_schema_json' + name = c_name(prefix, protect=False) + 'qmp_schema_json' self.decl = mcgen(''' extern const char %(c_name)s[]; ''', diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py index 96f2491..330b9f3 100644 --- a/scripts/qapi-visit.py +++ b/scripts/qapi-visit.py @@ -133,6 +133,9 @@ void visit_type_%(c_name)s(Visitor *v, const char *name, %(c_name)s **obj, Error } } + if (!err) { + visit_check_list(v, &err); + } visit_end_list(v, (void **)obj); if (err && visit_is_input(v)) { qapi_free_%(c_name)s(*obj); |