From 53622e928682d08acafb27ce973a654ef7814c4d Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 27 Oct 2021 11:57:35 +0100 Subject: [PATCH] vddk: Add read, write and wait asynchronous functions These functions added in VDDK 6.0 - 6.5 implement asynchronous read and write. Acked-by: Laszlo Ersek (cherry picked from commit ad53e7becafed6ca3573795a79c534281fe9c274) --- plugins/vddk/vddk-structs.h | 3 +++ plugins/vddk/vddk-stubs.h | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/plugins/vddk/vddk-structs.h b/plugins/vddk/vddk-structs.h index aeb5bfd0..e97f017c 100644 --- a/plugins/vddk/vddk-structs.h +++ b/plugins/vddk/vddk-structs.h @@ -43,6 +43,7 @@ typedef uint64_t VixError; #define VIX_OK 0 +#define VIX_ASYNC 25000 #define VIXDISKLIB_FLAG_OPEN_UNBUFFERED 1 #define VIXDISKLIB_FLAG_OPEN_SINGLE_LINK 2 @@ -61,6 +62,8 @@ typedef void *VixDiskLibHandle; typedef void VixDiskLibGenericLogFunc (const char *fmt, va_list args); +typedef void (*VixDiskLibCompletionCB) (void *data, VixError result); + enum VixDiskLibCredType { VIXDISKLIB_CRED_UID = 1, VIXDISKLIB_CRED_SESSIONID = 2, diff --git a/plugins/vddk/vddk-stubs.h b/plugins/vddk/vddk-stubs.h index a94df9cd..66353691 100644 --- a/plugins/vddk/vddk-stubs.h +++ b/plugins/vddk/vddk-stubs.h @@ -103,10 +103,27 @@ STUB (VixDiskLib_Write, uint64_t start_sector, uint64_t nr_sectors, const unsigned char *buf)); -/* Added in VDDK 6.0, this will be NULL in earlier versions. */ +/* Added in VDDK 6.0, these will be NULL in earlier versions. */ OPTIONAL_STUB (VixDiskLib_Flush, VixError, (VixDiskLibHandle handle)); +OPTIONAL_STUB (VixDiskLib_ReadAsync, + VixError, + (VixDiskLibHandle handle, + uint64_t start_sector, uint64_t nr_sectors, + unsigned char *buf, + VixDiskLibCompletionCB callback, void *data)); +OPTIONAL_STUB (VixDiskLib_WriteAsync, + VixError, + (VixDiskLibHandle handle, + uint64_t start_sector, uint64_t nr_sectors, + const unsigned char *buf, + VixDiskLibCompletionCB callback, void *data)); + +/* Added in VDDK 6.5, this will be NULL in earlier versions. */ +OPTIONAL_STUB (VixDiskLib_Wait, + VixError, + (VixDiskLibHandle handle)); /* Added in VDDK 6.7, these will be NULL for earlier versions: */ OPTIONAL_STUB (VixDiskLib_QueryAllocatedBlocks, -- 2.31.1