After this patch, we will have only one common domain driver. So, the rewritten on domain driver is finished in this patch. --- src/vbox/README | 7 +- src/vbox/vbox_common.c | 257 +++++++++++++++++++++++++++-------------- src/vbox/vbox_driver.c | 28 ++--- src/vbox/vbox_tmpl.c | 80 ------------- src/vbox/vbox_uniformed_api.h | 103 ----------------- 5 files changed, 186 insertions(+), 289 deletions(-) diff --git a/src/vbox/README b/src/vbox/README index 6e88ae6..0551db9 100644 --- a/src/vbox/README +++ b/src/vbox/README @@ -37,7 +37,12 @@ The file which has version dependent changes and includes the template file for given below for all of its functionality. vbox_tmpl.c -The file where all the real driver implementation code exists. +The file contains all version specified codes. It implements the +vboxUniformedAPI for each vbox version. + +vbox_common.c +The file implement the common driver, with the uniformed api which +defined in vbox_uniformed_api.h and implemented in vbox_tmpl.c Now there would be a vbox_V*.c file (for eg: vbox_V2_2.c for V2.2) for each major virtualbox version which would do some preprocessor magic diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index c05fd6a..edd3eef 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -121,6 +121,9 @@ if (!data->vboxObj) {\ /* global vbox API, used for all common codes. */ static vboxUniformedAPI gVBoxAPI; +/* update the virDriver according to the vboxUniformedAPI */ +static void updateDriver(void); + int vboxRegisterUniformedAPI(uint32_t uVersion) { /* Install gVBoxAPI according to the vbox API version. @@ -149,6 +152,7 @@ int vboxRegisterUniformedAPI(uint32_t uVersion) } else { return -1; } + updateDriver(); return 0; } @@ -461,9 +465,10 @@ static void vboxUninitialize(vboxGlobalData *data) VIR_FREE(data); } -virDrvOpenStatus vboxConnectOpen(virConnectPtr conn, - virConnectAuthPtr auth ATTRIBUTE_UNUSED, - unsigned int flags) +static virDrvOpenStatus +vboxConnectOpen(virConnectPtr conn, + virConnectAuthPtr auth ATTRIBUTE_UNUSED, + unsigned int flags) { vboxGlobalData *data = NULL; uid_t uid = geteuid(); @@ -532,7 +537,7 @@ virDrvOpenStatus vboxConnectOpen(virConnectPtr conn, return VIR_DRV_OPEN_SUCCESS; } -int vboxConnectClose(virConnectPtr conn) +static int vboxConnectClose(virConnectPtr conn) { vboxGlobalData *data = conn->privateData; VIR_DEBUG("%s: in vboxClose", conn->driver->name); @@ -543,7 +548,7 @@ int vboxConnectClose(virConnectPtr conn) return 0; } -int +static int vboxDomainSave(virDomainPtr dom, const char *path ATTRIBUTE_UNUSED) { VBOX_OBJECT_CHECK(dom->conn, int, -1); @@ -604,7 +609,7 @@ static void vboxDriverUnlock(vboxGlobalData *data) virMutexUnlock(&data->lock); } -int vboxConnectGetVersion(virConnectPtr conn, unsigned long *version) +static int vboxConnectGetVersion(virConnectPtr conn, unsigned long *version) { vboxGlobalData *data = conn->privateData; VIR_DEBUG("%s: in vboxGetVersion", conn->driver->name); @@ -616,29 +621,29 @@ int vboxConnectGetVersion(virConnectPtr conn, unsigned long *version) return 0; } -char *vboxConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED) +static char *vboxConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED) { return virGetHostname(); } -int vboxConnectIsSecure(virConnectPtr conn ATTRIBUTE_UNUSED) +static int vboxConnectIsSecure(virConnectPtr conn ATTRIBUTE_UNUSED) { /* Driver is using local, non-network based transport */ return 1; } -int vboxConnectIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED) +static int vboxConnectIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED) { /* No encryption is needed, or used on the local transport*/ return 0; } -int vboxConnectIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED) +static int vboxConnectIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED) { return 1; } -int +static int vboxConnectGetMaxVcpus(virConnectPtr conn, const char *type ATTRIBUTE_UNUSED) { VBOX_OBJECT_CHECK(conn, int, -1); @@ -662,7 +667,7 @@ vboxConnectGetMaxVcpus(virConnectPtr conn, const char *type ATTRIBUTE_UNUSED) return ret; } -char *vboxConnectGetCapabilities(virConnectPtr conn) +static char *vboxConnectGetCapabilities(virConnectPtr conn) { VBOX_OBJECT_CHECK(conn, char *, NULL); @@ -673,7 +678,7 @@ char *vboxConnectGetCapabilities(virConnectPtr conn) return ret; } -int vboxConnectListDomains(virConnectPtr conn, int *ids, int nids) +static int vboxConnectListDomains(virConnectPtr conn, int *ids, int nids) { VBOX_OBJECT_CHECK(conn, int, -1); vboxArray machines = VBOX_ARRAY_INITIALIZER; @@ -711,7 +716,7 @@ int vboxConnectListDomains(virConnectPtr conn, int *ids, int nids) return ret; } -int vboxConnectNumOfDomains(virConnectPtr conn) +static int vboxConnectNumOfDomains(virConnectPtr conn) { VBOX_OBJECT_CHECK(conn, int, -1); vboxArray machines = VBOX_ARRAY_INITIALIZER; @@ -746,7 +751,7 @@ int vboxConnectNumOfDomains(virConnectPtr conn) return ret; } -virDomainPtr vboxDomainLookupByID(virConnectPtr conn, int id) +static virDomainPtr vboxDomainLookupByID(virConnectPtr conn, int id) { VBOX_OBJECT_CHECK(conn, virDomainPtr, NULL); vboxArray machines = VBOX_ARRAY_INITIALIZER; @@ -892,7 +897,7 @@ virDomainPtr vboxDomainLookupByUUID(virConnectPtr conn, return ret; } -virDomainPtr +static virDomainPtr vboxDomainLookupByName(virConnectPtr conn, const char *name) { VBOX_OBJECT_CHECK(conn, virDomainPtr, NULL); @@ -1873,7 +1878,7 @@ vboxAttachSharedFolder(virDomainDefPtr def, vboxGlobalData *data, IMachine *mach } } -virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) +static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { VBOX_OBJECT_CHECK(conn, virDomainPtr, NULL); IMachine *machine = NULL; @@ -2042,7 +2047,7 @@ detachDevices_common(vboxGlobalData *data, vboxIIDUnion *iidu) VBOX_UTF16_FREE(hddcnameUtf16); } -int vboxDomainUndefineFlags(virDomainPtr dom, unsigned int flags) +static int vboxDomainUndefineFlags(virDomainPtr dom, unsigned int flags) { VBOX_OBJECT_CHECK(dom->conn, int, -1); IMachine *machine = NULL; @@ -2075,7 +2080,7 @@ int vboxDomainUndefineFlags(virDomainPtr dom, unsigned int flags) return ret; } -int vboxDomainUndefine(virDomainPtr dom) +static int vboxDomainUndefine(virDomainPtr dom) { return vboxDomainUndefineFlags(dom, 0); } @@ -2231,7 +2236,7 @@ vboxStartMachine(virDomainPtr dom, int maxDomID, IMachine *machine, vboxIIDUnion return ret; } -int vboxDomainCreateWithFlags(virDomainPtr dom, unsigned int flags) +static int vboxDomainCreateWithFlags(virDomainPtr dom, unsigned int flags) { VBOX_OBJECT_CHECK(dom->conn, int, -1); vboxArray machines = VBOX_ARRAY_INITIALIZER; @@ -2299,13 +2304,13 @@ int vboxDomainCreateWithFlags(virDomainPtr dom, unsigned int flags) return ret; } -int vboxDomainCreate(virDomainPtr dom) +static int vboxDomainCreate(virDomainPtr dom) { return vboxDomainCreateWithFlags(dom, 0); } -virDomainPtr vboxDomainCreateXML(virConnectPtr conn, const char *xml, - unsigned int flags) +static virDomainPtr vboxDomainCreateXML(virConnectPtr conn, const char *xml, + unsigned int flags) { /* VirtualBox currently doesn't have support for running * virtual machines without actually defining them and thus @@ -2332,7 +2337,7 @@ virDomainPtr vboxDomainCreateXML(virConnectPtr conn, const char *xml, return dom; } -int vboxDomainIsActive(virDomainPtr dom) +static int vboxDomainIsActive(virDomainPtr dom) { VBOX_OBJECT_CHECK(dom->conn, int, -1); vboxArray machines = VBOX_ARRAY_INITIALIZER; @@ -2398,7 +2403,7 @@ int vboxDomainIsActive(virDomainPtr dom) return ret; } -int vboxDomainIsPersistent(virDomainPtr dom) +static int vboxDomainIsPersistent(virDomainPtr dom) { /* All domains are persistent. However, we do want to check for * existence. */ @@ -2417,7 +2422,7 @@ int vboxDomainIsPersistent(virDomainPtr dom) return ret; } -int vboxDomainIsUpdated(virDomainPtr dom) +static int vboxDomainIsUpdated(virDomainPtr dom) { /* VBox domains never have a persistent state that differs from * current state. However, we do want to check for existence. */ @@ -2436,7 +2441,7 @@ int vboxDomainIsUpdated(virDomainPtr dom) return ret; } -int vboxDomainSuspend(virDomainPtr dom) +static int vboxDomainSuspend(virDomainPtr dom) { VBOX_OBJECT_CHECK(dom->conn, int, -1); IMachine *machine = NULL; @@ -2483,7 +2488,7 @@ int vboxDomainSuspend(virDomainPtr dom) return ret; } -int vboxDomainResume(virDomainPtr dom) +static int vboxDomainResume(virDomainPtr dom) { VBOX_OBJECT_CHECK(dom->conn, int, -1); IMachine *machine = NULL; @@ -2530,7 +2535,7 @@ int vboxDomainResume(virDomainPtr dom) return ret; } -int vboxDomainShutdownFlags(virDomainPtr dom, unsigned int flags) +static int vboxDomainShutdownFlags(virDomainPtr dom, unsigned int flags) { VBOX_OBJECT_CHECK(dom->conn, int, -1); IMachine *machine = NULL; @@ -2578,12 +2583,12 @@ int vboxDomainShutdownFlags(virDomainPtr dom, unsigned int flags) return ret; } -int vboxDomainShutdown(virDomainPtr dom) +static int vboxDomainShutdown(virDomainPtr dom) { return vboxDomainShutdownFlags(dom, 0); } -int vboxDomainReboot(virDomainPtr dom, unsigned int flags) +static int vboxDomainReboot(virDomainPtr dom, unsigned int flags) { VBOX_OBJECT_CHECK(dom->conn, int, -1); IMachine *machine = NULL; @@ -2627,7 +2632,7 @@ int vboxDomainReboot(virDomainPtr dom, unsigned int flags) return ret; } -int vboxDomainDestroyFlags(virDomainPtr dom, unsigned int flags) +static int vboxDomainDestroyFlags(virDomainPtr dom, unsigned int flags) { VBOX_OBJECT_CHECK(dom->conn, int, -1); IMachine *machine = NULL; @@ -2672,12 +2677,12 @@ int vboxDomainDestroyFlags(virDomainPtr dom, unsigned int flags) return ret; } -int vboxDomainDestroy(virDomainPtr dom) +static int vboxDomainDestroy(virDomainPtr dom) { return vboxDomainDestroyFlags(dom, 0); } -char *vboxDomainGetOSType(virDomainPtr dom ATTRIBUTE_UNUSED) { +static char *vboxDomainGetOSType(virDomainPtr dom ATTRIBUTE_UNUSED) { /* Returning "hvm" always as suggested on list, cause * this functions seems to be badly named and it * is supposed to pass the ABI name and not the domain @@ -2689,7 +2694,7 @@ char *vboxDomainGetOSType(virDomainPtr dom ATTRIBUTE_UNUSED) { return osType; } -int vboxDomainSetMemory(virDomainPtr dom, unsigned long memory) +static int vboxDomainSetMemory(virDomainPtr dom, unsigned long memory) { VBOX_OBJECT_CHECK(dom->conn, int, -1); IMachine *machine = NULL; @@ -2743,7 +2748,7 @@ int vboxDomainSetMemory(virDomainPtr dom, unsigned long memory) return ret; } -int vboxDomainGetInfo(virDomainPtr dom, virDomainInfoPtr info) +static int vboxDomainGetInfo(virDomainPtr dom, virDomainInfoPtr info) { VBOX_OBJECT_CHECK(dom->conn, int, -1); vboxArray machines = VBOX_ARRAY_INITIALIZER; @@ -2822,8 +2827,8 @@ int vboxDomainGetInfo(virDomainPtr dom, virDomainInfoPtr info) return ret; } -int vboxDomainGetState(virDomainPtr dom, int *state, - int *reason, unsigned int flags) +static int vboxDomainGetState(virDomainPtr dom, int *state, + int *reason, unsigned int flags) { VBOX_OBJECT_CHECK(dom->conn, int, -1); vboxIIDUnion domiid; @@ -2849,8 +2854,8 @@ int vboxDomainGetState(virDomainPtr dom, int *state, return ret; } -int vboxDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus, - unsigned int flags) +static int vboxDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus, + unsigned int flags) { VBOX_OBJECT_CHECK(dom->conn, int, -1); IMachine *machine = NULL; @@ -2895,12 +2900,12 @@ int vboxDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus, return ret; } -int vboxDomainSetVcpus(virDomainPtr dom, unsigned int nvcpus) +static int vboxDomainSetVcpus(virDomainPtr dom, unsigned int nvcpus) { return vboxDomainSetVcpusFlags(dom, nvcpus, VIR_DOMAIN_AFFECT_LIVE); } -int vboxDomainGetVcpusFlags(virDomainPtr dom, unsigned int flags) +static int vboxDomainGetVcpusFlags(virDomainPtr dom, unsigned int flags) { VBOX_OBJECT_CHECK(dom->conn, int, -1); ISystemProperties *systemProperties = NULL; @@ -2928,7 +2933,7 @@ int vboxDomainGetVcpusFlags(virDomainPtr dom, unsigned int flags) return ret; } -int vboxDomainGetMaxVcpus(virDomainPtr dom) +static int vboxDomainGetMaxVcpus(virDomainPtr dom) { return vboxDomainGetVcpusFlags(dom, (VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_VCPU_MAXIMUM)); @@ -3791,7 +3796,7 @@ vboxDumpParallel(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine, P } } -char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int flags) +static char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int flags) { VBOX_OBJECT_CHECK(dom->conn, char *, NULL); virDomainDefPtr def = NULL; @@ -3949,8 +3954,8 @@ char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int flags) return ret; } -int vboxConnectListDefinedDomains(virConnectPtr conn, - char ** const names, int maxnames) +static int vboxConnectListDefinedDomains(virConnectPtr conn, + char ** const names, int maxnames) { VBOX_OBJECT_CHECK(conn, int, -1); vboxArray machines = VBOX_ARRAY_INITIALIZER; @@ -4008,7 +4013,7 @@ int vboxConnectListDefinedDomains(virConnectPtr conn, return ret; } -int vboxConnectNumOfDefinedDomains(virConnectPtr conn) +static int vboxConnectNumOfDefinedDomains(virConnectPtr conn) { VBOX_OBJECT_CHECK(conn, int, -1); vboxArray machines = VBOX_ARRAY_INITIALIZER; @@ -4160,13 +4165,13 @@ static int vboxDomainAttachDeviceImpl(virDomainPtr dom, return ret; } -int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) +static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) { return vboxDomainAttachDeviceImpl(dom, xml, 0); } -int vboxDomainAttachDeviceFlags(virDomainPtr dom, const char *xml, - unsigned int flags) +static int vboxDomainAttachDeviceFlags(virDomainPtr dom, const char *xml, + unsigned int flags) { virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); @@ -4179,8 +4184,8 @@ int vboxDomainAttachDeviceFlags(virDomainPtr dom, const char *xml, return vboxDomainAttachDeviceImpl(dom, xml, 0); } -int vboxDomainUpdateDeviceFlags(virDomainPtr dom, const char *xml, - unsigned int flags) +static int vboxDomainUpdateDeviceFlags(virDomainPtr dom, const char *xml, + unsigned int flags) { virCheckFlags(VIR_DOMAIN_AFFECT_CURRENT | VIR_DOMAIN_AFFECT_LIVE | @@ -4195,7 +4200,7 @@ int vboxDomainUpdateDeviceFlags(virDomainPtr dom, const char *xml, return vboxDomainAttachDeviceImpl(dom, xml, 1); } -int vboxDomainDetachDevice(virDomainPtr dom, const char *xml) +static int vboxDomainDetachDevice(virDomainPtr dom, const char *xml) { VBOX_OBJECT_CHECK(dom->conn, int, -1); IMachine *machine = NULL; @@ -4296,8 +4301,8 @@ int vboxDomainDetachDevice(virDomainPtr dom, const char *xml) return ret; } -int vboxDomainDetachDeviceFlags(virDomainPtr dom, const char *xml, - unsigned int flags) +static int vboxDomainDetachDeviceFlags(virDomainPtr dom, const char *xml, + unsigned int flags) { virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); @@ -5258,7 +5263,7 @@ vboxSnapshotRedefine(virDomainPtr dom, return ret; } -virDomainSnapshotPtr +static virDomainSnapshotPtr vboxDomainSnapshotCreateXML(virDomainPtr dom, const char *xmlDesc, unsigned int flags) @@ -5512,9 +5517,8 @@ vboxDomainSnapshotGet(vboxGlobalData *data, return snapshot; } -static -int vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPtr def, - virDomainSnapshotPtr snapshot) +static int vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPtr def, + virDomainSnapshotPtr snapshot) { virDomainPtr dom = snapshot->domain; VBOX_OBJECT_CHECK(dom->conn, int, -1); @@ -5732,7 +5736,7 @@ int vboxSnapshotGetReadWriteDisks(virDomainSnapshotDefPtr def, static int vboxSnapshotGetReadOnlyDisks(virDomainSnapshotPtr snapshot, - virDomainSnapshotDefPtr def) + virDomainSnapshotDefPtr def) { virDomainPtr dom = snapshot->domain; VBOX_OBJECT_CHECK(dom->conn, int, -1); @@ -5946,8 +5950,8 @@ int vboxSnapshotGetReadOnlyDisks(virDomainSnapshotPtr snapshot, return ret; } -char *vboxDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot, - unsigned int flags) +static char *vboxDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot, + unsigned int flags) { virDomainPtr dom = snapshot->domain; VBOX_OBJECT_CHECK(dom->conn, char *, NULL); @@ -6085,7 +6089,7 @@ char *vboxDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot, return ret; } -int vboxDomainSnapshotNum(virDomainPtr dom, unsigned int flags) +static int vboxDomainSnapshotNum(virDomainPtr dom, unsigned int flags) { VBOX_OBJECT_CHECK(dom->conn, int, -1); vboxIIDUnion iid; @@ -6125,8 +6129,8 @@ int vboxDomainSnapshotNum(virDomainPtr dom, unsigned int flags) return ret; } -int vboxDomainSnapshotListNames(virDomainPtr dom, char **names, - int nameslen, unsigned int flags) +static int vboxDomainSnapshotListNames(virDomainPtr dom, char **names, + int nameslen, unsigned int flags) { VBOX_OBJECT_CHECK(dom->conn, int, -1); vboxIIDUnion iid; @@ -6204,7 +6208,7 @@ int vboxDomainSnapshotListNames(virDomainPtr dom, char **names, return ret; } -virDomainSnapshotPtr +static virDomainSnapshotPtr vboxDomainSnapshotLookupByName(virDomainPtr dom, const char *name, unsigned int flags) { @@ -6230,8 +6234,8 @@ vboxDomainSnapshotLookupByName(virDomainPtr dom, const char *name, return ret; } -int vboxDomainHasCurrentSnapshot(virDomainPtr dom, - unsigned int flags) +static int vboxDomainHasCurrentSnapshot(virDomainPtr dom, + unsigned int flags) { VBOX_OBJECT_CHECK(dom->conn, int, -1); vboxIIDUnion iid; @@ -6262,7 +6266,7 @@ int vboxDomainHasCurrentSnapshot(virDomainPtr dom, return ret; } -virDomainSnapshotPtr +static virDomainSnapshotPtr vboxDomainSnapshotGetParent(virDomainSnapshotPtr snapshot, unsigned int flags) { @@ -6323,7 +6327,7 @@ vboxDomainSnapshotGetParent(virDomainSnapshotPtr snapshot, return ret; } -virDomainSnapshotPtr +static virDomainSnapshotPtr vboxDomainSnapshotCurrent(virDomainPtr dom, unsigned int flags) { VBOX_OBJECT_CHECK(dom->conn, virDomainSnapshotPtr, NULL); @@ -6376,8 +6380,8 @@ vboxDomainSnapshotCurrent(virDomainPtr dom, unsigned int flags) return ret; } -int vboxDomainSnapshotIsCurrent(virDomainSnapshotPtr snapshot, - unsigned int flags) +static int vboxDomainSnapshotIsCurrent(virDomainSnapshotPtr snapshot, + unsigned int flags) { virDomainPtr dom = snapshot->domain; VBOX_OBJECT_CHECK(dom->conn, int, -1); @@ -6433,8 +6437,8 @@ int vboxDomainSnapshotIsCurrent(virDomainSnapshotPtr snapshot, return ret; } -int vboxDomainSnapshotHasMetadata(virDomainSnapshotPtr snapshot, - unsigned int flags) +static int vboxDomainSnapshotHasMetadata(virDomainSnapshotPtr snapshot, + unsigned int flags) { virDomainPtr dom = snapshot->domain; VBOX_OBJECT_CHECK(dom->conn, int, -1); @@ -6460,8 +6464,8 @@ int vboxDomainSnapshotHasMetadata(virDomainSnapshotPtr snapshot, return ret; } -int vboxDomainRevertToSnapshot(virDomainSnapshotPtr snapshot, - unsigned int flags) +static int vboxDomainRevertToSnapshot(virDomainSnapshotPtr snapshot, + unsigned int flags) { virDomainPtr dom = snapshot->domain; VBOX_OBJECT_CHECK(dom->conn, int, -1); @@ -7056,8 +7060,8 @@ vboxDomainSnapshotDeleteMetadataOnly(virDomainSnapshotPtr snapshot) return ret; } -int vboxDomainSnapshotDelete(virDomainSnapshotPtr snapshot, - unsigned int flags) +static int vboxDomainSnapshotDelete(virDomainSnapshotPtr snapshot, + unsigned int flags) { virDomainPtr dom = snapshot->domain; VBOX_OBJECT_CHECK(dom->conn, int, -1); @@ -7137,7 +7141,7 @@ int vboxDomainSnapshotDelete(virDomainSnapshotPtr snapshot, return ret; } -char * +static char * vboxDomainScreenshot(virDomainPtr dom, virStreamPtr st, unsigned int screen, @@ -7265,7 +7269,7 @@ vboxDomainScreenshot(virDomainPtr dom, } #define MATCH(FLAG) (flags & (FLAG)) -int +static int vboxConnectListAllDomains(virConnectPtr conn, virDomainPtr **domains, unsigned int flags) @@ -7421,14 +7425,14 @@ vboxConnectListAllDomains(virConnectPtr conn, } #undef MATCH -int +static int vboxNodeGetInfo(virConnectPtr conn ATTRIBUTE_UNUSED, virNodeInfoPtr nodeinfo) { return nodeGetInfo(nodeinfo); } -int +static int vboxNodeGetCellsFreeMemory(virConnectPtr conn ATTRIBUTE_UNUSED, unsigned long long *freeMems, int startCell, @@ -7437,7 +7441,7 @@ vboxNodeGetCellsFreeMemory(virConnectPtr conn ATTRIBUTE_UNUSED, return nodeGetCellsFreeMemory(freeMems, startCell, maxCells); } -unsigned long long +static unsigned long long vboxNodeGetFreeMemory(virConnectPtr conn ATTRIBUTE_UNUSED) { unsigned long long freeMem; @@ -7446,7 +7450,7 @@ vboxNodeGetFreeMemory(virConnectPtr conn ATTRIBUTE_UNUSED) return freeMem; } -int +static int vboxNodeGetFreePages(virConnectPtr conn ATTRIBUTE_UNUSED, unsigned int npages, unsigned int *pages, @@ -7459,3 +7463,88 @@ vboxNodeGetFreePages(virConnectPtr conn ATTRIBUTE_UNUSED, return nodeGetFreePages(npages, pages, startCell, cellCount, counts); } + +/** + * Function Tables + */ + +virDriver vboxCommonDriver = { + .no = VIR_DRV_VBOX, + .name = "VBOX", + .connectOpen = vboxConnectOpen, /* 0.6.3 */ + .connectClose = vboxConnectClose, /* 0.6.3 */ + .connectGetVersion = vboxConnectGetVersion, /* 0.6.3 */ + .connectGetHostname = vboxConnectGetHostname, /* 0.6.3 */ + .connectGetMaxVcpus = vboxConnectGetMaxVcpus, /* 0.6.3 */ + .nodeGetInfo = vboxNodeGetInfo, /* 0.6.3 */ + .connectGetCapabilities = vboxConnectGetCapabilities, /* 0.6.3 */ + .connectListDomains = vboxConnectListDomains, /* 0.6.3 */ + .connectNumOfDomains = vboxConnectNumOfDomains, /* 0.6.3 */ + .connectListAllDomains = vboxConnectListAllDomains, /* 0.9.13 */ + .domainCreateXML = vboxDomainCreateXML, /* 0.6.3 */ + .domainLookupByID = vboxDomainLookupByID, /* 0.6.3 */ + .domainLookupByUUID = vboxDomainLookupByUUID, /* 0.6.3 */ + .domainLookupByName = vboxDomainLookupByName, /* 0.6.3 */ + .domainSuspend = vboxDomainSuspend, /* 0.6.3 */ + .domainResume = vboxDomainResume, /* 0.6.3 */ + .domainShutdown = vboxDomainShutdown, /* 0.6.3 */ + .domainShutdownFlags = vboxDomainShutdownFlags, /* 0.9.10 */ + .domainReboot = vboxDomainReboot, /* 0.6.3 */ + .domainDestroy = vboxDomainDestroy, /* 0.6.3 */ + .domainDestroyFlags = vboxDomainDestroyFlags, /* 0.9.4 */ + .domainGetOSType = vboxDomainGetOSType, /* 0.6.3 */ + .domainSetMemory = vboxDomainSetMemory, /* 0.6.3 */ + .domainGetInfo = vboxDomainGetInfo, /* 0.6.3 */ + .domainGetState = vboxDomainGetState, /* 0.9.2 */ + .domainSave = vboxDomainSave, /* 0.6.3 */ + .domainSetVcpus = vboxDomainSetVcpus, /* 0.7.1 */ + .domainSetVcpusFlags = vboxDomainSetVcpusFlags, /* 0.8.5 */ + .domainGetVcpusFlags = vboxDomainGetVcpusFlags, /* 0.8.5 */ + .domainGetMaxVcpus = vboxDomainGetMaxVcpus, /* 0.7.1 */ + .domainGetXMLDesc = vboxDomainGetXMLDesc, /* 0.6.3 */ + .connectListDefinedDomains = vboxConnectListDefinedDomains, /* 0.6.3 */ + .connectNumOfDefinedDomains = vboxConnectNumOfDefinedDomains, /* 0.6.3 */ + .domainCreate = vboxDomainCreate, /* 0.6.3 */ + .domainCreateWithFlags = vboxDomainCreateWithFlags, /* 0.8.2 */ + .domainDefineXML = vboxDomainDefineXML, /* 0.6.3 */ + .domainUndefine = vboxDomainUndefine, /* 0.6.3 */ + .domainUndefineFlags = vboxDomainUndefineFlags, /* 0.9.5 */ + .domainAttachDevice = vboxDomainAttachDevice, /* 0.6.3 */ + .domainAttachDeviceFlags = vboxDomainAttachDeviceFlags, /* 0.7.7 */ + .domainDetachDevice = vboxDomainDetachDevice, /* 0.6.3 */ + .domainDetachDeviceFlags = vboxDomainDetachDeviceFlags, /* 0.7.7 */ + .domainUpdateDeviceFlags = vboxDomainUpdateDeviceFlags, /* 0.8.0 */ + .nodeGetCellsFreeMemory = vboxNodeGetCellsFreeMemory, /* 0.6.5 */ + .nodeGetFreeMemory = vboxNodeGetFreeMemory, /* 0.6.5 */ + .connectIsEncrypted = vboxConnectIsEncrypted, /* 0.7.3 */ + .connectIsSecure = vboxConnectIsSecure, /* 0.7.3 */ + .domainIsActive = vboxDomainIsActive, /* 0.7.3 */ + .domainIsPersistent = vboxDomainIsPersistent, /* 0.7.3 */ + .domainIsUpdated = vboxDomainIsUpdated, /* 0.8.6 */ + .domainSnapshotCreateXML = vboxDomainSnapshotCreateXML, /* 0.8.0 */ + .domainSnapshotGetXMLDesc = vboxDomainSnapshotGetXMLDesc, /* 0.8.0 */ + .domainSnapshotNum = vboxDomainSnapshotNum, /* 0.8.0 */ + .domainSnapshotListNames = vboxDomainSnapshotListNames, /* 0.8.0 */ + .domainSnapshotLookupByName = vboxDomainSnapshotLookupByName, /* 0.8.0 */ + .domainHasCurrentSnapshot = vboxDomainHasCurrentSnapshot, /* 0.8.0 */ + .domainSnapshotGetParent = vboxDomainSnapshotGetParent, /* 0.9.7 */ + .domainSnapshotCurrent = vboxDomainSnapshotCurrent, /* 0.8.0 */ + .domainSnapshotIsCurrent = vboxDomainSnapshotIsCurrent, /* 0.9.13 */ + .domainSnapshotHasMetadata = vboxDomainSnapshotHasMetadata, /* 0.9.13 */ + .domainRevertToSnapshot = vboxDomainRevertToSnapshot, /* 0.8.0 */ + .domainSnapshotDelete = vboxDomainSnapshotDelete, /* 0.8.0 */ + .connectIsAlive = vboxConnectIsAlive, /* 0.9.8 */ + .nodeGetFreePages = vboxNodeGetFreePages, /* 1.2.6 */ +}; + +static void updateDriver(void) +{ + /* Update the vboxDriver according to the vboxUniformedAPI. + * We need to make sure the vboxUniformedAPI is initialized + * before calling this function. */ + gVBoxAPI.registerDomainEvent(&vboxCommonDriver); + if (gVBoxAPI.supportScreenshot) + vboxCommonDriver.domainScreenshot = vboxDomainScreenshot; + else + vboxCommonDriver.domainScreenshot = NULL; +} diff --git a/src/vbox/vbox_driver.c b/src/vbox/vbox_driver.c index 37b772c..f0c05fe 100644 --- a/src/vbox/vbox_driver.c +++ b/src/vbox/vbox_driver.c @@ -48,37 +48,29 @@ VIR_LOG_INIT("vbox.vbox_driver"); -extern virDriver vbox22Driver; extern virNetworkDriver vbox22NetworkDriver; extern virStorageDriver vbox22StorageDriver; -extern virDriver vbox30Driver; extern virNetworkDriver vbox30NetworkDriver; extern virStorageDriver vbox30StorageDriver; -extern virDriver vbox31Driver; extern virNetworkDriver vbox31NetworkDriver; extern virStorageDriver vbox31StorageDriver; -extern virDriver vbox32Driver; extern virNetworkDriver vbox32NetworkDriver; extern virStorageDriver vbox32StorageDriver; -extern virDriver vbox40Driver; extern virNetworkDriver vbox40NetworkDriver; extern virStorageDriver vbox40StorageDriver; -extern virDriver vbox41Driver; extern virNetworkDriver vbox41NetworkDriver; extern virStorageDriver vbox41StorageDriver; -extern virDriver vbox42Driver; extern virNetworkDriver vbox42NetworkDriver; extern virStorageDriver vbox42StorageDriver; -extern virDriver vbox42_20Driver; extern virNetworkDriver vbox42_20NetworkDriver; extern virStorageDriver vbox42_20StorageDriver; -extern virDriver vbox43Driver; extern virNetworkDriver vbox43NetworkDriver; extern virStorageDriver vbox43StorageDriver; -extern virDriver vbox43_4Driver; extern virNetworkDriver vbox43_4NetworkDriver; extern virStorageDriver vbox43_4StorageDriver; +extern virDriver vboxCommonDriver; + static virDriver vboxDriverDummy; #define VIR_FROM_THIS VIR_FROM_VBOX @@ -114,59 +106,53 @@ int vboxRegister(void) */ if (uVersion >= 2001052 && uVersion < 2002051) { VIR_DEBUG("VirtualBox API version: 2.2"); - driver = &vbox22Driver; networkDriver = &vbox22NetworkDriver; storageDriver = &vbox22StorageDriver; } else if (uVersion >= 2002051 && uVersion < 3000051) { VIR_DEBUG("VirtualBox API version: 3.0"); - driver = &vbox30Driver; networkDriver = &vbox30NetworkDriver; storageDriver = &vbox30StorageDriver; } else if (uVersion >= 3000051 && uVersion < 3001051) { VIR_DEBUG("VirtualBox API version: 3.1"); - driver = &vbox31Driver; networkDriver = &vbox31NetworkDriver; storageDriver = &vbox31StorageDriver; } else if (uVersion >= 3001051 && uVersion < 3002051) { VIR_DEBUG("VirtualBox API version: 3.2"); - driver = &vbox32Driver; networkDriver = &vbox32NetworkDriver; storageDriver = &vbox32StorageDriver; } else if (uVersion >= 3002051 && uVersion < 4000051) { VIR_DEBUG("VirtualBox API version: 4.0"); - driver = &vbox40Driver; networkDriver = &vbox40NetworkDriver; storageDriver = &vbox40StorageDriver; } else if (uVersion >= 4000051 && uVersion < 4001051) { VIR_DEBUG("VirtualBox API version: 4.1"); - driver = &vbox41Driver; networkDriver = &vbox41NetworkDriver; storageDriver = &vbox41StorageDriver; } else if (uVersion >= 4001051 && uVersion < 4002020) { VIR_DEBUG("VirtualBox API version: 4.2"); - driver = &vbox42Driver; networkDriver = &vbox42NetworkDriver; storageDriver = &vbox42StorageDriver; } else if (uVersion >= 4002020 && uVersion < 4002051) { VIR_DEBUG("VirtualBox API version: 4.2.20 or higher"); - driver = &vbox42_20Driver; networkDriver = &vbox42_20NetworkDriver; storageDriver = &vbox42_20StorageDriver; } else if (uVersion >= 4002051 && uVersion < 4003004) { VIR_DEBUG("VirtualBox API version: 4.3"); - driver = &vbox43Driver; networkDriver = &vbox43NetworkDriver; storageDriver = &vbox43StorageDriver; } else if (uVersion >= 4003004 && uVersion < 4003051) { VIR_DEBUG("VirtualBox API version: 4.3.4 or higher"); - driver = &vbox43_4Driver; networkDriver = &vbox43_4NetworkDriver; storageDriver = &vbox43_4StorageDriver; } else { VIR_DEBUG("Unsupported VirtualBox API version: %u", uVersion); } /* Register vboxUniformedAPI. */ - vboxRegisterUniformedAPI(uVersion); + if (vboxRegisterUniformedAPI(uVersion) == 0) + /* Only if successfully register the uniformed api, + * can we use the vboxCommonDriver. Or use the + * vboxDriverDummy in case of failure. */ + driver = &vboxCommonDriver; } else { VIR_DEBUG("VBoxCGlueInit failed, using dummy driver"); } diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c index fbd0d08..de833dc 100644 --- a/src/vbox/vbox_tmpl.c +++ b/src/vbox/vbox_tmpl.c @@ -6477,86 +6477,6 @@ void NAME(InstallUniformedAPI)(vboxUniformedAPI *pVBoxAPI) * Function Tables */ -virDriver NAME(Driver) = { - .no = VIR_DRV_VBOX, - .name = "VBOX", - .connectOpen = vboxConnectOpen, /* 0.6.3 */ - .connectClose = vboxConnectClose, /* 0.6.3 */ - .connectGetVersion = vboxConnectGetVersion, /* 0.6.3 */ - .connectGetHostname = vboxConnectGetHostname, /* 0.6.3 */ - .connectGetMaxVcpus = vboxConnectGetMaxVcpus, /* 0.6.3 */ - .nodeGetInfo = vboxNodeGetInfo, /* 0.6.3 */ - .connectGetCapabilities = vboxConnectGetCapabilities, /* 0.6.3 */ - .connectListDomains = vboxConnectListDomains, /* 0.6.3 */ - .connectNumOfDomains = vboxConnectNumOfDomains, /* 0.6.3 */ - .connectListAllDomains = vboxConnectListAllDomains, /* 0.9.13 */ - .domainCreateXML = vboxDomainCreateXML, /* 0.6.3 */ - .domainLookupByID = vboxDomainLookupByID, /* 0.6.3 */ - .domainLookupByUUID = vboxDomainLookupByUUID, /* 0.6.3 */ - .domainLookupByName = vboxDomainLookupByName, /* 0.6.3 */ - .domainSuspend = vboxDomainSuspend, /* 0.6.3 */ - .domainResume = vboxDomainResume, /* 0.6.3 */ - .domainShutdown = vboxDomainShutdown, /* 0.6.3 */ - .domainShutdownFlags = vboxDomainShutdownFlags, /* 0.9.10 */ - .domainReboot = vboxDomainReboot, /* 0.6.3 */ - .domainDestroy = vboxDomainDestroy, /* 0.6.3 */ - .domainDestroyFlags = vboxDomainDestroyFlags, /* 0.9.4 */ - .domainGetOSType = vboxDomainGetOSType, /* 0.6.3 */ - .domainSetMemory = vboxDomainSetMemory, /* 0.6.3 */ - .domainGetInfo = vboxDomainGetInfo, /* 0.6.3 */ - .domainGetState = vboxDomainGetState, /* 0.9.2 */ - .domainSave = vboxDomainSave, /* 0.6.3 */ - .domainSetVcpus = vboxDomainSetVcpus, /* 0.7.1 */ - .domainSetVcpusFlags = vboxDomainSetVcpusFlags, /* 0.8.5 */ - .domainGetVcpusFlags = vboxDomainGetVcpusFlags, /* 0.8.5 */ - .domainGetMaxVcpus = vboxDomainGetMaxVcpus, /* 0.7.1 */ - .domainGetXMLDesc = vboxDomainGetXMLDesc, /* 0.6.3 */ - .connectListDefinedDomains = vboxConnectListDefinedDomains, /* 0.6.3 */ - .connectNumOfDefinedDomains = vboxConnectNumOfDefinedDomains, /* 0.6.3 */ - .domainCreate = vboxDomainCreate, /* 0.6.3 */ - .domainCreateWithFlags = vboxDomainCreateWithFlags, /* 0.8.2 */ - .domainDefineXML = vboxDomainDefineXML, /* 0.6.3 */ - .domainUndefine = vboxDomainUndefine, /* 0.6.3 */ - .domainUndefineFlags = vboxDomainUndefineFlags, /* 0.9.5 */ - .domainAttachDevice = vboxDomainAttachDevice, /* 0.6.3 */ - .domainAttachDeviceFlags = vboxDomainAttachDeviceFlags, /* 0.7.7 */ - .domainDetachDevice = vboxDomainDetachDevice, /* 0.6.3 */ - .domainDetachDeviceFlags = vboxDomainDetachDeviceFlags, /* 0.7.7 */ - .domainUpdateDeviceFlags = vboxDomainUpdateDeviceFlags, /* 0.8.0 */ - .nodeGetCellsFreeMemory = vboxNodeGetCellsFreeMemory, /* 0.6.5 */ - .nodeGetFreeMemory = vboxNodeGetFreeMemory, /* 0.6.5 */ -#if VBOX_API_VERSION >= 4000000 - .domainScreenshot = vboxDomainScreenshot, /* 0.9.2 */ -#endif -#if VBOX_API_VERSION > 2002000 && VBOX_API_VERSION < 4000000 - .connectDomainEventRegister = vboxConnectDomainEventRegister, /* 0.7.0 */ - .connectDomainEventDeregister = vboxConnectDomainEventDeregister, /* 0.7.0 */ -#endif - .connectIsEncrypted = vboxConnectIsEncrypted, /* 0.7.3 */ - .connectIsSecure = vboxConnectIsSecure, /* 0.7.3 */ - .domainIsActive = vboxDomainIsActive, /* 0.7.3 */ - .domainIsPersistent = vboxDomainIsPersistent, /* 0.7.3 */ - .domainIsUpdated = vboxDomainIsUpdated, /* 0.8.6 */ -#if VBOX_API_VERSION > 2002000 && VBOX_API_VERSION < 4000000 - .connectDomainEventRegisterAny = vboxConnectDomainEventRegisterAny, /* 0.8.0 */ - .connectDomainEventDeregisterAny = vboxConnectDomainEventDeregisterAny, /* 0.8.0 */ -#endif - .domainSnapshotCreateXML = vboxDomainSnapshotCreateXML, /* 0.8.0 */ - .domainSnapshotGetXMLDesc = vboxDomainSnapshotGetXMLDesc, /* 0.8.0 */ - .domainSnapshotNum = vboxDomainSnapshotNum, /* 0.8.0 */ - .domainSnapshotListNames = vboxDomainSnapshotListNames, /* 0.8.0 */ - .domainSnapshotLookupByName = vboxDomainSnapshotLookupByName, /* 0.8.0 */ - .domainHasCurrentSnapshot = vboxDomainHasCurrentSnapshot, /* 0.8.0 */ - .domainSnapshotGetParent = vboxDomainSnapshotGetParent, /* 0.9.7 */ - .domainSnapshotCurrent = vboxDomainSnapshotCurrent, /* 0.8.0 */ - .domainSnapshotIsCurrent = vboxDomainSnapshotIsCurrent, /* 0.9.13 */ - .domainSnapshotHasMetadata = vboxDomainSnapshotHasMetadata, /* 0.9.13 */ - .domainRevertToSnapshot = vboxDomainRevertToSnapshot, /* 0.8.0 */ - .domainSnapshotDelete = vboxDomainSnapshotDelete, /* 0.8.0 */ - .connectIsAlive = vboxConnectIsAlive, /* 0.9.8 */ - .nodeGetFreePages = vboxNodeGetFreePages, /* 1.2.6 */ -}; - virNetworkDriver NAME(NetworkDriver) = { "VBOX", .networkOpen = vboxNetworkOpen, /* 0.6.4 */ diff --git a/src/vbox/vbox_uniformed_api.h b/src/vbox/vbox_uniformed_api.h index c0586c0..41ce40f 100644 --- a/src/vbox/vbox_uniformed_api.h +++ b/src/vbox/vbox_uniformed_api.h @@ -532,111 +532,8 @@ typedef struct { bool supportScreenshot; } vboxUniformedAPI; -/* libvirt API - * These API would be removed after we generate the - * vboxDriver in common code. - */ -virDrvOpenStatus vboxConnectOpen(virConnectPtr conn, - virConnectAuthPtr auth, - unsigned int flags); -int vboxConnectClose(virConnectPtr conn); -int vboxDomainSave(virDomainPtr dom, const char *path); -int vboxConnectGetVersion(virConnectPtr conn, unsigned long *version); -char *vboxConnectGetHostname(virConnectPtr conn); -int vboxConnectIsSecure(virConnectPtr conn); -int vboxConnectIsEncrypted(virConnectPtr conn); -int vboxConnectIsAlive(virConnectPtr conn); -int vboxConnectGetMaxVcpus(virConnectPtr conn, const char *type); -char *vboxConnectGetCapabilities(virConnectPtr conn); -int vboxConnectListDomains(virConnectPtr conn, int *ids, int nids); -int vboxConnectNumOfDomains(virConnectPtr conn); -virDomainPtr vboxDomainLookupByID(virConnectPtr conn, int id); virDomainPtr vboxDomainLookupByUUID(virConnectPtr conn, const unsigned char *uuid); -virDomainPtr -vboxDomainLookupByName(virConnectPtr conn, const char *name); -virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml); -int vboxDomainUndefineFlags(virDomainPtr dom, unsigned int flags); -int vboxDomainUndefine(virDomainPtr dom); -int vboxDomainCreateWithFlags(virDomainPtr dom, unsigned int flags); -int vboxDomainCreate(virDomainPtr dom); -virDomainPtr vboxDomainCreateXML(virConnectPtr conn, const char *xml, - unsigned int flags); -int vboxDomainIsActive(virDomainPtr dom); -int vboxDomainIsPersistent(virDomainPtr dom); -int vboxDomainIsUpdated(virDomainPtr dom); -int vboxDomainSuspend(virDomainPtr dom); -int vboxDomainResume(virDomainPtr dom); -int vboxDomainShutdownFlags(virDomainPtr dom, unsigned int flags); -int vboxDomainShutdown(virDomainPtr dom); -int vboxDomainReboot(virDomainPtr dom, unsigned int flags); -int vboxDomainDestroyFlags(virDomainPtr dom, unsigned int flags); -int vboxDomainDestroy(virDomainPtr dom); -char *vboxDomainGetOSType(virDomainPtr dom); -int vboxDomainSetMemory(virDomainPtr dom, unsigned long memory); -int vboxDomainGetInfo(virDomainPtr dom, virDomainInfoPtr info); -int vboxDomainGetState(virDomainPtr dom, int *state, - int *reason, unsigned int flags); -int vboxDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus, - unsigned int flags); -int vboxDomainSetVcpus(virDomainPtr dom, unsigned int nvcpus); -int vboxDomainGetVcpusFlags(virDomainPtr dom, unsigned int flags); -int vboxDomainGetMaxVcpus(virDomainPtr dom); -char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int flags); -int vboxConnectListDefinedDomains(virConnectPtr conn, - char ** const names, int maxnames); -int vboxConnectNumOfDefinedDomains(virConnectPtr conn); -int vboxDomainAttachDevice(virDomainPtr dom, const char *xml); -int vboxDomainAttachDeviceFlags(virDomainPtr dom, const char *xml, - unsigned int flags); -int vboxDomainUpdateDeviceFlags(virDomainPtr dom, const char *xml, - unsigned int flags); -int vboxDomainDetachDevice(virDomainPtr dom, const char *xml); -int vboxDomainDetachDeviceFlags(virDomainPtr dom, const char *xml, - unsigned int flags); -virDomainSnapshotPtr -vboxDomainSnapshotCreateXML(virDomainPtr dom, - const char *xmlDesc, - unsigned int flags); -char *vboxDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot, - unsigned int flags); -int vboxDomainSnapshotNum(virDomainPtr dom, unsigned int flags); -int vboxDomainSnapshotListNames(virDomainPtr dom, char **names, - int nameslen, unsigned int flags); -virDomainSnapshotPtr -vboxDomainSnapshotLookupByName(virDomainPtr dom, const char *name, - unsigned int flags); -int vboxDomainHasCurrentSnapshot(virDomainPtr dom, unsigned int flags); -virDomainSnapshotPtr -vboxDomainSnapshotGetParent(virDomainSnapshotPtr snapshot, - unsigned int flags); -virDomainSnapshotPtr -vboxDomainSnapshotCurrent(virDomainPtr dom, unsigned int flags); -int vboxDomainSnapshotIsCurrent(virDomainSnapshotPtr snapshot, - unsigned int flags); -int vboxDomainSnapshotHasMetadata(virDomainSnapshotPtr snapshot, - unsigned int flags); -int vboxDomainRevertToSnapshot(virDomainSnapshotPtr snapshot, - unsigned int flags); -int vboxDomainSnapshotDelete(virDomainSnapshotPtr snapshot, - unsigned int flags); -char *vboxDomainScreenshot(virDomainPtr dom, virStreamPtr st, - unsigned int screen, unsigned int flags); -int vboxConnectListAllDomains(virConnectPtr conn, virDomainPtr **domains, - unsigned int flags); -int vboxNodeGetInfo(virConnectPtr conn, virNodeInfoPtr nodeinfo); -int vboxNodeGetCellsFreeMemory(virConnectPtr conn, - unsigned long long *freeMems, - int startCell, - int maxCells); -unsigned long long vboxNodeGetFreeMemory(virConnectPtr); -int vboxNodeGetFreePages(virConnectPtr conn, - unsigned int npages, - unsigned int *pages, - int startCell, - unsigned int cellCount, - unsigned long long *counts, - unsigned int flags); /* Version specified functions for installing uniformed API */ void vbox22InstallUniformedAPI(vboxUniformedAPI *pVBoxAPI); -- 1.7.9.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list