mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-11 16:00:50 -07:00
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>
|
||
|---|---|---|
| .. | ||
| atomics.rst | ||
| bitops.rst | ||
| blkdebug.txt | ||
| blkverify.txt | ||
| block-coroutine-wrapper.rst | ||
| build-system.rst | ||
| clocks.rst | ||
| conf.py | ||
| decodetree.rst | ||
| fuzzing.txt | ||
| index.rst | ||
| kconfig.rst | ||
| loads-stores.rst | ||
| lockcnt.txt | ||
| memory.rst | ||
| migration.rst | ||
| multi-thread-tcg.rst | ||
| multiple-iothreads.txt | ||
| qapi-code-gen.txt | ||
| qom.rst | ||
| rcu.txt | ||
| replay.txt | ||
| reset.rst | ||
| s390-dasd-ipl.rst | ||
| secure-coding-practices.rst | ||
| stable-process.rst | ||
| tcg-icount.rst | ||
| tcg-plugins.rst | ||
| tcg.rst | ||
| testing.rst | ||
| tracing.txt | ||
| virtio-migration.txt | ||
| writing-qmp-commands.txt | ||