block-coroutine-wrapper.py: support BlockBackend first argument
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-Id: <20211006131718.214235-7-vsementsov@virtuozzo.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
70e8775ed9
commit
7d55a3bbad
@ -27,6 +27,9 @@
|
||||
|
||||
#include "block/block_int.h"
|
||||
|
||||
/* For blk_bs() in generated block/block-gen.c */
|
||||
#include "sysemu/block-backend.h"
|
||||
|
||||
int coroutine_fn bdrv_co_check(BlockDriverState *bs,
|
||||
BdrvCheckResult *res, BdrvCheckMode fix);
|
||||
int coroutine_fn bdrv_co_invalidate_cache(BlockDriverState *bs, Error **errp);
|
||||
|
@ -100,12 +100,20 @@ def snake_to_camel(func_name: str) -> str:
|
||||
def gen_wrapper(func: FuncDecl) -> str:
|
||||
assert not '_co_' in func.name
|
||||
assert func.return_type == 'int'
|
||||
assert func.args[0].type in ['BlockDriverState *', 'BdrvChild *']
|
||||
assert func.args[0].type in ['BlockDriverState *', 'BdrvChild *',
|
||||
'BlockBackend *']
|
||||
|
||||
subsystem, subname = func.name.split('_', 1)
|
||||
|
||||
name = f'{subsystem}_co_{subname}'
|
||||
bs = 'bs' if func.args[0].type == 'BlockDriverState *' else 'child->bs'
|
||||
|
||||
t = func.args[0].type
|
||||
if t == 'BlockDriverState *':
|
||||
bs = 'bs'
|
||||
elif t == 'BdrvChild *':
|
||||
bs = 'child->bs'
|
||||
else:
|
||||
bs = 'blk_bs(blk)'
|
||||
struct_name = snake_to_camel(name)
|
||||
|
||||
return f"""\
|
||||
|
Loading…
Reference in New Issue
Block a user