aboutsummaryrefslogtreecommitdiff
path: root/block_int.h
diff options
context:
space:
mode:
Diffstat (limited to 'block_int.h')
-rw-r--r--block_int.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/block_int.h b/block_int.h
index d3c81facf7..8b4c5fe5fc 100644
--- a/block_int.h
+++ b/block_int.h
@@ -30,6 +30,12 @@
#define BLOCK_FLAG_COMPRESS 2
#define BLOCK_FLAG_COMPAT6 4
+typedef struct AIOPool {
+ void (*cancel)(BlockDriverAIOCB *acb);
+ int aiocb_size;
+ BlockDriverAIOCB *free_aiocb;
+} AIOPool;
+
struct BlockDriver {
const char *format_name;
int instance_size;
@@ -91,7 +97,7 @@ struct BlockDriver {
BlockDriverCompletionFunc *cb,
void *opaque);
- BlockDriverAIOCB *free_aiocb;
+ AIOPool aio_pool;
struct BlockDriver *next;
};
@@ -141,6 +147,7 @@ struct BlockDriverState {
};
struct BlockDriverAIOCB {
+ AIOPool *pool;
BlockDriverState *bs;
BlockDriverCompletionFunc *cb;
void *opaque;
@@ -149,8 +156,13 @@ struct BlockDriverAIOCB {
void get_tmp_filename(char *filename, int size);
+void aio_pool_init(AIOPool *pool, int aiocb_size,
+ void (*cancel)(BlockDriverAIOCB *acb));
+
void *qemu_aio_get(BlockDriverState *bs, BlockDriverCompletionFunc *cb,
void *opaque);
+void *qemu_aio_get_pool(AIOPool *pool, BlockDriverState *bs,
+ BlockDriverCompletionFunc *cb, void *opaque);
void qemu_aio_release(void *p);
extern BlockDriverState *bdrv_first;