From 7d56a16d036d9aa7292e10e884c129742036f8a7 Mon Sep 17 00:00:00 2001 From: Adam Litke Date: Thu, 9 Jun 2011 12:10:07 -0500 Subject: [PATCH] Add new API virDomainBlockPull* to headers Set up the types for the block pull functions and insert them into the virDriver structure definition. Symbols are exported in this patch to prevent documentation compile failures. * include/libvirt/libvirt.h.in: new API * src/driver.h: add the new entry to the driver structure * python/generator.py: fix compiler errors, the actual python bindings are implemented later * src/libvirt_public.syms: export symbols Signed-off-by: Adam Litke --- include/libvirt/libvirt.h.in | 39 ++++++++++++++++++++++++++++++++++++ python/generator.py | 3 +++ src/driver.h | 22 ++++++++++++++++++++ src/libvirt_public.syms | 4 ++++ 4 files changed, 68 insertions(+) diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in index d4fa9d09be..8c4ce59ff8 100644 --- a/include/libvirt/libvirt.h.in +++ b/include/libvirt/libvirt.h.in @@ -1324,6 +1324,45 @@ int virDomainDetachDeviceFlags(virDomainPtr domain, int virDomainUpdateDeviceFlags(virDomainPtr domain, const char *xml, unsigned int flags); +/* + * BlockPull API + */ + +/* An iterator for initiating and monitoring block pull operations */ +typedef unsigned long long virDomainBlockPullCursor; + +typedef struct _virDomainBlockPullInfo virDomainBlockPullInfo; +struct _virDomainBlockPullInfo { + /* + * The following fields provide an indication of block pull progress. @cur + * indicates the current position and will be between 0 and @end. @end is + * the final cursor position for this operation and represents completion. + * To approximate progress, divide @cur by @end. + */ + virDomainBlockPullCursor cur; + virDomainBlockPullCursor end; +}; +typedef virDomainBlockPullInfo *virDomainBlockPullInfoPtr; + +int virDomainBlockPull(virDomainPtr dom, + const char *path, + virDomainBlockPullInfoPtr info, + unsigned int flags); + +int virDomainBlockPullAll(virDomainPtr dom, + const char *path, + unsigned int flags); + +int virDomainBlockPullAbort(virDomainPtr dom, + const char *path, + unsigned int flags); + +int virDomainGetBlockPullInfo(virDomainPtr dom, + const char *path, + virDomainBlockPullInfoPtr info, + unsigned int flags); + + /* * NUMA support */ diff --git a/python/generator.py b/python/generator.py index a14b9ce2d0..5868992836 100755 --- a/python/generator.py +++ b/python/generator.py @@ -184,6 +184,8 @@ def enum(type, name, value): functions_failed = [] functions_skipped = [ "virConnectListDomains", + 'virDomainBlockPull', + 'virDomainGetBlockPullInfo', ] skipped_modules = { @@ -198,6 +200,7 @@ skipped_types = { 'virConnectDomainEventIOErrorCallback': "No function types in python", 'virConnectDomainEventGraphicsCallback': "No function types in python", 'virEventAddHandleFunc': "No function types in python", + 'virDomainBlockPullInfoPtr': "Not implemented yet", } ####################################################################### diff --git a/src/driver.h b/src/driver.h index a94bbb0193..d45575af99 100644 --- a/src/driver.h +++ b/src/driver.h @@ -644,6 +644,24 @@ typedef int unsigned long flags, int cancelled); +typedef int + (*virDrvDomainBlockPull)(virDomainPtr dom, const char *path, + virDomainBlockPullInfoPtr info, + unsigned int flags); + +typedef int + (*virDrvDomainBlockPullAll)(virDomainPtr dom, const char *path, + unsigned int flags); + +typedef int + (*virDrvDomainBlockPullAbort)(virDomainPtr dom, const char *path, + unsigned int flags); + +typedef int + (*virDrvDomainGetBlockPullInfo)(virDomainPtr dom, const char *path, + virDomainBlockPullInfoPtr info, + unsigned int flags); + /** * _virDriver: * @@ -782,6 +800,10 @@ struct _virDriver { virDrvDomainMigrateFinish3 domainMigrateFinish3; virDrvDomainMigrateConfirm3 domainMigrateConfirm3; virDrvDomainSendKey domainSendKey; + virDrvDomainBlockPull domainBlockPull; + virDrvDomainBlockPullAll domainBlockPullAll; + virDrvDomainBlockPullAbort domainBlockPullAbort; + virDrvDomainGetBlockPullInfo domainGetBlockPullInfo; }; typedef int diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms index 362dbed070..f7a6df6b7f 100644 --- a/src/libvirt_public.syms +++ b/src/libvirt_public.syms @@ -452,6 +452,10 @@ LIBVIRT_0.9.2 { LIBVIRT_0.9.3 { global: + virDomainBlockPull; + virDomainBlockPullAbort; + virDomainBlockPullAll; + virDomainGetBlockPullInfo; virDomainPinVcpuFlags; virDomainSendKey; virNodeGetCPUStats;