aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/devel/qapi-code-gen.txt140
-rw-r--r--docs/interop/live-block-operations.rst4
-rw-r--r--docs/virtio-balloon-stats.txt6
3 files changed, 110 insertions, 40 deletions
diff --git a/docs/devel/qapi-code-gen.txt b/docs/devel/qapi-code-gen.txt
index c2e11465f0..53eaf01f34 100644
--- a/docs/devel/qapi-code-gen.txt
+++ b/docs/devel/qapi-code-gen.txt
@@ -1035,7 +1035,7 @@ Example:
#ifndef EXAMPLE_QAPI_TYPES_H
#define EXAMPLE_QAPI_TYPES_H
-[Built-in types omitted...]
+ #include "qapi/qapi-builtin-types.h"
typedef struct UserDefOne UserDefOne;
@@ -1062,7 +1062,7 @@ Example:
UserDefOneList *arg1;
};
- #endif
+ #endif /* EXAMPLE_QAPI_TYPES_H */
$ cat qapi-generated/example-qapi-types.c
[Uninteresting stuff omitted...]
@@ -1092,6 +1092,8 @@ Example:
visit_free(v);
}
+[Uninteresting stuff omitted...]
+
=== Code generated for visiting QAPI types ===
These are the visitor functions used to walk through and convert
@@ -1118,7 +1120,9 @@ Example:
#ifndef EXAMPLE_QAPI_VISIT_H
#define EXAMPLE_QAPI_VISIT_H
-[Visitors for built-in types omitted...]
+ #include "qapi/qapi-builtin-visit.h"
+ #include "example-qapi-types.h"
+
void visit_type_UserDefOne_members(Visitor *v, UserDefOne *obj, Error **errp);
void visit_type_UserDefOne(Visitor *v, const char *name, UserDefOne **obj, Error **errp);
@@ -1126,7 +1130,7 @@ Example:
void visit_type_q_obj_my_command_arg_members(Visitor *v, q_obj_my_command_arg *obj, Error **errp);
- #endif
+ #endif /* EXAMPLE_QAPI_VISIT_H */
$ cat qapi-generated/example-qapi-visit.c
[Uninteresting stuff omitted...]
@@ -1219,6 +1223,8 @@ Example:
error_propagate(errp, err);
}
+[Uninteresting stuff omitted...]
+
=== Code generated for commands ===
These are the marshaling/dispatch functions for the commands defined
@@ -1238,18 +1244,17 @@ Example:
$ cat qapi-generated/example-qapi-commands.h
[Uninteresting stuff omitted...]
- #ifndef EXAMPLE_QMP_COMMANDS_H
- #define EXAMPLE_QMP_COMMANDS_H
+ #ifndef EXAMPLE_QAPI_COMMANDS_H
+ #define EXAMPLE_QAPI_COMMANDS_H
#include "example-qapi-types.h"
- #include "qapi/qmp/qdict.h"
#include "qapi/qmp/dispatch.h"
- void example_qmp_init_marshal(QmpCommandList *cmds);
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
+ #endif /* EXAMPLE_QAPI_COMMANDS_H */
$ cat qapi-generated/example-qapi-commands.c
[Uninteresting stuff omitted...]
@@ -1316,6 +1321,8 @@ Example:
qmp_marshal_my_command, QCO_NO_OPTIONS);
}
+[Uninteresting stuff omitted...]
+
=== Code generated for events ===
This is the code related to events defined in the schema, providing
@@ -1333,14 +1340,14 @@ Example:
$ cat qapi-generated/example-qapi-events.h
[Uninteresting stuff omitted...]
- #ifndef EXAMPLE_QAPI_EVENT_H
- #define EXAMPLE_QAPI_EVENT_H
+ #ifndef EXAMPLE_QAPI_EVENTS_H
+ #define EXAMPLE_QAPI_EVENTS_H
- #include "qapi/qmp/qdict.h"
+ #include "qapi/util.h"
#include "example-qapi-types.h"
- void qapi_event_send_my_event(Error **errp);
+ void qapi_event_send_my_event(void);
typedef enum example_QAPIEvent {
EXAMPLE_QAPI_EVENT_MY_EVENT = 0,
@@ -1348,18 +1355,17 @@ Example:
} example_QAPIEvent;
#define example_QAPIEvent_str(val) \
- qapi_enum_lookup(example_QAPIEvent_lookup, (val))
+ qapi_enum_lookup(&example_QAPIEvent_lookup, (val))
- extern const char *const example_QAPIEvent_lookup[];
+ extern const QEnumLookup example_QAPIEvent_lookup;
- #endif
+ #endif /* EXAMPLE_QAPI_EVENTS_H */
$ cat qapi-generated/example-qapi-events.c
[Uninteresting stuff omitted...]
- void qapi_event_send_my_event(Error **errp)
+ void qapi_event_send_my_event(void)
{
QDict *qmp;
- Error *err = NULL;
QMPEventFuncEmit emit;
emit = qmp_event_get_func_emit();
@@ -1369,9 +1375,8 @@ Example:
qmp = qmp_event_build_dict("MY_EVENT");
- emit(EXAMPLE_QAPI_EVENT_MY_EVENT, qmp, &err);
+ emit(EXAMPLE_QAPI_EVENT_MY_EVENT, qmp);
- error_propagate(errp, err);
qobject_unref(qmp);
}
@@ -1382,6 +1387,8 @@ Example:
.size = EXAMPLE_QAPI_EVENT__MAX
};
+[Uninteresting stuff omitted...]
+
=== Code generated for introspection ===
The following files are created:
@@ -1396,30 +1403,93 @@ Example:
$ cat qapi-generated/example-qapi-introspect.h
[Uninteresting stuff omitted...]
- #ifndef EXAMPLE_QMP_INTROSPECT_H
- #define EXAMPLE_QMP_INTROSPECT_H
+ #ifndef EXAMPLE_QAPI_INTROSPECT_H
+ #define EXAMPLE_QAPI_INTROSPECT_H
- extern const QLitObject qmp_schema_qlit;
+ #include "qapi/qmp/qlit.h"
- #endif
+ extern const QLitObject example_qmp_schema_qlit;
+
+ #endif /* EXAMPLE_QAPI_INTROSPECT_H */
$ cat qapi-generated/example-qapi-introspect.c
[Uninteresting stuff omitted...]
const QLitObject example_qmp_schema_qlit = QLIT_QLIST(((QLitObject[]) {
QLIT_QDICT(((QLitDictEntry[]) {
- { "arg-type", QLIT_QSTR("0") },
- { "meta-type", QLIT_QSTR("event") },
- { "name", QLIT_QSTR("Event") },
- { }
+ { "arg-type", QLIT_QSTR("0"), },
+ { "meta-type", QLIT_QSTR("command"), },
+ { "name", QLIT_QSTR("my-command"), },
+ { "ret-type", QLIT_QSTR("1"), },
+ {}
})),
QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("2"), },
+ { "meta-type", QLIT_QSTR("event"), },
+ { "name", QLIT_QSTR("MY_EVENT"), },
+ {}
+ })),
+ /* "0" = q_obj_my-command-arg */
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("arg1"), },
+ { "type", QLIT_QSTR("[1]"), },
+ {}
+ })),
+ {}
+ })), },
+ { "meta-type", QLIT_QSTR("object"), },
+ { "name", QLIT_QSTR("0"), },
+ {}
+ })),
+ /* "1" = UserDefOne */
+ QLIT_QDICT(((QLitDictEntry[]) {
{ "members", QLIT_QLIST(((QLitObject[]) {
- { }
- })) },
- { "meta-type", QLIT_QSTR("object") },
- { "name", QLIT_QSTR("0") },
- { }
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("integer"), },
+ { "type", QLIT_QSTR("int"), },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL, },
+ { "name", QLIT_QSTR("string"), },
+ { "type", QLIT_QSTR("str"), },
+ {}
+ })),
+ {}
+ })), },
+ { "meta-type", QLIT_QSTR("object"), },
+ { "name", QLIT_QSTR("1"), },
+ {}
})),
- ...
- { }
+ /* "2" = q_empty */
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ {}
+ })), },
+ { "meta-type", QLIT_QSTR("object"), },
+ { "name", QLIT_QSTR("2"), },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("1"), },
+ { "meta-type", QLIT_QSTR("array"), },
+ { "name", QLIT_QSTR("[1]"), },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("int"), },
+ { "meta-type", QLIT_QSTR("builtin"), },
+ { "name", QLIT_QSTR("int"), },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("string"), },
+ { "meta-type", QLIT_QSTR("builtin"), },
+ { "name", QLIT_QSTR("str"), },
+ {}
+ })),
+ {}
}));
+
+[Uninteresting stuff omitted...]
diff --git a/docs/interop/live-block-operations.rst b/docs/interop/live-block-operations.rst
index 734252bc80..48afdc7927 100644
--- a/docs/interop/live-block-operations.rst
+++ b/docs/interop/live-block-operations.rst
@@ -129,7 +129,7 @@ To show some example invocations of command-line, we will use the
following invocation of QEMU, with a QMP server running over UNIX
socket::
- $ ./x86_64-softmmu/qemu-system-x86_64 -display none -nodefconfig \
+ $ ./x86_64-softmmu/qemu-system-x86_64 -display none -no-user-config \
-M q35 -nodefaults -m 512 \
-blockdev node-name=node-A,driver=qcow2,file.driver=file,file.node-name=file,file.filename=./a.qcow2 \
-device virtio-blk,drive=node-A,id=virtio0 \
@@ -694,7 +694,7 @@ instance, with the following invocation. (As noted earlier, for
simplicity's sake, the destination QEMU is started on the same host, but
it could be located elsewhere)::
- $ ./x86_64-softmmu/qemu-system-x86_64 -display none -nodefconfig \
+ $ ./x86_64-softmmu/qemu-system-x86_64 -display none -no-user-config \
-M q35 -nodefaults -m 512 \
-blockdev node-name=node-TargetDisk,driver=qcow2,file.driver=file,file.node-name=file,file.filename=./target-disk.qcow2 \
-device virtio-blk,drive=node-TargetDisk,id=virtio0 \
diff --git a/docs/virtio-balloon-stats.txt b/docs/virtio-balloon-stats.txt
index 9985e1dffc..1732cc8c8a 100644
--- a/docs/virtio-balloon-stats.txt
+++ b/docs/virtio-balloon-stats.txt
@@ -61,9 +61,9 @@ It's also important to note the following:
respond to the request the timer will never be re-armed, which has
the same effect as disabling polling
-Here are a few examples. QEMU is started with '-balloon virtio', which
-generates '/machine/peripheral-anon/device[1]' as the QOM path for the
-balloon device.
+Here are a few examples. QEMU is started with '-device virtio-balloon',
+which generates '/machine/peripheral-anon/device[1]' as the QOM path for
+the balloon device.
Enable polling with 2 seconds interval: