From 8dd169d1c1afe930fcec6001f4716072583291de Mon Sep 17 00:00:00 2001 From: Nikolay Shirokovskiy Date: Tue, 14 Jun 2016 11:45:56 +0300 Subject: [PATCH] vz: use domain list infrastructure to deal with private domain Signed-off-by: Nikolay Shirokovskiy --- src/vz/vz_driver.c | 7 ++++++- src/vz/vz_sdk.c | 13 ------------- src/vz/vz_sdk.h | 2 -- src/vz/vz_utils.c | 34 ++++++++++++++++++++++++++-------- src/vz/vz_utils.h | 3 +++ 5 files changed, 35 insertions(+), 24 deletions(-) diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index 6d48dc4dec..1bb99f069f 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -292,6 +292,10 @@ vzDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, return 0; } +static virDomainXMLPrivateDataCallbacks vzDomainXMLPrivateDataCallbacksPtr = { + .alloc = vzDomObjAlloc, + .free = vzDomObjFree, +}; static virDomainDefParserConfig vzDomainDefParserConfig = { .macPrefix = {0x42, 0x1C, 0x00}, @@ -314,7 +318,8 @@ vzDriverObjNew(void) if (!(driver->caps = vzBuildCapabilities()) || !(driver->xmlopt = virDomainXMLOptionNew(&vzDomainDefParserConfig, - NULL, NULL)) || + &vzDomainXMLPrivateDataCallbacksPtr, + NULL)) || !(driver->domains = virDomainObjListNew()) || !(driver->domainEventState = virObjectEventStateNew()) || (vzInitVersion(driver) < 0) || diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c index cdda8eb281..9495a36968 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -476,19 +476,6 @@ prlsdkGetDomainState(PRL_HANDLE sdkdom, VIRTUAL_MACHINE_STATE_PTR vmState) return ret; } -void -prlsdkDomObjFreePrivate(void *p) -{ - vzDomObjPtr pdom = p; - - if (!pdom) - return; - - PrlHandle_Free(pdom->sdkdom); - PrlHandle_Free(pdom->stats); - VIR_FREE(p); -}; - static int prlsdkAddDomainVideoInfoCt(virDomainDefPtr def) { diff --git a/src/vz/vz_sdk.h b/src/vz/vz_sdk.h index 2d75f9590c..a7dec565ff 100644 --- a/src/vz/vz_sdk.h +++ b/src/vz/vz_sdk.h @@ -76,8 +76,6 @@ int prlsdkGetVcpuStats(PRL_HANDLE sdkstas, int idx, unsigned long long *time); int prlsdkGetMemoryStats(PRL_HANDLE sdkstas, virDomainMemoryStatPtr stats, unsigned int nr_stats); -void -prlsdkDomObjFreePrivate(void *p); /* memsize is in MiB */ int prlsdkSetMemsize(virDomainObjPtr dom, unsigned int memsize); int diff --git a/src/vz/vz_utils.c b/src/vz/vz_utils.c index 43c531ba5d..114738e6da 100644 --- a/src/vz/vz_utils.c +++ b/src/vz/vz_utils.c @@ -164,15 +164,10 @@ vzNewDomain(vzDriverPtr driver, const char *name, const unsigned char *uuid) { virDomainDefPtr def = NULL; virDomainObjPtr dom = NULL; - vzDomObjPtr pdom = NULL; if (!(def = virDomainDefNewFull(name, uuid, -1))) goto error; - if (VIR_ALLOC(pdom) < 0) - goto error; - - pdom->stats = PRL_INVALID_HANDLE; def->virtType = VIR_DOMAIN_VIRT_VZ; if (!(dom = virDomainObjListAdd(driver->domains, def, @@ -180,14 +175,11 @@ vzNewDomain(vzDriverPtr driver, const char *name, const unsigned char *uuid) 0, NULL))) goto error; - dom->privateData = pdom; - dom->privateDataFreeFunc = prlsdkDomObjFreePrivate; dom->persistent = 1; return dom; error: virDomainDefFree(def); - VIR_FREE(pdom); return NULL; } @@ -610,3 +602,29 @@ int vzCheckUnsupportedGraphics(virDomainGraphicsDefPtr gr) return 0; } + +void* +vzDomObjAlloc(void) +{ + vzDomObjPtr pdom = NULL; + + if (VIR_ALLOC(pdom) < 0) + return NULL; + + pdom->stats = PRL_INVALID_HANDLE; + + return pdom; +} + +void +vzDomObjFree(void* p) +{ + vzDomObjPtr pdom = p; + + if (!pdom) + return; + + PrlHandle_Free(pdom->sdkdom); + PrlHandle_Free(pdom->stats); + VIR_FREE(pdom); +}; diff --git a/src/vz/vz_utils.h b/src/vz/vz_utils.h index ba96765aa0..a9a8176952 100644 --- a/src/vz/vz_utils.h +++ b/src/vz/vz_utils.h @@ -102,6 +102,9 @@ struct vzDomObj { typedef struct vzDomObj *vzDomObjPtr; +void* vzDomObjAlloc(void); +void vzDomObjFree(void *p); + virDomainObjPtr vzDomObjFromDomain(virDomainPtr domain); virDomainObjPtr vzDomObjFromDomainRef(virDomainPtr domain); -- 2.39.5