diff options
| author | Kevin Wolf <kwolf@redhat.com> | 2020-10-05 17:58:50 +0200 |
|---|---|---|
| committer | Markus Armbruster <armbru@redhat.com> | 2020-10-09 07:08:20 +0200 |
| commit | 9ce44e2ce267caf5559904a201aa1986b0a8326b (patch) | |
| tree | 7435b0a31a7b52eedfaa544c39d13e186b4175b9 /include/qapi/qmp/dispatch.h | |
| parent | 04f22362f14b028c2632ce01e74e6a78c2b45e89 (diff) | |
| download | focaccia-qemu-9ce44e2ce267caf5559904a201aa1986b0a8326b.tar.gz focaccia-qemu-9ce44e2ce267caf5559904a201aa1986b0a8326b.zip | |
qmp: Move dispatcher to a coroutine
This moves the QMP dispatcher to a coroutine and runs all QMP command handlers that declare 'coroutine': true in coroutine context so they can avoid blocking the main loop while doing I/O or waiting for other events. For commands that are not declared safe to run in a coroutine, the dispatcher drops out of coroutine context by calling the QMP command handler from a bottom half. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20201005155855.256490-10-kwolf@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
Diffstat (limited to 'include/qapi/qmp/dispatch.h')
| -rw-r--r-- | include/qapi/qmp/dispatch.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/qapi/qmp/dispatch.h b/include/qapi/qmp/dispatch.h index 9fd2b720a7..af8d96c570 100644 --- a/include/qapi/qmp/dispatch.h +++ b/include/qapi/qmp/dispatch.h @@ -31,6 +31,7 @@ typedef enum QmpCommandOptions typedef struct QmpCommand { const char *name; + /* Runs in coroutine context if QCO_COROUTINE is set */ QmpCommandFunc *fn; QmpCommandOptions options; QTAILQ_ENTRY(QmpCommand) node; |