Commit a0430dd8 authored by Peter Maydell's avatar Peter Maydell
Browse files

Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2019-02-18' into staging



QAPI patches for 2019-02-18

# gpg: Signature made Mon 18 Feb 2019 13:44:30 GMT
# gpg:                using RSA key 3870B400EB918653
# 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-2019-02-18:
  qapi: move RTC_CHANGE to the target schema
  qmp: Deprecate query-events in favor of query-qmp-schema
  Revert "qapi-events: add 'if' condition to implicit event enum"
  qapi: remove qmp_unregister_command()
  qapi: make query-cpu-definitions depend on specific targets
  qapi: make query-cpu-model-expansion depend on s390 or x86
  qapi: make query-gic-capabilities depend on TARGET_ARM
  target.json: add a note about query-cpu* not being s390x-specific
  qapi: make s390 commands depend on TARGET_S390X
  qapi: make rtc-reset-reinjection and SEV depend on TARGET_I386
  qapi: New module target.json
  build: Deal with all of QAPI's .o in qapi/Makefile.objs
  build-sys: move qmp-introspect per target
  qapi: Generate QAPIEvent stuff into separate files
  qapi: Prepare for system modules other than 'builtin'
  qapi: Clean up modular built-in code generation a bit
  qapi: Fix up documentation for recent commit a9529100
  qapi: Belatedly document modular code generation

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parents 1c5d9d8f 183e4281
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
/qapi/qapi-builtin-visit.[ch]
/qapi/qapi-commands-*.[ch]
/qapi/qapi-commands.[ch]
/qapi/qapi-emit-events.[ch]
/qapi/qapi-events-*.[ch]
/qapi/qapi-events.[ch]
/qapi/qapi-introspect.[ch]
+1 −1
Original line number Diff line number Diff line
@@ -89,7 +89,6 @@ include $(SRC_PATH)/rules.mak

GENERATED_FILES = qemu-version.h config-host.h qemu-options.def

#see Makefile.objs for the definition of QAPI_MODULES
GENERATED_QAPI_FILES = qapi/qapi-builtin-types.h qapi/qapi-builtin-types.c
GENERATED_QAPI_FILES += qapi/qapi-types.h qapi/qapi-types.c
GENERATED_QAPI_FILES += $(QAPI_MODULES:%=qapi/qapi-types-%.h)
@@ -101,6 +100,7 @@ GENERATED_QAPI_FILES += $(QAPI_MODULES:%=qapi/qapi-visit-%.c)
GENERATED_QAPI_FILES += qapi/qapi-commands.h qapi/qapi-commands.c
GENERATED_QAPI_FILES += $(QAPI_MODULES:%=qapi/qapi-commands-%.h)
GENERATED_QAPI_FILES += $(QAPI_MODULES:%=qapi/qapi-commands-%.c)
GENERATED_QAPI_FILES += qapi/qapi-emit-events.h qapi/qapi-emit-events.c
GENERATED_QAPI_FILES += qapi/qapi-events.h qapi/qapi-events.c
GENERATED_QAPI_FILES += $(QAPI_MODULES:%=qapi/qapi-events-%.h)
GENERATED_QAPI_FILES += $(QAPI_MODULES:%=qapi/qapi-events-%.c)
+1 −16
Original line number Diff line number Diff line
QAPI_MODULES = block-core block char common crypto introspect job migration
QAPI_MODULES += misc net rdma rocker run-state sockets tpm trace transaction
QAPI_MODULES += ui

#######################################################################
# Common libraries for tools and emulators
stub-obj-y = stubs/ crypto/
util-obj-y = util/ qobject/ qapi/
util-obj-y += qapi/qapi-builtin-types.o
util-obj-y += qapi/qapi-types.o
util-obj-y += $(QAPI_MODULES:%=qapi/qapi-types-%.o)
util-obj-y += qapi/qapi-builtin-visit.o
util-obj-y += qapi/qapi-visit.o
util-obj-y += $(QAPI_MODULES:%=qapi/qapi-visit-%.o)
util-obj-y += qapi/qapi-events.o
util-obj-y += $(QAPI_MODULES:%=qapi/qapi-events-%.o)
util-obj-y += qapi/qapi-introspect.o

chardev-obj-y = chardev/
slirp-obj-$(CONFIG_SLIRP) = slirp/
@@ -92,10 +79,8 @@ common-obj-$(CONFIG_FDT) += device_tree.o
######################################################################
# qapi

common-obj-y += qapi/qapi-commands.o
common-obj-y += $(QAPI_MODULES:%=qapi/qapi-commands-%.o)
common-obj-y += qapi/qapi-introspect.o
common-obj-y += qmp.o hmp.o
common-obj-y += qapi/
endif

#######################################################################
+1 −0
Original line number Diff line number Diff line
@@ -148,6 +148,7 @@ ifdef CONFIG_SOFTMMU
obj-y += arch_init.o cpus.o monitor.o gdbstub.o balloon.o ioport.o numa.o
obj-y += qtest.o
obj-y += hw/
obj-y += qapi/
obj-y += memory.o
obj-y += memory_mapping.o
obj-y += dump.o
+69 −13
Original line number Diff line number Diff line
@@ -1113,6 +1113,19 @@ Example:

[Uninteresting stuff omitted...]

For a modular QAPI schema (see section Include directives), code for
each sub-module SUBDIR/SUBMODULE.json is actually generated into

SUBDIR/$(prefix)qapi-types-SUBMODULE.h
SUBDIR/$(prefix)qapi-types-SUBMODULE.c

If qapi-gen.py is run with option --builtins, additional files are
created:

qapi-builtin-types.h - C types corresponding to built-in types

qapi-builtin-types.c - Cleanup functions for the above C types

=== Code generated for visiting QAPI types ===

These are the visitor functions used to walk through and convert
@@ -1244,6 +1257,19 @@ Example:

[Uninteresting stuff omitted...]

For a modular QAPI schema (see section Include directives), code for
each sub-module SUBDIR/SUBMODULE.json is actually generated into

SUBDIR/$(prefix)qapi-visit-SUBMODULE.h
SUBDIR/$(prefix)qapi-visit-SUBMODULE.c

If qapi-gen.py is run with option --builtins, additional files are
created:

qapi-builtin-visit.h - Visitor functions for built-in types

qapi-builtin-visit.c - Declarations for these visitor functions

=== Code generated for commands ===

These are the marshaling/dispatch functions for the commands defined
@@ -1342,6 +1368,12 @@ Example:

[Uninteresting stuff omitted...]

For a modular QAPI schema (see section Include directives), code for
each sub-module SUBDIR/SUBMODULE.json is actually generated into

SUBDIR/$(prefix)qapi-commands-SUBMODULE.h
SUBDIR/$(prefix)qapi-commands-SUBMODULE.c

=== Code generated for events ===

This is the code related to events defined in the schema, providing
@@ -1349,11 +1381,15 @@ qapi_event_send_EVENT().

The following files are created:

$(prefix)qapi-events.h - Function prototypes for each event type, plus an
                        enumeration of all event names
$(prefix)qapi-events.h - Function prototypes for each event type

$(prefix)qapi-events.c - Implementation of functions to send an event

$(prefix)qapi-emit-events.h - Enumeration of all event names, and
                              common event code declarations

$(prefix)qapi-emit-events.c - Common event code definitions

Example:

    $ cat qapi-generated/example-qapi-events.h
@@ -1365,19 +1401,8 @@ Example:
    #include "qapi/util.h"
    #include "example-qapi-types.h"


    void qapi_event_send_my_event(void);

    typedef enum example_QAPIEvent {
        EXAMPLE_QAPI_EVENT_MY_EVENT,
        EXAMPLE_QAPI_EVENT__MAX,
    } example_QAPIEvent;

    #define example_QAPIEvent_str(val) \
        qapi_enum_lookup(&example_QAPIEvent_lookup, (val))

    extern const QEnumLookup example_QAPIEvent_lookup;

    #endif /* EXAMPLE_QAPI_EVENTS_H */
    $ cat qapi-generated/example-qapi-events.c
[Uninteresting stuff omitted...]
@@ -1393,6 +1418,31 @@ Example:
        qobject_unref(qmp);
    }

[Uninteresting stuff omitted...]
    $ cat qapi-generated/example-qapi-emit-events.h
[Uninteresting stuff omitted...]

    #ifndef EXAMPLE_QAPI_EMIT_EVENTS_H
    #define EXAMPLE_QAPI_EMIT_EVENTS_H

    #include "qapi/util.h"

    typedef enum example_QAPIEvent {
        EXAMPLE_QAPI_EVENT_MY_EVENT,
        EXAMPLE_QAPI_EVENT__MAX,
    } example_QAPIEvent;

    #define example_QAPIEvent_str(val) \
        qapi_enum_lookup(&example_QAPIEvent_lookup, (val))

    extern const QEnumLookup example_QAPIEvent_lookup;

    void example_qapi_event_emit(example_QAPIEvent event, QDict *qdict);

    #endif /* EXAMPLE_QAPI_EMIT_EVENTS_H */
    $ cat qapi-generated/example-qapi-emit-events.c
[Uninteresting stuff omitted...]

    const QEnumLookup example_QAPIEvent_lookup = {
        .array = (const char *const[]) {
            [EXAMPLE_QAPI_EVENT_MY_EVENT] = "MY_EVENT",
@@ -1402,6 +1452,12 @@ Example:

[Uninteresting stuff omitted...]

For a modular QAPI schema (see section Include directives), code for
each sub-module SUBDIR/SUBMODULE.json is actually generated into

SUBDIR/$(prefix)qapi-events-SUBMODULE.h
SUBDIR/$(prefix)qapi-events-SUBMODULE.c

=== Code generated for introspection ===

The following files are created:
Loading