On 9/15/20 6:44 PM, Vladimir Sementsov-Ogievskiy wrote: > We are going to keep coroutine-wrappers code (structure-packing > parameters, BDRV_POLL wrapper functions) in separate auto-generated > files. So, we'll need a header with declaration of original _co_ > functions, for those which are static now. As well, we'll need > declarations for wrapper functions. Do these declarations now, as a > preparation step. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]> > Reviewed-by: Eric Blake <[email protected]> > --- > block/coroutines.h | 67 ++++++++++++++++++++++++++++++++++++++++++++++ > block.c | 8 +++--- > block/io.c | 34 +++++++++++------------ > 3 files changed, 88 insertions(+), 21 deletions(-) > create mode 100644 block/coroutines.h > > diff --git a/block/coroutines.h b/block/coroutines.h > new file mode 100644 > index 0000000000..9ce1730a09 > --- /dev/null > +++ b/block/coroutines.h > @@ -0,0 +1,67 @@
Maybe also add: /* SPDX-License-Identifier: MIT */ > +/* > + * Block layer I/O functions > + * > + * Copyright (c) 2003 Fabrice Bellard > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > copy > + * of this software and associated documentation files (the "Software"), to > deal > + * in the Software without restriction, including without limitation the > rights > + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell > + * copies of the Software, and to permit persons to whom the Software is > + * furnished to do so, subject to the following conditions: > + * > + * The above copyright notice and this permission notice shall be included in > + * all copies or substantial portions of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > FROM, > + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN > + * THE SOFTWARE. > + */ > + > +#ifndef BLOCK_COROUTINES_INT_H > +#define BLOCK_COROUTINES_INT_H > + > +#include "block/block_int.h" > + > +int coroutine_fn bdrv_co_check(BlockDriverState *bs, > + BdrvCheckResult *res, BdrvCheckMode fix); > +int coroutine_fn bdrv_co_invalidate_cache(BlockDriverState *bs, Error > **errp); > + > +int coroutine_fn > +bdrv_co_prwv(BdrvChild *child, int64_t offset, QEMUIOVector *qiov, > + bool is_write, BdrvRequestFlags flags); > +int > +bdrv_prwv(BdrvChild *child, int64_t offset, QEMUIOVector *qiov, > + bool is_write, BdrvRequestFlags flags); > + > +int coroutine_fn > +bdrv_co_common_block_status_above(BlockDriverState *bs, > + BlockDriverState *base, > + bool want_zero, > + int64_t offset, > + int64_t bytes, > + int64_t *pnum, > + int64_t *map, > + BlockDriverState **file); > +int > +bdrv_common_block_status_above(BlockDriverState *bs, > + BlockDriverState *base, > + bool want_zero, > + int64_t offset, > + int64_t bytes, > + int64_t *pnum, > + int64_t *map, > + BlockDriverState **file); > + Prototypes documentation welcomed, but this is rather scarce in the block APIs, so: Reviewed-by: Philippe Mathieu-Daudé <[email protected]> > +int coroutine_fn > +bdrv_co_rw_vmstate(BlockDriverState *bs, QEMUIOVector *qiov, int64_t pos, > + bool is_read); > +int > +bdrv_rw_vmstate(BlockDriverState *bs, QEMUIOVector *qiov, int64_t pos, > + bool is_read); > + > +#endif /* BLOCK_COROUTINES_INT_H */
