virMutexUnlock(&vbox_driver_lock);
}
-static int openSessionForMachine(vboxGlobalData *data, const unsigned char *dom_uuid, vboxIIDUnion *iid,
+static int openSessionForMachine(vboxDriverPtr data, const unsigned char *dom_uuid, vboxIIDUnion *iid,
IMachine **machine, bool checkflag)
{
VBOX_IID_INITIALIZE(iid);
static int
vboxDomainSave(virDomainPtr dom, const char *path ATTRIBUTE_UNUSED)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
IConsole *console = NULL;
vboxIIDUnion iid;
IMachine *machine = NULL;
return ret;
}
-static void vboxDriverLock(vboxGlobalData *data)
-{
- virMutexLock(&data->lock);
-}
-
-static void vboxDriverUnlock(vboxGlobalData *data)
-{
- virMutexUnlock(&data->lock);
-}
-
static int vboxConnectGetVersion(virConnectPtr conn, unsigned long *version)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
VIR_DEBUG("%s: in vboxGetVersion", conn->driver->name);
- vboxDriverLock(data);
+ virObjectLock(data);
*version = data->version;
- vboxDriverUnlock(data);
+ virObjectUnlock(data);
return 0;
}
static int
vboxConnectGetMaxVcpus(virConnectPtr conn, const char *type ATTRIBUTE_UNUSED)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
PRUint32 maxCPUCount = 0;
int ret = -1;
static char *vboxConnectGetCapabilities(virConnectPtr conn)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
char *ret = NULL;
if (!data->vboxObj)
return ret;
- vboxDriverLock(data);
+ virObjectLock(data);
ret = virCapabilitiesFormatXML(data->caps);
- vboxDriverUnlock(data);
+ virObjectUnlock(data);
return ret;
}
static int vboxConnectListDomains(virConnectPtr conn, int *ids, int nids)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
vboxArray machines = VBOX_ARRAY_INITIALIZER;
PRUint32 state;
nsresult rc;
static int vboxConnectNumOfDomains(virConnectPtr conn)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
vboxArray machines = VBOX_ARRAY_INITIALIZER;
PRUint32 state;
nsresult rc;
static virDomainPtr vboxDomainLookupByID(virConnectPtr conn, int id)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
vboxArray machines = VBOX_ARRAY_INITIALIZER;
IMachine *machine;
PRBool isAccessible = PR_FALSE;
virDomainPtr vboxDomainLookupByUUID(virConnectPtr conn,
const unsigned char *uuid)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
vboxArray machines = VBOX_ARRAY_INITIALIZER;
vboxIIDUnion iid;
char *machineNameUtf8 = NULL;
static virDomainPtr
vboxDomainLookupByName(virConnectPtr conn, const char *name)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
vboxArray machines = VBOX_ARRAY_INITIALIZER;
vboxIIDUnion iid;
char *machineNameUtf8 = NULL;
}
static void
-vboxSetBootDeviceOrder(virDomainDefPtr def, vboxGlobalData *data,
+vboxSetBootDeviceOrder(virDomainDefPtr def, vboxDriverPtr data,
IMachine *machine)
{
ISystemProperties *systemProperties = NULL;
}
static void
-vboxAttachDrivesNew(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
+vboxAttachDrivesNew(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine)
{
/* AttachDrives for 3.0 and later */
size_t i;
}
static void
-vboxAttachDrives(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
+vboxAttachDrives(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine)
{
/* Here, About the vboxAttachDrives. In fact,there is
* three different implementations. We name it as
}
static int
-vboxAttachNetwork(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
+vboxAttachNetwork(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine)
{
ISystemProperties *systemProperties = NULL;
PRUint32 chipsetType = ChipsetType_Null;
}
static void
-vboxAttachSerial(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
+vboxAttachSerial(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine)
{
ISystemProperties *systemProperties = NULL;
PRUint32 serialPortCount = 0;
}
static void
-vboxAttachParallel(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
+vboxAttachParallel(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine)
{
ISystemProperties *systemProperties = NULL;
PRUint32 parallelPortCount = 0;
}
static void
-vboxAttachDisplay(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
+vboxAttachDisplay(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine)
{
int vrdpPresent = 0;
int sdlPresent = 0;
}
static void
-vboxAttachUSB(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
+vboxAttachUSB(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine)
{
IUSBCommon *USBCommon = NULL;
size_t i = 0;
}
static void
-vboxAttachSharedFolder(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
+vboxAttachSharedFolder(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine)
{
size_t i;
PRUnichar *nameUtf16;
static virDomainPtr
vboxDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
IMachine *machine = NULL;
IBIOSSettings *bios = NULL;
vboxIIDUnion mchiid;
}
static void
-detachDevices_common(vboxGlobalData *data, vboxIIDUnion *iidu)
+detachDevices_common(vboxDriverPtr data, vboxIIDUnion *iidu)
{
/* Block for checking if HDD's are attched to VM.
* considering just IDE bus for now. Also skipped
static int vboxDomainUndefineFlags(virDomainPtr dom, unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
IMachine *machine = NULL;
vboxIIDUnion iid;
nsresult rc;
static int
vboxStartMachine(virDomainPtr dom, int maxDomID, IMachine *machine, vboxIIDUnion *iid)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
int vrdpPresent = 0;
int sdlPresent = 0;
int guiPresent = 0;
static int vboxDomainCreateWithFlags(virDomainPtr dom, unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxArray machines = VBOX_ARRAY_INITIALIZER;
unsigned char uuid[VIR_UUID_BUFLEN] = {0};
nsresult rc;
static int vboxDomainIsActive(virDomainPtr dom)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxArray machines = VBOX_ARRAY_INITIALIZER;
vboxIIDUnion iid;
char *machineNameUtf8 = NULL;
{
/* All domains are persistent. However, we do want to check for
* existence. */
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion iid;
IMachine *machine = NULL;
int ret = -1;
{
/* VBox domains never have a persistent state that differs from
* current state. However, we do want to check for existence. */
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion iid;
IMachine *machine = NULL;
int ret = -1;
static int vboxDomainSuspend(virDomainPtr dom)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
IMachine *machine = NULL;
vboxIIDUnion iid;
IConsole *console = NULL;
static int vboxDomainResume(virDomainPtr dom)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
IMachine *machine = NULL;
vboxIIDUnion iid;
IConsole *console = NULL;
static int vboxDomainShutdownFlags(virDomainPtr dom, unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
IMachine *machine = NULL;
vboxIIDUnion iid;
IConsole *console = NULL;
static int vboxDomainReboot(virDomainPtr dom, unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
IMachine *machine = NULL;
vboxIIDUnion iid;
IConsole *console = NULL;
static int vboxDomainDestroyFlags(virDomainPtr dom, unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
IMachine *machine = NULL;
vboxIIDUnion iid;
IConsole *console = NULL;
static int vboxDomainSetMemory(virDomainPtr dom, unsigned long memory)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
IMachine *machine = NULL;
vboxIIDUnion iid;
PRUint32 state;
static int vboxDomainGetInfo(virDomainPtr dom, virDomainInfoPtr info)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxArray machines = VBOX_ARRAY_INITIALIZER;
char *machineName = NULL;
PRUnichar *machineNameUtf16 = NULL;
static int vboxDomainGetState(virDomainPtr dom, int *state,
int *reason, unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion domiid;
IMachine *machine = NULL;
PRUint32 mstate;
static int vboxDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus,
unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
IMachine *machine = NULL;
vboxIIDUnion iid;
PRUint32 CPUCount = nvcpus;
static int vboxDomainGetVcpusFlags(virDomainPtr dom, unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
ISystemProperties *systemProperties = NULL;
PRUint32 maxCPUCount = 0;
int ret = -1;
}
static void
-vboxHostDeviceGetXMLDesc(vboxGlobalData *data, virDomainDefPtr def, IMachine *machine)
+vboxHostDeviceGetXMLDesc(vboxDriverPtr data, virDomainDefPtr def, IMachine *machine)
{
IUSBCommon *USBCommon = NULL;
PRBool enabled = PR_FALSE;
}
static void
-vboxDumpIDEHDDsNew(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
+vboxDumpIDEHDDsNew(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine)
{
/* dump IDE hdds if present */
vboxArray mediumAttachments = VBOX_ARRAY_INITIALIZER;
}
static int
-vboxDumpVideo(virDomainDefPtr def, vboxGlobalData *data ATTRIBUTE_UNUSED,
+vboxDumpVideo(virDomainDefPtr def, vboxDriverPtr data ATTRIBUTE_UNUSED,
IMachine *machine)
{
/* dump video options vram/2d/3d/directx/etc. */
}
static int
-vboxDumpDisplay(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
+vboxDumpDisplay(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine)
{
/* dump display options vrdp/gui/sdl */
PRUnichar *keyUtf16 = NULL;
}
static void
-vboxDumpSharedFolders(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
+vboxDumpSharedFolders(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine)
{
/* shared folders */
vboxArray sharedFolders = VBOX_ARRAY_INITIALIZER;
}
static void
-vboxDumpNetwork(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine, PRUint32 networkAdapterCount)
+vboxDumpNetwork(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine, PRUint32 networkAdapterCount)
{
PRUint32 netAdpIncCnt = 0;
size_t i = 0;
}
static void
-vboxDumpAudio(virDomainDefPtr def, vboxGlobalData *data ATTRIBUTE_UNUSED,
+vboxDumpAudio(virDomainDefPtr def, vboxDriverPtr data ATTRIBUTE_UNUSED,
IMachine *machine)
{
/* dump sound card if active */
}
static void
-vboxDumpSerial(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine, PRUint32 serialPortCount)
+vboxDumpSerial(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine, PRUint32 serialPortCount)
{
PRUint32 serialPortIncCount = 0;
size_t i = 0;
}
static void
-vboxDumpParallel(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine, PRUint32 parallelPortCount)
+vboxDumpParallel(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine, PRUint32 parallelPortCount)
{
PRUint32 parallelPortIncCount = 0;
size_t i = 0;
static char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
virDomainDefPtr def = NULL;
IMachine *machine = NULL;
vboxIIDUnion iid;
static int vboxConnectListDefinedDomains(virConnectPtr conn,
char ** const names, int maxnames)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
vboxArray machines = VBOX_ARRAY_INITIALIZER;
char *machineName = NULL;
PRUnichar *machineNameUtf16 = NULL;
static int vboxConnectNumOfDefinedDomains(virConnectPtr conn)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
vboxArray machines = VBOX_ARRAY_INITIALIZER;
PRUint32 state;
nsresult rc;
const char *xml,
int mediaChangeOnly ATTRIBUTE_UNUSED)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
IMachine *machine = NULL;
vboxIIDUnion iid;
PRUint32 state;
static int vboxDomainDetachDevice(virDomainPtr dom, const char *xml)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
IMachine *machine = NULL;
vboxIIDUnion iid;
PRUint32 state;
static int vboxCloseDisksRecursively(virDomainPtr dom, char *location)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
nsresult rc;
size_t i = 0;
PRUnichar *locationUtf = NULL;
*
* Finally, we register the machine with the new virtualbox description file.
*/
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion domiid;
IMachine *machine = NULL;
nsresult rc;
const char *xmlDesc,
unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
virDomainSnapshotDefPtr def = NULL;
vboxIIDUnion domiid;
IMachine *machine = NULL;
}
static ISnapshot *
-vboxDomainSnapshotGet(vboxGlobalData *data,
+vboxDomainSnapshotGet(vboxDriverPtr data,
virDomainPtr dom,
IMachine *machine,
const char *name)
virDomainSnapshotPtr snapshot)
{
virDomainPtr dom = snapshot->domain;
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion domiid;
IMachine *machine = NULL;
ISnapshot *snap = NULL;
virDomainSnapshotDefPtr def)
{
virDomainPtr dom = snapshot->domain;
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion domiid;
ISnapshot *snap = NULL;
IMachine *machine = NULL;
unsigned int flags)
{
virDomainPtr dom = snapshot->domain;
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion domiid;
IMachine *machine = NULL;
ISnapshot *snap = NULL;
static int vboxDomainSnapshotNum(virDomainPtr dom, unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion iid;
IMachine *machine = NULL;
nsresult rc;
static int vboxDomainSnapshotListNames(virDomainPtr dom, char **names,
int nameslen, unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion iid;
IMachine *machine = NULL;
nsresult rc;
vboxDomainSnapshotLookupByName(virDomainPtr dom, const char *name,
unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion iid;
IMachine *machine = NULL;
ISnapshot *snapshot = NULL;
static int vboxDomainHasCurrentSnapshot(virDomainPtr dom,
unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion iid;
IMachine *machine = NULL;
ISnapshot *snapshot = NULL;
unsigned int flags)
{
virDomainPtr dom = snapshot->domain;
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion iid;
IMachine *machine = NULL;
ISnapshot *snap = NULL;
static virDomainSnapshotPtr
vboxDomainSnapshotCurrent(virDomainPtr dom, unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion iid;
IMachine *machine = NULL;
ISnapshot *snapshot = NULL;
unsigned int flags)
{
virDomainPtr dom = snapshot->domain;
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion iid;
IMachine *machine = NULL;
ISnapshot *snap = NULL;
unsigned int flags)
{
virDomainPtr dom = snapshot->domain;
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion iid;
IMachine *machine = NULL;
ISnapshot *snap = NULL;
unsigned int flags)
{
virDomainPtr dom = snapshot->domain;
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion domiid;
IMachine *machine = NULL;
ISnapshot *newSnapshot = NULL;
}
static int
-vboxDomainSnapshotDeleteSingle(vboxGlobalData *data,
+vboxDomainSnapshotDeleteSingle(vboxDriverPtr data,
IConsole *console,
ISnapshot *snapshot)
{
}
static int
-vboxDomainSnapshotDeleteTree(vboxGlobalData *data,
+vboxDomainSnapshotDeleteTree(vboxDriverPtr data,
IConsole *console,
ISnapshot *snapshot)
{
*/
virDomainPtr dom = snapshot->domain;
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
virDomainSnapshotDefPtr def = NULL;
char *defXml = NULL;
vboxIIDUnion domiid;
unsigned int flags)
{
virDomainPtr dom = snapshot->domain;
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIIDUnion domiid;
IMachine *machine = NULL;
ISnapshot *snap = NULL;
unsigned int screen,
unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
IConsole *console = NULL;
vboxIIDUnion iid;
IMachine *machine = NULL;
virDomainPtr **domains,
unsigned int flags)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
vboxArray machines = VBOX_ARRAY_INITIALIZER;
char *machineNameUtf8 = NULL;
PRUnichar *machineNameUtf16 = NULL;
static int
vboxDomainHasManagedSaveImage(virDomainPtr dom, unsigned int flags)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxArray machines = VBOX_ARRAY_INITIALIZER;
vboxIIDUnion iid;
char *machineNameUtf8 = NULL;
unsigned int flags)
{
int ret = -1;
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
IConsole *console = NULL;
vboxIIDUnion iid;
IMachine *machine = NULL;
if (strUtf16) {\
char *strUtf8 = NULL;\
\
- g_pVBoxGlobalData->pFuncs->pfnUtf16ToUtf8(strUtf16, &strUtf8);\
+ data->pFuncs->pfnUtf16ToUtf8(strUtf16, &strUtf8);\
if (strUtf8) {\
VIR_DEBUG("%s: %s", msg, strUtf8);\
- g_pVBoxGlobalData->pFuncs->pfnUtf8Free(strUtf8);\
+ data->pFuncs->pfnUtf8Free(strUtf8);\
}\
}
(unsigned)(iid)->m3[7]);\
}\
-#if VBOX_API_VERSION > 2002000
-
-/* g_pVBoxGlobalData has to be global variable,
- * there is no other way to make the callbacks
- * work other then having g_pVBoxGlobalData as
- * global, because the functions namely AddRef,
- * Release, etc consider it as global and you
- * can't change the function definition as it
- * is XPCOM nsISupport::* function and it expects
- * them that way
- */
-
-static vboxGlobalData *g_pVBoxGlobalData;
-
-#endif /* !(VBOX_API_VERSION == 2002000) */
-
#if VBOX_API_VERSION < 4000000
# define VBOX_SESSION_OPEN(/* in */ iid_value, /* unused */ machine) \
#endif /* VBOX_API_VERSION >= 4000000 */
-#if VBOX_API_VERSION > 2002000 && VBOX_API_VERSION < 4000000
-/* Since vboxConnectGetCapabilities has been rewritten,
- * vboxDriverLock and vboxDriverUnlock only be used in code for
- * 3.x release. */
-
-static void vboxDriverLock(vboxGlobalData *data)
-{
- virMutexLock(&data->lock);
-}
-
-static void vboxDriverUnlock(vboxGlobalData *data)
-{
- virMutexUnlock(&data->lock);
-}
-
-#endif
-
#if VBOX_API_VERSION == 2002000
static void nsIDtoChar(unsigned char *uuid, const nsID *iid)
# define IID_MEMBER(name) (iidu->vboxIID_v2_x_WIN32.name)
static void
-vboxIIDUnalloc_v2_x_WIN32(vboxGlobalData *data ATTRIBUTE_UNUSED,
+vboxIIDUnalloc_v2_x_WIN32(vboxDriverPtr data ATTRIBUTE_UNUSED,
vboxIID_v2_x_WIN32 *iid ATTRIBUTE_UNUSED)
{
/* Nothing to free */
}
static void
-_vboxIIDUnalloc(vboxGlobalData *data ATTRIBUTE_UNUSED,
+_vboxIIDUnalloc(vboxDriverPtr data ATTRIBUTE_UNUSED,
vboxIIDUnion *iid ATTRIBUTE_UNUSED)
{
/* Nothing to free */
}
static void
-_vboxIIDToUUID(vboxGlobalData *data ATTRIBUTE_UNUSED, vboxIIDUnion *iidu, unsigned char *uuid)
+_vboxIIDToUUID(vboxDriverPtr data ATTRIBUTE_UNUSED, vboxIIDUnion *iidu, unsigned char *uuid)
{
vboxIIDToUUID_v2_x_WIN32(&iidu->vboxIID_v2_x_WIN32, uuid);
}
static void
-vboxIIDFromUUID_v2_x_WIN32(vboxGlobalData *data, vboxIID_v2_x_WIN32 *iid,
+vboxIIDFromUUID_v2_x_WIN32(vboxDriverPtr data, vboxIID_v2_x_WIN32 *iid,
const unsigned char *uuid)
{
vboxIIDUnalloc_v2_x_WIN32(data, iid);
}
static void
-_vboxIIDFromUUID(vboxGlobalData *data, vboxIIDUnion *iidu,
+_vboxIIDFromUUID(vboxDriverPtr data, vboxIIDUnion *iidu,
const unsigned char *uuid)
{
vboxIIDFromUUID_v2_x_WIN32(data, &iidu->vboxIID_v2_x_WIN32, uuid);
}
static bool
-_vboxIIDIsEqual(vboxGlobalData *data ATTRIBUTE_UNUSED, vboxIIDUnion *iidu1, vboxIIDUnion *iidu2)
+_vboxIIDIsEqual(vboxDriverPtr data ATTRIBUTE_UNUSED, vboxIIDUnion *iidu1, vboxIIDUnion *iidu2)
{
return vboxIIDIsEqual_v2_x_WIN32(&iidu1->vboxIID_v2_x_WIN32, &iidu2->vboxIID_v2_x_WIN32);
}
static void
-vboxIIDFromArrayItem_v2_x_WIN32(vboxGlobalData *data, vboxIID_v2_x_WIN32 *iid,
+vboxIIDFromArrayItem_v2_x_WIN32(vboxDriverPtr data, vboxIID_v2_x_WIN32 *iid,
vboxArray *array, int idx)
{
GUID *items = (GUID *)array->items;
}
static void
-_vboxIIDFromArrayItem(vboxGlobalData *data, vboxIIDUnion *iidu,
+_vboxIIDFromArrayItem(vboxDriverPtr data, vboxIIDUnion *iidu,
vboxArray *array, int idx)
{
vboxIIDFromArrayItem_v2_x_WIN32(data, &iidu->vboxIID_v2_x_WIN32, array, idx);
# define IID_MEMBER(name) (iidu->vboxIID_v2_x.name)
static void
-vboxIIDUnalloc_v2_x(vboxGlobalData *data, vboxIID_v2_x *iid)
+vboxIIDUnalloc_v2_x(vboxDriverPtr data, vboxIID_v2_x *iid)
{
if (iid->value == NULL)
return;
}
static void
-_vboxIIDUnalloc(vboxGlobalData *data, vboxIIDUnion *iidu)
+_vboxIIDUnalloc(vboxDriverPtr data, vboxIIDUnion *iidu)
{
vboxIIDUnalloc_v2_x(data, &iidu->vboxIID_v2_x);
}
}
static void
-_vboxIIDToUUID(vboxGlobalData *data ATTRIBUTE_UNUSED,
+_vboxIIDToUUID(vboxDriverPtr data ATTRIBUTE_UNUSED,
vboxIIDUnion *iidu, unsigned char *uuid)
{
vboxIIDToUUID_v2_x(&iidu->vboxIID_v2_x, uuid);
}
static void
-vboxIIDFromUUID_v2_x(vboxGlobalData *data, vboxIID_v2_x *iid,
+vboxIIDFromUUID_v2_x(vboxDriverPtr data, vboxIID_v2_x *iid,
const unsigned char *uuid)
{
vboxIIDUnalloc_v2_x(data, iid);
}
static void
-_vboxIIDFromUUID(vboxGlobalData *data, vboxIIDUnion *iidu,
+_vboxIIDFromUUID(vboxDriverPtr data, vboxIIDUnion *iidu,
const unsigned char *uuid)
{
vboxIIDFromUUID_v2_x(data, &iidu->vboxIID_v2_x, uuid);
}
static bool
-_vboxIIDIsEqual(vboxGlobalData *data ATTRIBUTE_UNUSED,
+_vboxIIDIsEqual(vboxDriverPtr data ATTRIBUTE_UNUSED,
vboxIIDUnion *iidu1, vboxIIDUnion *iidu2)
{
return vboxIIDIsEqual_v2_x(&iidu1->vboxIID_v2_x, &iidu2->vboxIID_v2_x);
}
static void
-vboxIIDFromArrayItem_v2_x(vboxGlobalData *data, vboxIID_v2_x *iid,
+vboxIIDFromArrayItem_v2_x(vboxDriverPtr data, vboxIID_v2_x *iid,
vboxArray *array, int idx)
{
vboxIIDUnalloc_v2_x(data, iid);
}
static void
-_vboxIIDFromArrayItem(vboxGlobalData *data, vboxIIDUnion *iidu,
+_vboxIIDFromArrayItem(vboxDriverPtr data, vboxIIDUnion *iidu,
vboxArray *array, int idx)
{
vboxIIDFromArrayItem_v2_x(data, &iidu->vboxIID_v2_x, array, idx);
# define IID_MEMBER(name) (iidu->vboxIID_v3_x.name)
static void
-vboxIIDUnalloc_v3_x(vboxGlobalData *data, vboxIID_v3_x *iid)
+vboxIIDUnalloc_v3_x(vboxDriverPtr data, vboxIID_v3_x *iid)
{
if (iid->value != NULL && iid->owner)
data->pFuncs->pfnUtf16Free(iid->value);
}
static void
-_vboxIIDUnalloc(vboxGlobalData *data, vboxIIDUnion *iidu)
+_vboxIIDUnalloc(vboxDriverPtr data, vboxIIDUnion *iidu)
{
vboxIIDUnalloc_v3_x(data, &iidu->vboxIID_v3_x);
}
static void
-vboxIIDToUUID_v3_x(vboxGlobalData *data, vboxIID_v3_x *iid,
+vboxIIDToUUID_v3_x(vboxDriverPtr data, vboxIID_v3_x *iid,
unsigned char *uuid)
{
char *utf8 = NULL;
}
static void
-_vboxIIDToUUID(vboxGlobalData *data, vboxIIDUnion *iidu,
+_vboxIIDToUUID(vboxDriverPtr data, vboxIIDUnion *iidu,
unsigned char *uuid)
{
vboxIIDToUUID_v3_x(data, &iidu->vboxIID_v3_x, uuid);
}
static void
-vboxIIDFromUUID_v3_x(vboxGlobalData *data, vboxIID_v3_x *iid,
+vboxIIDFromUUID_v3_x(vboxDriverPtr data, vboxIID_v3_x *iid,
const unsigned char *uuid)
{
char utf8[VIR_UUID_STRING_BUFLEN];
}
static void
-_vboxIIDFromUUID(vboxGlobalData *data, vboxIIDUnion *iidu,
+_vboxIIDFromUUID(vboxDriverPtr data, vboxIIDUnion *iidu,
const unsigned char *uuid)
{
vboxIIDFromUUID_v3_x(data, &iidu->vboxIID_v3_x, uuid);
}
static bool
-vboxIIDIsEqual_v3_x(vboxGlobalData *data, vboxIID_v3_x *iid1,
+vboxIIDIsEqual_v3_x(vboxDriverPtr data, vboxIID_v3_x *iid1,
vboxIID_v3_x *iid2)
{
unsigned char uuid1[VIR_UUID_BUFLEN];
}
static bool
-_vboxIIDIsEqual(vboxGlobalData *data, vboxIIDUnion *iidu1,
+_vboxIIDIsEqual(vboxDriverPtr data, vboxIIDUnion *iidu1,
vboxIIDUnion *iidu2)
{
return vboxIIDIsEqual_v3_x(data, &iidu1->vboxIID_v3_x, &iidu2->vboxIID_v3_x);
}
static void
-vboxIIDFromArrayItem_v3_x(vboxGlobalData *data, vboxIID_v3_x *iid,
+vboxIIDFromArrayItem_v3_x(vboxDriverPtr data, vboxIID_v3_x *iid,
vboxArray *array, int idx)
{
vboxIIDUnalloc_v3_x(data, iid);
}
static void
-_vboxIIDFromArrayItem(vboxGlobalData *data, vboxIIDUnion *iidu,
+_vboxIIDFromArrayItem(vboxDriverPtr data, vboxIIDUnion *iidu,
vboxArray *array, int idx)
{
vboxIIDFromArrayItem_v3_x(data, &iidu->vboxIID_v3_x, array, idx);
/**
* Converts Utf-16 string to int
*/
-static int PRUnicharToInt(PRUnichar *strUtf16)
+static int PRUnicharToInt(PCVBOXXPCOM pFuncs, PRUnichar *strUtf16)
{
char *strUtf8 = NULL;
int ret = 0;
if (!strUtf16)
return -1;
- g_pVBoxGlobalData->pFuncs->pfnUtf16ToUtf8(strUtf16, &strUtf8);
+ pFuncs->pfnUtf16ToUtf8(strUtf16, &strUtf8);
if (!strUtf8)
return -1;
if (virStrToLong_i(strUtf8, NULL, 10, &ret) < 0)
ret = -1;
- g_pVBoxGlobalData->pFuncs->pfnUtf8Free(strUtf8);
+ pFuncs->pfnUtf8Free(strUtf8);
return ret;
}
/**
* Converts int to Utf-16 string
*/
-static PRUnichar *PRUnicharFromInt(int n) {
+static PRUnichar *PRUnicharFromInt(PCVBOXXPCOM pFuncs, int n) {
PRUnichar *strUtf16 = NULL;
char s[24];
snprintf(s, sizeof(s), "%d", n);
- g_pVBoxGlobalData->pFuncs->pfnUtf8ToUtf16(s, &strUtf16);
+ pFuncs->pfnUtf8ToUtf16(s, &strUtf16);
return strUtf16;
}
#if VBOX_API_VERSION < 3001000
static void
-_vboxAttachDrivesOld(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
+_vboxAttachDrivesOld(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine)
{
size_t i;
nsresult rc;
#elif VBOX_API_VERSION < 4000000
static void
-_vboxAttachDrivesOld(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
+_vboxAttachDrivesOld(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine)
{
size_t i;
nsresult rc = 0;
static void
_vboxAttachDrivesOld(virDomainDefPtr def ATTRIBUTE_UNUSED,
- vboxGlobalData *data ATTRIBUTE_UNUSED,
+ vboxDriverPtr data ATTRIBUTE_UNUSED,
IMachine *machine ATTRIBUTE_UNUSED)
{
vboxUnsupported();
IMachine *machine,
ISnapshot *snapshot)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
vboxIID iid = VBOX_IID_INITIALIZER;
nsresult rc;
int ret = -1;
IMachine *machine,
ISnapshot *snapshot)
{
- vboxGlobalData *data = dom->conn->privateData;
+ vboxDriverPtr data = dom->conn->privateData;
# if VBOX_API_VERSION < 5000000
IConsole *console = NULL;
# endif /*VBOX_API_VERSION < 5000000*/
vboxCallbackOnMachineStateChange(IVirtualBoxCallback *pThis ATTRIBUTE_UNUSED,
PRUnichar *machineId, PRUint32 state)
{
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
+ vboxDriverPtr data = callback->conn->privateData;
virDomainPtr dom = NULL;
+
int event = 0;
int detail = 0;
- vboxDriverLock(g_pVBoxGlobalData);
+ virObjectLock(data);
- VIR_DEBUG("IVirtualBoxCallback: %p, State: %d", pThis, state);
+ VIR_DEBUG("IVirtualBoxCallback: %p, State: %d", callback, state);
DEBUGPRUnichar("machineId", machineId);
if (machineId) {
char *machineIdUtf8 = NULL;
unsigned char uuid[VIR_UUID_BUFLEN];
- g_pVBoxGlobalData->pFuncs->pfnUtf16ToUtf8(machineId, &machineIdUtf8);
+ data->pFuncs->pfnUtf16ToUtf8(machineId, &machineIdUtf8);
ignore_value(virUUIDParse(machineIdUtf8, uuid));
- dom = vboxDomainLookupByUUID(g_pVBoxGlobalData->conn, uuid);
+ dom = vboxDomainLookupByUUID(callback->conn, uuid);
if (dom) {
virObjectEventPtr ev;
ev = virDomainEventLifecycleNewFromDom(dom, event, detail);
if (ev)
- virObjectEventStateQueue(g_pVBoxGlobalData->domainEvents, ev);
+ virObjectEventStateQueue(data->domainEventState, ev);
}
}
- vboxDriverUnlock(g_pVBoxGlobalData);
+ virObjectUnlock(data);
return NS_OK;
}
vboxCallbackOnMachineDataChange(IVirtualBoxCallback *pThis ATTRIBUTE_UNUSED,
PRUnichar *machineId)
{
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
+ vboxDriverPtr data = callback->conn->privateData;
+
VIR_DEBUG("IVirtualBoxCallback: %p", pThis);
DEBUGPRUnichar("machineId", machineId);
PRUnichar **error ATTRIBUTE_UNUSED,
PRBool *allowChange ATTRIBUTE_UNUSED)
{
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
+ vboxDriverPtr data = callback->conn->privateData;
+
VIR_DEBUG("IVirtualBoxCallback: %p, allowChange: %s", pThis, *allowChange ? "true" : "false");
DEBUGPRUnichar("machineId", machineId);
DEBUGPRUnichar("key", key);
PRUnichar *machineId,
PRUnichar *key, PRUnichar *value)
{
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
+ vboxDriverPtr data = callback->conn->privateData;
+
VIR_DEBUG("IVirtualBoxCallback: %p", pThis);
DEBUGPRUnichar("machineId", machineId);
DEBUGPRUnichar("key", key);
PRUint32 mediaType ATTRIBUTE_UNUSED,
PRBool registered ATTRIBUTE_UNUSED)
{
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
+ vboxDriverPtr data = callback->conn->privateData;
+
VIR_DEBUG("IVirtualBoxCallback: %p, registered: %s", pThis, registered ? "true" : "false");
VIR_DEBUG("mediaType: %d", mediaType);
DEBUGPRUnichar("mediaId", mediaId);
return NS_OK;
}
-# else /* VBOX_API_VERSION >= 3001000 */
# endif /* VBOX_API_VERSION >= 3001000 */
static nsresult PR_COM_METHOD
vboxCallbackOnMachineRegistered(IVirtualBoxCallback *pThis ATTRIBUTE_UNUSED,
PRUnichar *machineId, PRBool registered)
{
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
+ vboxDriverPtr data = callback->conn->privateData;
virDomainPtr dom = NULL;
int event = 0;
int detail = 0;
- vboxDriverLock(g_pVBoxGlobalData);
+ virObjectLock(data);
VIR_DEBUG("IVirtualBoxCallback: %p, registered: %s", pThis, registered ? "true" : "false");
DEBUGPRUnichar("machineId", machineId);
char *machineIdUtf8 = NULL;
unsigned char uuid[VIR_UUID_BUFLEN];
- g_pVBoxGlobalData->pFuncs->pfnUtf16ToUtf8(machineId, &machineIdUtf8);
+ data->pFuncs->pfnUtf16ToUtf8(machineId, &machineIdUtf8);
ignore_value(virUUIDParse(machineIdUtf8, uuid));
- dom = vboxDomainLookupByUUID(g_pVBoxGlobalData->conn, uuid);
+ dom = vboxDomainLookupByUUID(callback->conn, uuid);
if (dom) {
virObjectEventPtr ev;
ev = virDomainEventLifecycleNewFromDom(dom, event, detail);
if (ev)
- virObjectEventStateQueue(g_pVBoxGlobalData->domainEvents, ev);
+ virObjectEventStateQueue(data->domainEventState, ev);
}
}
- vboxDriverUnlock(g_pVBoxGlobalData);
+ virObjectUnlock(data);
return NS_OK;
}
PRUnichar *machineId,
PRUint32 state ATTRIBUTE_UNUSED)
{
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
+ vboxDriverPtr data = callback->conn->privateData;
+
VIR_DEBUG("IVirtualBoxCallback: %p, state: %d", pThis, state);
DEBUGPRUnichar("machineId", machineId);
PRUnichar *machineId,
PRUnichar *snapshotId)
{
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
+ vboxDriverPtr data = callback->conn->privateData;
+
VIR_DEBUG("IVirtualBoxCallback: %p", pThis);
DEBUGPRUnichar("machineId", machineId);
DEBUGPRUnichar("snapshotId", snapshotId);
PRUnichar *machineId,
PRUnichar *snapshotId)
{
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
+ vboxDriverPtr data = callback->conn->privateData;
+
VIR_DEBUG("IVirtualBoxCallback: %p", pThis);
DEBUGPRUnichar("machineId", machineId);
DEBUGPRUnichar("snapshotId", snapshotId);
PRUnichar *machineId,
PRUnichar *snapshotId)
{
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
+ vboxDriverPtr data = callback->conn->privateData;
+
VIR_DEBUG("IVirtualBoxCallback: %p", pThis);
DEBUGPRUnichar("machineId", machineId);
DEBUGPRUnichar("snapshotId", snapshotId);
PRUnichar *machineId, PRUnichar *name,
PRUnichar *value, PRUnichar *flags)
{
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
+ vboxDriverPtr data = callback->conn->privateData;
+
VIR_DEBUG("IVirtualBoxCallback: %p", pThis);
DEBUGPRUnichar("machineId", machineId);
DEBUGPRUnichar("name", name);
static nsresult PR_COM_METHOD
vboxCallbackAddRef(nsISupports *pThis ATTRIBUTE_UNUSED)
{
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
nsresult c;
- c = ++g_pVBoxGlobalData->vboxCallBackRefCount;
+ c = ++callback->vboxCallBackRefCount;
VIR_DEBUG("pThis: %p, vboxCallback AddRef: %d", pThis, c);
static nsresult PR_COM_METHOD
vboxCallbackRelease(nsISupports *pThis)
{
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
nsresult c;
- c = --g_pVBoxGlobalData->vboxCallBackRefCount;
+ c = --callback->vboxCallBackRefCount;
if (c == 0) {
/* delete object */
VIR_FREE(pThis->vtbl);
static nsresult PR_COM_METHOD
vboxCallbackQueryInterface(nsISupports *pThis, const nsID *iid, void **resultp)
{
- IVirtualBoxCallback *that = (IVirtualBoxCallback *)pThis;
+ vboxCallbackPtr callback = (vboxCallbackPtr) pThis;
static const nsID ivirtualboxCallbackUUID = IVIRTUALBOXCALLBACK_IID;
static const nsID isupportIID = NS_ISUPPORTS_IID;
/* Match UUID for IVirtualBoxCallback class */
if (memcmp(iid, &ivirtualboxCallbackUUID, sizeof(nsID)) == 0 ||
memcmp(iid, &isupportIID, sizeof(nsID)) == 0) {
- g_pVBoxGlobalData->vboxCallBackRefCount++;
- *resultp = that;
+ callback->vboxCallBackRefCount++;
+ *resultp = callback;
- VIR_DEBUG("pThis: %p, vboxCallback QueryInterface: %d", pThis, g_pVBoxGlobalData->vboxCallBackRefCount);
+ VIR_DEBUG("pThis: %p, vboxCallback QueryInterface: %d", pThis, callback->vboxCallBackRefCount);
return NS_OK;
}
}
-static IVirtualBoxCallback *vboxAllocCallbackObj(void) {
- IVirtualBoxCallback *vboxCallback = NULL;
+static vboxCallbackPtr
+vboxAllocCallbackObj(virConnectPtr conn)
+{
+ vboxCallbackPtr callback = NULL;
/* Allocate, Initialize and return a valid
* IVirtualBoxCallback object here
*/
- if ((VIR_ALLOC(vboxCallback) < 0) || (VIR_ALLOC(vboxCallback->vtbl) < 0)) {
- VIR_FREE(vboxCallback);
+ if ((VIR_ALLOC(callback) < 0) || (VIR_ALLOC(callback->vtbl) < 0)) {
+ VIR_FREE(callback);
return NULL;
}
{
- vboxCallback->vtbl->nsisupports.AddRef = &vboxCallbackAddRef;
- vboxCallback->vtbl->nsisupports.Release = &vboxCallbackRelease;
- vboxCallback->vtbl->nsisupports.QueryInterface = &vboxCallbackQueryInterface;
- vboxCallback->vtbl->OnMachineStateChange = &vboxCallbackOnMachineStateChange;
- vboxCallback->vtbl->OnMachineDataChange = &vboxCallbackOnMachineDataChange;
- vboxCallback->vtbl->OnExtraDataCanChange = &vboxCallbackOnExtraDataCanChange;
- vboxCallback->vtbl->OnExtraDataChange = &vboxCallbackOnExtraDataChange;
+ callback->vtbl->nsisupports.AddRef = &vboxCallbackAddRef;
+ callback->vtbl->nsisupports.Release = &vboxCallbackRelease;
+ callback->vtbl->nsisupports.QueryInterface = &vboxCallbackQueryInterface;
+ callback->vtbl->OnMachineStateChange = &vboxCallbackOnMachineStateChange;
+ callback->vtbl->OnMachineDataChange = &vboxCallbackOnMachineDataChange;
+ callback->vtbl->OnExtraDataCanChange = &vboxCallbackOnExtraDataCanChange;
+ callback->vtbl->OnExtraDataChange = &vboxCallbackOnExtraDataChange;
# if VBOX_API_VERSION < 3001000
- vboxCallback->vtbl->OnMediaRegistered = &vboxCallbackOnMediaRegistered;
+ callback->vtbl->OnMediaRegistered = &vboxCallbackOnMediaRegistered;
# else /* VBOX_API_VERSION >= 3001000 */
# endif /* VBOX_API_VERSION >= 3001000 */
- vboxCallback->vtbl->OnMachineRegistered = &vboxCallbackOnMachineRegistered;
- vboxCallback->vtbl->OnSessionStateChange = &vboxCallbackOnSessionStateChange;
- vboxCallback->vtbl->OnSnapshotTaken = &vboxCallbackOnSnapshotTaken;
+ callback->vtbl->OnMachineRegistered = &vboxCallbackOnMachineRegistered;
+ callback->vtbl->OnSessionStateChange = &vboxCallbackOnSessionStateChange;
+ callback->vtbl->OnSnapshotTaken = &vboxCallbackOnSnapshotTaken;
# if VBOX_API_VERSION < 3002000
- vboxCallback->vtbl->OnSnapshotDiscarded = &vboxCallbackOnSnapshotDiscarded;
+ callback->vtbl->OnSnapshotDiscarded = &vboxCallbackOnSnapshotDiscarded;
# else /* VBOX_API_VERSION >= 3002000 */
- vboxCallback->vtbl->OnSnapshotDeleted = &vboxCallbackOnSnapshotDiscarded;
+ callback->vtbl->OnSnapshotDeleted = &vboxCallbackOnSnapshotDiscarded;
# endif /* VBOX_API_VERSION >= 3002000 */
- vboxCallback->vtbl->OnSnapshotChange = &vboxCallbackOnSnapshotChange;
- vboxCallback->vtbl->OnGuestPropertyChange = &vboxCallbackOnGuestPropertyChange;
- g_pVBoxGlobalData->vboxCallBackRefCount = 1;
-
+ callback->vtbl->OnSnapshotChange = &vboxCallbackOnSnapshotChange;
+ callback->vtbl->OnGuestPropertyChange = &vboxCallbackOnGuestPropertyChange;
+ callback->vboxCallBackRefCount = 1;
}
- return vboxCallback;
+ callback->conn = conn;
+
+ return callback;
}
static void vboxReadCallback(int watch ATTRIBUTE_UNUSED,
int fd,
int events ATTRIBUTE_UNUSED,
- void *opaque ATTRIBUTE_UNUSED)
+ void *opaque)
{
+ vboxDriverPtr data = (vboxDriverPtr) opaque;
if (fd >= 0) {
- g_pVBoxGlobalData->vboxQueue->vtbl->ProcessPendingEvents(g_pVBoxGlobalData->vboxQueue);
+ data->vboxQueue->vtbl->ProcessPendingEvents(data->vboxQueue);
} else {
nsresult rc;
PLEvent *pEvent = NULL;
- rc = g_pVBoxGlobalData->vboxQueue->vtbl->WaitForEvent(g_pVBoxGlobalData->vboxQueue, &pEvent);
+ rc = data->vboxQueue->vtbl->WaitForEvent(data->vboxQueue, &pEvent);
if (NS_SUCCEEDED(rc))
- g_pVBoxGlobalData->vboxQueue->vtbl->HandleEvent(g_pVBoxGlobalData->vboxQueue, pEvent);
+ data->vboxQueue->vtbl->HandleEvent(data->vboxQueue, pEvent);
}
}
void *opaque,
virFreeCallback freecb)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
int vboxRet = -1;
nsresult rc;
int ret = -1;
/* Locking has to be there as callbacks are not
* really fully thread safe
*/
- vboxDriverLock(data);
+ virObjectLock(data);
if (data->vboxCallback == NULL) {
- data->vboxCallback = vboxAllocCallbackObj();
+ data->vboxCallback = vboxAllocCallbackObj(conn);
if (data->vboxCallback != NULL) {
- rc = data->vboxObj->vtbl->RegisterCallback(data->vboxObj, data->vboxCallback);
+ rc = data->vboxObj->vtbl->RegisterCallback(data->vboxObj,
+ (IVirtualBoxCallback *) data->vboxCallback);
if (NS_SUCCEEDED(rc))
vboxRet = 0;
}
PRInt32 vboxFileHandle;
vboxFileHandle = data->vboxQueue->vtbl->GetEventQueueSelectFD(data->vboxQueue);
- data->fdWatch = virEventAddHandle(vboxFileHandle, VIR_EVENT_HANDLE_READABLE, vboxReadCallback, NULL, NULL);
+ data->fdWatch = virEventAddHandle(vboxFileHandle, VIR_EVENT_HANDLE_READABLE, vboxReadCallback, data, NULL);
}
if (data->fdWatch >= 0) {
* later you can iterate over them
*/
- ret = virDomainEventStateRegister(conn, data->domainEvents,
+ ret = virDomainEventStateRegister(conn, data->domainEventState,
callback, opaque, freecb);
VIR_DEBUG("virObjectEventStateRegister (ret = %d) (conn: %p, "
"callback: %p, opaque: %p, "
}
}
- vboxDriverUnlock(data);
+ virObjectUnlock(data);
if (ret >= 0) {
return 0;
} else {
if (data->vboxObj && data->vboxCallback)
- data->vboxObj->vtbl->UnregisterCallback(data->vboxObj, data->vboxCallback);
+ data->vboxObj->vtbl->UnregisterCallback(data->vboxObj,
+ (IVirtualBoxCallback *) data->vboxCallback);
return -1;
}
}
vboxConnectDomainEventDeregister(virConnectPtr conn,
virConnectDomainEventCallback callback)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
int cnt;
int ret = -1;
/* Locking has to be there as callbacks are not
* really fully thread safe
*/
- vboxDriverLock(data);
+ virObjectLock(data);
- cnt = virDomainEventStateDeregister(conn, data->domainEvents,
+ cnt = virDomainEventStateDeregister(conn, data->domainEventState,
callback);
if (data->vboxCallback && cnt == 0) {
- data->vboxObj->vtbl->UnregisterCallback(data->vboxObj, data->vboxCallback);
+ data->vboxObj->vtbl->UnregisterCallback(data->vboxObj,
+ (IVirtualBoxCallback *) data->vboxCallback);
VBOX_RELEASE(data->vboxCallback);
/* Remove the Event file handle on which we are listening as well */
data->fdWatch = -1;
}
- vboxDriverUnlock(data);
+ virObjectUnlock(data);
if (cnt >= 0)
ret = 0;
void *opaque,
virFreeCallback freecb)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
int vboxRet = -1;
nsresult rc;
int ret = -1;
/* Locking has to be there as callbacks are not
* really fully thread safe
*/
- vboxDriverLock(data);
+ virObjectLock(data);
if (data->vboxCallback == NULL) {
- data->vboxCallback = vboxAllocCallbackObj();
+ data->vboxCallback = vboxAllocCallbackObj(conn);
if (data->vboxCallback != NULL) {
- rc = data->vboxObj->vtbl->RegisterCallback(data->vboxObj, data->vboxCallback);
+ rc = data->vboxObj->vtbl->RegisterCallback(data->vboxObj,
+ (IVirtualBoxCallback *) data->vboxCallback);
if (NS_SUCCEEDED(rc))
vboxRet = 0;
}
PRInt32 vboxFileHandle;
vboxFileHandle = data->vboxQueue->vtbl->GetEventQueueSelectFD(data->vboxQueue);
- data->fdWatch = virEventAddHandle(vboxFileHandle, VIR_EVENT_HANDLE_READABLE, vboxReadCallback, NULL, NULL);
+ data->fdWatch = virEventAddHandle(vboxFileHandle, VIR_EVENT_HANDLE_READABLE, vboxReadCallback, data, NULL);
}
if (data->fdWatch >= 0) {
* later you can iterate over them
*/
- if (virDomainEventStateRegisterID(conn, data->domainEvents,
+ if (virDomainEventStateRegisterID(conn, data->domainEventState,
dom, eventID,
callback, opaque, freecb, &ret) < 0)
ret = -1;
}
}
- vboxDriverUnlock(data);
+ virObjectUnlock(data);
if (ret >= 0) {
return ret;
} else {
if (data->vboxObj && data->vboxCallback)
- data->vboxObj->vtbl->UnregisterCallback(data->vboxObj, data->vboxCallback);
+ data->vboxObj->vtbl->UnregisterCallback(data->vboxObj,
+ (IVirtualBoxCallback *) data->vboxCallback);
return -1;
}
}
vboxConnectDomainEventDeregisterAny(virConnectPtr conn,
int callbackID)
{
- vboxGlobalData *data = conn->privateData;
+ vboxDriverPtr data = conn->privateData;
int cnt;
int ret = -1;
/* Locking has to be there as callbacks are not
* really fully thread safe
*/
- vboxDriverLock(data);
+ virObjectLock(data);
- cnt = virObjectEventStateDeregisterID(conn, data->domainEvents,
+ cnt = virObjectEventStateDeregisterID(conn, data->domainEventState,
callbackID);
if (data->vboxCallback && cnt == 0) {
- data->vboxObj->vtbl->UnregisterCallback(data->vboxObj, data->vboxCallback);
+ data->vboxObj->vtbl->UnregisterCallback(data->vboxObj,
+ (IVirtualBoxCallback *) data->vboxCallback);
VBOX_RELEASE(data->vboxCallback);
/* Remove the Event file handle on which we are listening as well */
data->fdWatch = -1;
}
- vboxDriverUnlock(data);
+ virObjectUnlock(data);
if (cnt >= 0)
ret = 0;
return 0;
}
-static
-void _registerGlobalData(vboxGlobalData *data ATTRIBUTE_UNUSED)
-{
-#if VBOX_API_VERSION == 2002000
- vboxUnsupported();
-#else /* VBOX_API_VERSION != 2002000 */
- g_pVBoxGlobalData = data;
-#endif /* VBOX_API_VERSION != 2002000 */
-}
-
#if VBOX_API_VERSION < 4000000
# if VBOX_API_VERSION < 3001000
static void
-_detachDevices(vboxGlobalData *data ATTRIBUTE_UNUSED,
+_detachDevices(vboxDriverPtr data ATTRIBUTE_UNUSED,
IMachine *machine, PRUnichar *hddcnameUtf16)
{
/* Disconnect all the drives if present */
}
# else /* VBOX_API_VERSION >= 3001000 */
static void
-_detachDevices(vboxGlobalData *data, IMachine *machine,
+_detachDevices(vboxDriverPtr data, IMachine *machine,
PRUnichar *hddcnameUtf16 ATTRIBUTE_UNUSED)
{
/* get all the controller first, then the attachments and
# endif /* VBOX_API_VERSION >= 3001000 */
static nsresult
-_unregisterMachine(vboxGlobalData *data, vboxIIDUnion *iidu, IMachine **machine)
+_unregisterMachine(vboxDriverPtr data, vboxIIDUnion *iidu, IMachine **machine)
{
return data->vboxObj->vtbl->UnregisterMachine(data->vboxObj, IID_MEMBER(value), machine);
}
#else /* VBOX_API_VERSION >= 4000000 */
static void
-_detachDevices(vboxGlobalData *data ATTRIBUTE_UNUSED,
+_detachDevices(vboxDriverPtr data ATTRIBUTE_UNUSED,
IMachine *machine ATTRIBUTE_UNUSED,
PRUnichar *hddcnameUtf16 ATTRIBUTE_UNUSED)
{
}
static nsresult
-_unregisterMachine(vboxGlobalData *data, vboxIIDUnion *iidu, IMachine **machine)
+_unregisterMachine(vboxDriverPtr data, vboxIIDUnion *iidu, IMachine **machine)
{
nsresult rc;
vboxArray media = VBOX_ARRAY_INITIALIZER;
static void
_dumpIDEHDDsOld(virDomainDefPtr def,
- vboxGlobalData *data,
+ vboxDriverPtr data,
IMachine *machine)
{
PRInt32 hddNum = 0;
static void
_dumpDVD(virDomainDefPtr def,
- vboxGlobalData *data,
+ vboxDriverPtr data,
IMachine *machine)
{
IDVDDrive *dvdDrive = NULL;
}
static int
-_attachDVD(vboxGlobalData *data, IMachine *machine, const char *src)
+_attachDVD(vboxDriverPtr data, IMachine *machine, const char *src)
{
IDVDDrive *dvdDrive = NULL;
IDVDImage *dvdImage = NULL;
static void
_dumpFloppy(virDomainDefPtr def,
- vboxGlobalData *data,
+ vboxDriverPtr data,
IMachine *machine)
{
IFloppyDrive *floppyDrive = NULL;
}
static int
-_attachFloppy(vboxGlobalData *data, IMachine *machine, const char *src)
+_attachFloppy(vboxDriverPtr data, IMachine *machine, const char *src)
{
IFloppyDrive *floppyDrive;
IFloppyImage *floppyImage = NULL;
static void
_dumpIDEHDDsOld(virDomainDefPtr def ATTRIBUTE_UNUSED,
- vboxGlobalData *data ATTRIBUTE_UNUSED,
+ vboxDriverPtr data ATTRIBUTE_UNUSED,
IMachine *machine ATTRIBUTE_UNUSED)
{
vboxUnsupported();
static void
_dumpDVD(virDomainDefPtr def ATTRIBUTE_UNUSED,
- vboxGlobalData *data ATTRIBUTE_UNUSED,
+ vboxDriverPtr data ATTRIBUTE_UNUSED,
IMachine *machine ATTRIBUTE_UNUSED)
{
vboxUnsupported();
}
static int
-_attachDVD(vboxGlobalData *data ATTRIBUTE_UNUSED,
+_attachDVD(vboxDriverPtr data ATTRIBUTE_UNUSED,
IMachine *machine ATTRIBUTE_UNUSED,
const char *src ATTRIBUTE_UNUSED)
{
static void
_dumpFloppy(virDomainDefPtr def ATTRIBUTE_UNUSED,
- vboxGlobalData *data ATTRIBUTE_UNUSED,
+ vboxDriverPtr data ATTRIBUTE_UNUSED,
IMachine *machine ATTRIBUTE_UNUSED)
{
vboxUnsupported();
}
static int
-_attachFloppy(vboxGlobalData *data ATTRIBUTE_UNUSED,
+_attachFloppy(vboxDriverPtr data ATTRIBUTE_UNUSED,
IMachine *machine ATTRIBUTE_UNUSED,
const char *src ATTRIBUTE_UNUSED)
{
memset(iidu, 0, sizeof(vboxIIDUnion));
}
-static void _DEBUGIID(const char *msg, vboxIIDUnion *iidu)
+static void _DEBUGIID(vboxDriverPtr driver ATTRIBUTE_UNUSED, const char *msg, vboxIIDUnion *iidu)
{
# ifdef WIN32
DEBUGUUID(msg, (nsID *)&IID_MEMBER(value));
IID_MEMBER(owner) = true;
}
-static void _DEBUGIID(const char *msg, vboxIIDUnion *iidu)
+static void _DEBUGIID(vboxDriverPtr data, const char *msg, vboxIIDUnion *iidu)
{
DEBUGPRUnichar(msg, IID_MEMBER(value));
}
#endif /* VBOX_API_VERSION != 2002000 */
static void
-_vboxIIDToUtf8(vboxGlobalData *data ATTRIBUTE_UNUSED,
+_vboxIIDToUtf8(vboxDriverPtr data ATTRIBUTE_UNUSED,
vboxIIDUnion *iidu ATTRIBUTE_UNUSED,
char **utf8 ATTRIBUTE_UNUSED)
{
}
static nsresult
-_virtualboxCreateMachine(vboxGlobalData *data, virDomainDefPtr def, IMachine **machine, char *uuidstr ATTRIBUTE_UNUSED)
+_virtualboxCreateMachine(vboxDriverPtr data, virDomainDefPtr def, IMachine **machine, char *uuidstr ATTRIBUTE_UNUSED)
{
vboxIID iid = VBOX_IID_INITIALIZER;
PRUnichar *machineNameUtf16 = NULL;
}
static nsresult
-_machineLaunchVMProcess(vboxGlobalData *data,
+_machineLaunchVMProcess(vboxDriverPtr data,
IMachine *machine ATTRIBUTE_UNUSED,
vboxIIDUnion *iidu ATTRIBUTE_UNUSED,
PRUnichar *sessionType, PRUnichar *env,
#if VBOX_API_VERSION < 4000000
static nsresult
-_sessionOpen(vboxGlobalData *data, vboxIIDUnion *iidu, IMachine *machine ATTRIBUTE_UNUSED)
+_sessionOpen(vboxDriverPtr data, vboxIIDUnion *iidu, IMachine *machine ATTRIBUTE_UNUSED)
{
return data->vboxObj->vtbl->OpenSession(data->vboxObj, data->vboxSession, IID_MEMBER(value));
}
static nsresult
-_sessionOpenExisting(vboxGlobalData *data, vboxIIDUnion *iidu, IMachine *machine ATTRIBUTE_UNUSED)
+_sessionOpenExisting(vboxDriverPtr data, vboxIIDUnion *iidu, IMachine *machine ATTRIBUTE_UNUSED)
{
return data->vboxObj->vtbl->OpenExistingSession(data->vboxObj, data->vboxSession, IID_MEMBER(value));
}
#else /* VBOX_API_VERSION >= 4000000 */
static nsresult
-_sessionOpen(vboxGlobalData *data, vboxIIDUnion *iidu ATTRIBUTE_UNUSED, IMachine *machine)
+_sessionOpen(vboxDriverPtr data, vboxIIDUnion *iidu ATTRIBUTE_UNUSED, IMachine *machine)
{
return machine->vtbl->LockMachine(machine, data->vboxSession, LockType_Write);
}
static nsresult
-_sessionOpenExisting(vboxGlobalData *data, vboxIIDUnion *iidu ATTRIBUTE_UNUSED, IMachine *machine)
+_sessionOpenExisting(vboxDriverPtr data, vboxIIDUnion *iidu ATTRIBUTE_UNUSED, IMachine *machine)
{
return machine->vtbl->LockMachine(machine, data->vboxSession, LockType_Shared);
}
}
static nsresult
-_vrdxServerGetPorts(vboxGlobalData *data ATTRIBUTE_UNUSED,
+_vrdxServerGetPorts(vboxDriverPtr data ATTRIBUTE_UNUSED,
IVRDxServer *VRDxServer, virDomainGraphicsDefPtr graphics)
{
nsresult rc;
rc = VRDxServer->vtbl->GetPorts(VRDxServer, &VRDPport);
if (VRDPport) {
/* even if vbox supports mutilpe ports, single port for now here */
- graphics->data.rdp.port = PRUnicharToInt(VRDPport);
+ graphics->data.rdp.port = PRUnicharToInt(data->pFuncs, VRDPport);
VBOX_UTF16_FREE(VRDPport);
} else {
graphics->data.rdp.autoport = true;
VBOX_UTF16_FREE(VRDEPortsKey);
if (VRDEPortsValue) {
/* even if vbox supports mutilpe ports, single port for now here */
- graphics->data.rdp.port = PRUnicharToInt(VRDEPortsValue);
+ graphics->data.rdp.port = PRUnicharToInt(data->pFuncs, VRDEPortsValue);
VBOX_UTF16_FREE(VRDEPortsValue);
} else {
graphics->data.rdp.autoport = true;
}
static nsresult
-_vrdxServerSetPorts(vboxGlobalData *data ATTRIBUTE_UNUSED,
+_vrdxServerSetPorts(vboxDriverPtr data ATTRIBUTE_UNUSED,
IVRDxServer *VRDxServer, virDomainGraphicsDefPtr graphics)
{
nsresult rc = 0;
}
#elif VBOX_API_VERSION < 4000000 /* 3001000 <= VBOX_API_VERSION < 4000000 */
PRUnichar *portUtf16 = NULL;
- portUtf16 = PRUnicharFromInt(graphics->data.rdp.port);
+ portUtf16 = PRUnicharFromInt(data->pFuncs, graphics->data.rdp.port);
rc = VRDxServer->vtbl->SetPorts(VRDxServer, portUtf16);
VBOX_UTF16_FREE(portUtf16);
#else /* VBOX_API_VERSION >= 4000000 */
PRUnichar *VRDEPortsKey = NULL;
PRUnichar *VRDEPortsValue = NULL;
VBOX_UTF8_TO_UTF16("TCP/Ports", &VRDEPortsKey);
- VRDEPortsValue = PRUnicharFromInt(graphics->data.rdp.port);
+ VRDEPortsValue = PRUnicharFromInt(data->pFuncs, graphics->data.rdp.port);
rc = VRDxServer->vtbl->SetVRDEProperty(VRDxServer, VRDEPortsKey,
VRDEPortsValue);
VBOX_UTF16_FREE(VRDEPortsKey);
}
static nsresult
-_vrdxServerGetNetAddress(vboxGlobalData *data ATTRIBUTE_UNUSED,
+_vrdxServerGetNetAddress(vboxDriverPtr data ATTRIBUTE_UNUSED,
IVRDxServer *VRDxServer, PRUnichar **netAddress)
{
#if VBOX_API_VERSION >= 4000000
}
static nsresult
-_vrdxServerSetNetAddress(vboxGlobalData *data ATTRIBUTE_UNUSED,
+_vrdxServerSetNetAddress(vboxDriverPtr data ATTRIBUTE_UNUSED,
IVRDxServer *VRDxServer, PRUnichar *netAddress)
{
#if VBOX_API_VERSION < 4000000
}
static nsresult
-_hostCreateHostOnlyNetworkInterface(vboxGlobalData *data ATTRIBUTE_UNUSED,
+_hostCreateHostOnlyNetworkInterface(vboxDriverPtr data ATTRIBUTE_UNUSED,
IHost *host, char *name ATTRIBUTE_UNUSED,
IHostNetworkInterface **networkInterface)
{
pVBoxAPI->APIVersion = VBOX_API_VERSION;
pVBoxAPI->XPCOMCVersion = VBOX_XPCOMC_VERSION;
pVBoxAPI->initializeDomainEvent = _initializeDomainEvent;
- pVBoxAPI->registerGlobalData = _registerGlobalData;
pVBoxAPI->detachDevices = _detachDevices;
pVBoxAPI->unregisterMachine = _unregisterMachine;
pVBoxAPI->deleteConfig = _deleteConfig;
pVBoxAPI->domainEventCallbacks = 1;
#endif /* VBOX_API_VERSION > 2002000 || VBOX_API_VERSION < 4000000 */
-#if VBOX_API_VERSION == 2002000
- pVBoxAPI->hasStaticGlobalData = 0;
-#else /* VBOX_API_VERSION > 2002000 */
- pVBoxAPI->hasStaticGlobalData = 1;
-#endif /* VBOX_API_VERSION > 2002000 */
-
#if VBOX_API_VERSION >= 4000000
/* Get machine for the call to VBOX_SESSION_OPEN_EXISTING */
pVBoxAPI->getMachineForSession = 1;
PRInt32 resultCode;
} resultCodeUnion;
-typedef struct {
- virMutex lock;
- unsigned long version;
-
- virCapsPtr caps;
- virDomainXMLOptionPtr xmlopt;
-
- IVirtualBox *vboxObj;
- ISession *vboxSession;
-
- /** Our version specific API table pointer. */
- PCVBOXXPCOM pFuncs;
-
- /* The next is used for domainEvent */
-# if defined(VBOX_API_VERSION) && VBOX_API_VERSION > 2002000 && VBOX_API_VERSION < 4000000
-
- /* Async event handling */
- virObjectEventStatePtr domainEvents;
- int fdWatch;
- IVirtualBoxCallback *vboxCallback;
- nsIEventQueue *vboxQueue;
-
- int volatile vboxCallBackRefCount;
-
- /* pointer back to the connection */
+struct _vboxCallback {
+ struct IVirtualBoxCallback_vtbl *vtbl;
virConnectPtr conn;
+ int vboxCallBackRefCount;
+};
-# else /* VBOX_API_VERSION <= 2002000 || VBOX_API_VERSION >= 4000000 || VBOX_API_VERSION undefined */
-
- virObjectEventStatePtr domainEvents;
- int fdWatch;
- void *vboxCallback;
- void *vboxQueue;
- int volatile vboxCallBackRefCount;
- virConnectPtr conn;
-
-# endif /* VBOX_API_VERSION <= 2002000 || VBOX_API_VERSION >= 4000000 || VBOX_API_VERSION undefined */
-
-} vboxGlobalData;
+typedef struct _vboxCallback vboxCallback;
+typedef struct _vboxCallback *vboxCallbackPtr;
struct _vboxDriver {
virObjectLockable parent;
# endif
int fdWatch;
+ vboxCallbackPtr vboxCallback;
# if VBOX_API_VERSION > 2002000 && VBOX_API_VERSION < 4000000
- IVirtualBoxCallback *vboxCallback;
nsIEventQueue *vboxQueue;
# else
- void *vboxCallback;
void *vboxQueue;
# endif
unsigned long version;
/* Functions for vboxIID */
typedef struct {
void (*vboxIIDInitialize)(vboxIIDUnion *iidu);
- void (*vboxIIDUnalloc)(vboxGlobalData *data, vboxIIDUnion *iidu);
- void (*vboxIIDToUUID)(vboxGlobalData *data, vboxIIDUnion *iidu, unsigned char *uuid);
- void (*vboxIIDFromUUID)(vboxGlobalData *data, vboxIIDUnion *iidu, const unsigned char *uuid);
- bool (*vboxIIDIsEqual)(vboxGlobalData *data, vboxIIDUnion *iidu1, vboxIIDUnion *iidu2);
- void (*vboxIIDFromArrayItem)(vboxGlobalData *data, vboxIIDUnion *iidu, vboxArray *array, int idx);
- void (*vboxIIDToUtf8)(vboxGlobalData *data, vboxIIDUnion *iidu, char **utf8);
- void (*DEBUGIID)(const char *msg, vboxIIDUnion *iidu);
+ void (*vboxIIDUnalloc)(vboxDriverPtr driver, vboxIIDUnion *iidu);
+ void (*vboxIIDToUUID)(vboxDriverPtr driver, vboxIIDUnion *iidu, unsigned char *uuid);
+ void (*vboxIIDFromUUID)(vboxDriverPtr driver, vboxIIDUnion *iidu, const unsigned char *uuid);
+ bool (*vboxIIDIsEqual)(vboxDriverPtr driver, vboxIIDUnion *iidu1, vboxIIDUnion *iidu2);
+ void (*vboxIIDFromArrayItem)(vboxDriverPtr driver, vboxIIDUnion *iidu, vboxArray *array, int idx);
+ void (*vboxIIDToUtf8)(vboxDriverPtr driver, vboxIIDUnion *iidu, char **utf8);
+ void (*DEBUGIID)(vboxDriverPtr driver, const char *msg, vboxIIDUnion *iidu);
} vboxUniformedIID;
/* Functions for vboxArray */
nsresult (*OpenMachine)(IVirtualBox *vboxObj, PRUnichar *settingsFile, IMachine **machine);
nsresult (*GetSystemProperties)(IVirtualBox *vboxObj, ISystemProperties **systemProperties);
nsresult (*GetHost)(IVirtualBox *vboxObj, IHost **host);
- nsresult (*CreateMachine)(vboxGlobalData *data, virDomainDefPtr def, IMachine **machine, char *uuidstr);
+ nsresult (*CreateMachine)(vboxDriverPtr driver, virDomainDefPtr def, IMachine **machine, char *uuidstr);
nsresult (*CreateHardDisk)(IVirtualBox *vboxObj, PRUnichar *format, PRUnichar *location, IHardDisk **hardDisk);
nsresult (*RegisterMachine)(IVirtualBox *vboxObj, IMachine *machine);
nsresult (*FindHardDisk)(IVirtualBox *vboxObj, PRUnichar *location, PRUint32 deviceType,
PRUnichar *hostPath, PRBool writable,
PRBool automount);
nsresult (*RemoveSharedFolder)(IMachine *machine, PRUnichar *name);
- nsresult (*LaunchVMProcess)(vboxGlobalData *data, IMachine *machine,
+ nsresult (*LaunchVMProcess)(vboxDriverPtr driver, IMachine *machine,
vboxIIDUnion *iidu,
PRUnichar *sessionType, PRUnichar *env,
IProgress **progress);
/* Functions for ISession */
typedef struct {
- nsresult (*Open)(vboxGlobalData *data, vboxIIDUnion *iidu, IMachine *machine);
- nsresult (*OpenExisting)(vboxGlobalData *data, vboxIIDUnion *iidu, IMachine *machine);
+ nsresult (*Open)(vboxDriverPtr driver, vboxIIDUnion *iidu, IMachine *machine);
+ nsresult (*OpenExisting)(vboxDriverPtr driver, vboxIIDUnion *iidu, IMachine *machine);
nsresult (*GetConsole)(ISession *session, IConsole **console);
nsresult (*GetMachine)(ISession *session, IMachine **machine);
nsresult (*Close)(ISession *session);
typedef struct {
nsresult (*GetEnabled)(IVRDxServer *VRDxServer, PRBool *enabled);
nsresult (*SetEnabled)(IVRDxServer *VRDxServer, PRBool enabled);
- nsresult (*GetPorts)(vboxGlobalData *data, IVRDxServer *VRDxServer,
+ nsresult (*GetPorts)(vboxDriverPtr driver, IVRDxServer *VRDxServer,
virDomainGraphicsDefPtr graphics);
- nsresult (*SetPorts)(vboxGlobalData *data, IVRDxServer *VRDxServer,
+ nsresult (*SetPorts)(vboxDriverPtr driver, IVRDxServer *VRDxServer,
virDomainGraphicsDefPtr graphics);
nsresult (*GetReuseSingleConnection)(IVRDxServer *VRDxServer, PRBool *enabled);
nsresult (*SetReuseSingleConnection)(IVRDxServer *VRDxServer, PRBool enabled);
nsresult (*GetAllowMultiConnection)(IVRDxServer *VRDxServer, PRBool *enabled);
nsresult (*SetAllowMultiConnection)(IVRDxServer *VRDxServer, PRBool enabled);
- nsresult (*GetNetAddress)(vboxGlobalData *data, IVRDxServer *VRDxServer,
+ nsresult (*GetNetAddress)(vboxDriverPtr driver, IVRDxServer *VRDxServer,
PRUnichar **netAddress);
- nsresult (*SetNetAddress)(vboxGlobalData *data, IVRDxServer *VRDxServer,
+ nsresult (*SetNetAddress)(vboxDriverPtr driver, IVRDxServer *VRDxServer,
PRUnichar *netAddress);
} vboxUniformedIVRDxServer;
IHostNetworkInterface **networkInterface);
nsresult (*FindHostNetworkInterfaceByName)(IHost *host, PRUnichar *name,
IHostNetworkInterface **networkInterface);
- nsresult (*CreateHostOnlyNetworkInterface)(vboxGlobalData *data,
+ nsresult (*CreateHostOnlyNetworkInterface)(vboxDriverPtr driver,
IHost *host, char *name,
IHostNetworkInterface **networkInterface);
nsresult (*RemoveHostOnlyNetworkInterface)(IHost *host, vboxIIDUnion *iidu,
uint32_t XPCOMCVersion;
/* vbox APIs */
int (*initializeDomainEvent)(vboxDriverPtr driver);
- void (*registerGlobalData)(vboxGlobalData *data);
- void (*detachDevices)(vboxGlobalData *data, IMachine *machine, PRUnichar *hddcnameUtf16);
- nsresult (*unregisterMachine)(vboxGlobalData *data, vboxIIDUnion *iidu, IMachine **machine);
+ void (*detachDevices)(vboxDriverPtr driver, IMachine *machine, PRUnichar *hddcnameUtf16);
+ nsresult (*unregisterMachine)(vboxDriverPtr driver, vboxIIDUnion *iidu, IMachine **machine);
void (*deleteConfig)(IMachine *machine);
- void (*vboxAttachDrivesOld)(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine);
+ void (*vboxAttachDrivesOld)(virDomainDefPtr def, vboxDriverPtr driver, IMachine *machine);
virDomainState (*vboxConvertState)(PRUint32 state);
- void (*dumpIDEHDDsOld)(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine);
- void (*dumpDVD)(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine);
- int (*attachDVD)(vboxGlobalData *data, IMachine *machine, const char *src);
+ void (*dumpIDEHDDsOld)(virDomainDefPtr def, vboxDriverPtr driver, IMachine *machine);
+ void (*dumpDVD)(virDomainDefPtr def, vboxDriverPtr driver, IMachine *machine);
+ int (*attachDVD)(vboxDriverPtr driver, IMachine *machine, const char *src);
int (*detachDVD)(IMachine *machine);
- void (*dumpFloppy)(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine);
- int (*attachFloppy)(vboxGlobalData *data, IMachine *machine, const char *src);
+ void (*dumpFloppy)(virDomainDefPtr def, vboxDriverPtr driver, IMachine *machine);
+ int (*attachFloppy)(vboxDriverPtr driver, IMachine *machine, const char *src);
int (*detachFloppy)(IMachine *machine);
int (*snapshotRestore)(virDomainPtr dom, IMachine *machine, ISnapshot *snapshot);
void (*registerDomainEvent)(virHypervisorDriverPtr driver);
uniformedMachineStateChecker machineStateChecker;
/* vbox API features */
bool domainEventCallbacks;
- bool hasStaticGlobalData;
bool getMachineForSession;
bool detachDevicesExplicitly;
bool chipsetType;