aaaa20b69b
We have a very frequent pattern of creating a coroutine from a function with several arguments: - create a structure to pack parameters - create _entry function to call original function taking parameters from struct - do different magic to handle completion: set ret to NOT_DONE or EINPROGRESS or use separate bool field - fill the struct and create coroutine from _entry function with this struct as a parameter - do coroutine enter and BDRV_POLL_WHILE loop Let's reduce code duplication by generating coroutine wrappers. This patch adds scripts/block-coroutine-wrapper.py together with some friends, which will generate functions with declared prototypes marked by the 'generated_co_wrapper' specifier. The usage of new code generation is as follows: 1. define the coroutine function somewhere int coroutine_fn bdrv_co_NAME(...) {...} 2. declare in some header file int generated_co_wrapper bdrv_NAME(...); with same list of parameters (generated_co_wrapper is defined in "include/block/block.h"). 3. Make sure the block_gen_c declaration in block/meson.build mentions the file with your marker function. Still, no function is now marked, this work is for the following commit. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20200924185414.28642-5-vsementsov@virtuozzo.com> [Added encoding='utf-8' to open() calls as requested by Vladimir. Fixed typo and grammar issues pointed out by Eric Blake. Removed clang-format dependency that caused build test issues. --Stefan] Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> |
||
---|---|---|
.. | ||
config | ||
devel | ||
interop | ||
specs | ||
sphinx | ||
spin | ||
system | ||
tools | ||
user | ||
amd-memory-encryption.txt | ||
barrier.txt | ||
block-replication.txt | ||
bootindex.txt | ||
can.txt | ||
ccid.txt | ||
COLO-FT.txt | ||
colo-proxy.txt | ||
conf.py | ||
cpu-hotplug.rst | ||
defs.rst.inc | ||
generic-loader.txt | ||
hyperv.txt | ||
igd-assign.txt | ||
image-fuzzer.txt | ||
index.html.in | ||
index.rst | ||
memory-hotplug.txt | ||
meson.build | ||
microvm.rst | ||
multi-thread-compression.txt | ||
multiseat.txt | ||
nvdimm.txt | ||
pci_expander_bridge.txt | ||
pcie_pci_bridge.txt | ||
pcie.txt | ||
pr-manager.rst | ||
pvrdma.txt | ||
qcow2-cache.txt | ||
qdev-device-use.txt | ||
qemu_logo.pdf | ||
qemu-option-trace.rst.inc | ||
qemupciserial.inf | ||
rdma.txt | ||
replay.txt | ||
spice-port-fqdn.txt | ||
throttle.txt | ||
u2f.txt | ||
usb2.txt | ||
usb-storage.txt | ||
virtio-balloon-stats.txt | ||
virtio-net-failover.rst | ||
virtio-pmem.rst | ||
xbzrle.txt | ||
xen-save-devices-state.txt |