mbox series

[v7,0/7] coroutines: generate wrapper code

Message ID 20200610100336.23451-1-vsementsov@virtuozzo.com
Headers show
Series coroutines: generate wrapper code | expand

Message

Vladimir Sementsov-Ogievskiy June 10, 2020, 10:03 a.m. UTC
Hi all!

The aim of the series is to reduce code-duplication and writing
parameters structure-packing by hand around coroutine function wrappers.

Benefits:
 - no code duplication
 - less indirection

v7: apply Eric's suggestions
02: fix grammar in commit msg, add Eric's r-b
04: - don't create separate header for generated_co_wrapper thing
    - inline aio_wait_kick() call
    - use json.dumps to make style for clang-format
05: - drop "#include "block/generated-co-wrapper.h" (since the header is removed)
    - add Eric's r-b

Vladimir Sementsov-Ogievskiy (7):
  block: return error-code from bdrv_invalidate_cache
  block/io: refactor coroutine wrappers
  block: declare some coroutine functions in block/coroutines.h
  scripts: add coroutine-wrapper.py
  block: generate coroutine-wrapper code
  block: drop bdrv_prwv
  block/io: refactor save/load vmstate

 Makefile                     |   8 +
 block/block-gen.h            |  49 +++++
 block/coroutines.h           |  65 +++++++
 include/block/block.h        |  31 ++--
 block.c                      |  97 ++--------
 block/io.c                   | 336 +++++------------------------------
 tests/test-bdrv-drain.c      |   2 +-
 block/Makefile.objs          |   1 +
 scripts/coroutine-wrapper.py | 180 +++++++++++++++++++
 9 files changed, 388 insertions(+), 381 deletions(-)
 create mode 100644 block/block-gen.h
 create mode 100644 block/coroutines.h
 create mode 100755 scripts/coroutine-wrapper.py

Comments

Stefan Hajnoczi July 27, 2020, 12:48 p.m. UTC | #1
On Wed, Jun 10, 2020 at 01:03:29PM +0300, Vladimir Sementsov-Ogievskiy wrote:
> Hi all!
> 
> The aim of the series is to reduce code-duplication and writing
> parameters structure-packing by hand around coroutine function wrappers.
> 
> Benefits:
>  - no code duplication
>  - less indirection

Please add documentation so others know when and how to use this.

I suggest adding a docs/devel/coroutine-wrapper.rst document and adding
a code comment to #define generated_co_wrapper pointing to the
documentation.

Please rename coroutine-wrapper.py to block-coroutine-wrapper.py since
it is specific to the block layer.

Stefan
Vladimir Sementsov-Ogievskiy July 27, 2020, 12:59 p.m. UTC | #2
27.07.2020 15:48, Stefan Hajnoczi wrote:
> On Wed, Jun 10, 2020 at 01:03:29PM +0300, Vladimir Sementsov-Ogievskiy wrote:
>> Hi all!
>>
>> The aim of the series is to reduce code-duplication and writing
>> parameters structure-packing by hand around coroutine function wrappers.
>>
>> Benefits:
>>   - no code duplication
>>   - less indirection
> 
> Please add documentation so others know when and how to use this.
> 
> I suggest adding a docs/devel/coroutine-wrapper.rst document and adding
> a code comment to #define generated_co_wrapper pointing to the
> documentation.
> 
> Please rename coroutine-wrapper.py to block-coroutine-wrapper.py since
> it is specific to the block layer.
> 

OK, will do. Thanks for taking a look!
Eric Blake Aug. 20, 2020, 1:33 a.m. UTC | #3
On 7/27/20 7:59 AM, Vladimir Sementsov-Ogievskiy wrote:
> 27.07.2020 15:48, Stefan Hajnoczi wrote:
>> On Wed, Jun 10, 2020 at 01:03:29PM +0300, Vladimir Sementsov-Ogievskiy 
>> wrote:
>>> Hi all!
>>>
>>> The aim of the series is to reduce code-duplication and writing
>>> parameters structure-packing by hand around coroutine function wrappers.
>>>
>>> Benefits:
>>>   - no code duplication
>>>   - less indirection
>>
>> Please add documentation so others know when and how to use this.
>>
>> I suggest adding a docs/devel/coroutine-wrapper.rst document and adding
>> a code comment to #define generated_co_wrapper pointing to the
>> documentation.
>>
>> Please rename coroutine-wrapper.py to block-coroutine-wrapper.py since
>> it is specific to the block layer.
>>
> 
> OK, will do. Thanks for taking a look!

As this series touched Makefile to add a generated .c, you'll also need 
to rebase that part to apply on top of Paolo's meson conversion (cc'ing 
him if you need help figuring it out)
Paolo Bonzini Aug. 20, 2020, 7:34 a.m. UTC | #4
On 20/08/20 03:33, Eric Blake wrote:
>>>
>>
>> OK, will do. Thanks for taking a look!
> 
> As this series touched Makefile to add a generated .c, you'll also need
> to rebase that part to apply on top of Paolo's meson conversion (cc'ing
> him if you need help figuring it out)

It should be trivial to do so using custom_target.

Paolo