[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 01/14] block-coroutine-wrapper: support void functions
From: |
Kevin Wolf |
Subject: |
[PATCH 01/14] block-coroutine-wrapper: support void functions |
Date: |
Tue, 13 Dec 2022 09:53:07 +0100 |
From: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Just omit the various 'return' when the return type is void.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
scripts/block-coroutine-wrapper.py | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/scripts/block-coroutine-wrapper.py
b/scripts/block-coroutine-wrapper.py
index 6e087fa0b7..0c5d7782b1 100644
--- a/scripts/block-coroutine-wrapper.py
+++ b/scripts/block-coroutine-wrapper.py
@@ -85,6 +85,16 @@ def __init__(self, return_type: str, name: str, args: str,
ctx = 'qemu_get_aio_context()'
self.ctx = ctx
+ self.get_result = 's->ret = '
+ self.ret = 'return s.ret;'
+ self.co_ret = 'return '
+ self.return_field = self.return_type + " ret;"
+ if self.return_type == 'void':
+ self.get_result = ''
+ self.ret = ''
+ self.co_ret = ''
+ self.return_field = ''
+
def gen_list(self, format: str) -> str:
return ', '.join(format.format_map(arg.__dict__) for arg in self.args)
@@ -131,7 +141,7 @@ def create_mixed_wrapper(func: FuncDecl) -> str:
{{
if (qemu_in_coroutine()) {{
{graph_assume_lock}
- return {name}({ func.gen_list('{name}') });
+ {func.co_ret}{name}({ func.gen_list('{name}') });
}} else {{
{struct_name} s = {{
.poll_state.ctx = {func.ctx},
@@ -143,7 +153,7 @@ def create_mixed_wrapper(func: FuncDecl) -> str:
s.poll_state.co = qemu_coroutine_create({name}_entry, &s);
bdrv_poll_co(&s.poll_state);
- return s.ret;
+ {func.ret}
}}
}}"""
@@ -168,7 +178,7 @@ def create_co_wrapper(func: FuncDecl) -> str:
s.poll_state.co = qemu_coroutine_create({name}_entry, &s);
bdrv_poll_co(&s.poll_state);
- return s.ret;
+ {func.ret}
}}"""
@@ -195,7 +205,7 @@ def gen_wrapper(func: FuncDecl) -> str:
typedef struct {struct_name} {{
BdrvPollCo poll_state;
- {func.return_type} ret;
+ {func.return_field}
{ func.gen_block(' {decl};') }
}} {struct_name};
@@ -204,7 +214,7 @@ def gen_wrapper(func: FuncDecl) -> str:
{struct_name} *s = opaque;
{graph_lock}
- s->ret = {name}({ func.gen_list('s->{name}') });
+ {func.get_result}{name}({ func.gen_list('s->{name}') });
{graph_unlock}
s->poll_state.in_progress = false;
--
2.38.1
- [PATCH 00/14] block: Move more functions to coroutines, Kevin Wolf, 2022/12/13
- [PATCH 02/14] block: Convert bdrv_io_plug() to co_wrapper, Kevin Wolf, 2022/12/13
- [PATCH 07/14] block: use bdrv_co_refresh_total_sectors when possible, Kevin Wolf, 2022/12/13
- [PATCH 01/14] block-coroutine-wrapper: support void functions,
Kevin Wolf <=
- [PATCH 03/14] block: Convert bdrv_io_unplug() to co_wrapper, Kevin Wolf, 2022/12/13
- [PATCH 06/14] block-backend: use bdrv_getlength instead of blk_getlength, Kevin Wolf, 2022/12/13
- [PATCH 09/14] block: Convert bdrv_get_info() to co_wrapper_mixed, Kevin Wolf, 2022/12/13
- [PATCH 04/14] block: Rename refresh_total_sectors to bdrv_refresh_total_sectors, Kevin Wolf, 2022/12/13
- [PATCH 08/14] block: Convert bdrv_get_allocated_file_size() to co_wrapper, Kevin Wolf, 2022/12/13
- [PATCH 10/14] block: Convert bdrv_is_inserted() to co_wrapper, Kevin Wolf, 2022/12/13