ch_domain: add methods to manage private vcpu data

Signed-off-by: Vineeth Pillai <viremana@linux.microsoft.com>
Signed-off-by: Praveen K Paladugu <prapal@linux.microsoft.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Vineeth Pillai 2021-12-10 20:34:38 +00:00 committed by Michal Privoznik
parent 326a4ed2cb
commit bfa2da4ca9
2 changed files with 50 additions and 5 deletions

View File

@ -164,11 +164,6 @@ virCHDomainObjPrivateFree(void *data)
g_free(priv); g_free(priv);
} }
virDomainXMLPrivateDataCallbacks virCHDriverPrivateDataCallbacks = {
.alloc = virCHDomainObjPrivateAlloc,
.free = virCHDomainObjPrivateFree,
};
static int static int
virCHDomainDefPostParseBasic(virDomainDef *def, virCHDomainDefPostParseBasic(virDomainDef *def,
void *opaque G_GNUC_UNUSED) void *opaque G_GNUC_UNUSED)
@ -185,6 +180,39 @@ virCHDomainDefPostParseBasic(virDomainDef *def,
return 0; return 0;
} }
static virClass *virCHDomainVcpuPrivateClass;
static void
virCHDomainVcpuPrivateDispose(void *obj G_GNUC_UNUSED)
{
}
static int
virCHDomainVcpuPrivateOnceInit(void)
{
if (!VIR_CLASS_NEW(virCHDomainVcpuPrivate, virClassForObject()))
return -1;
return 0;
}
VIR_ONCE_GLOBAL_INIT(virCHDomainVcpuPrivate);
static virObject *
virCHDomainVcpuPrivateNew(void)
{
virCHDomainVcpuPrivate *priv;
if (virCHDomainVcpuPrivateInitialize() < 0)
return NULL;
if (!(priv = virObjectNew(virCHDomainVcpuPrivateClass)))
return NULL;
return (virObject *) priv;
}
static int static int
virCHDomainDefPostParse(virDomainDef *def, virCHDomainDefPostParse(virDomainDef *def,
unsigned int parseFlags G_GNUC_UNUSED, unsigned int parseFlags G_GNUC_UNUSED,
@ -203,6 +231,12 @@ virCHDomainDefPostParse(virDomainDef *def,
return 0; return 0;
} }
virDomainXMLPrivateDataCallbacks virCHDriverPrivateDataCallbacks = {
.alloc = virCHDomainObjPrivateAlloc,
.free = virCHDomainObjPrivateFree,
.vcpuNew = virCHDomainVcpuPrivateNew,
};
static int static int
chValidateDomainDeviceDef(const virDomainDeviceDef *dev, chValidateDomainDeviceDef(const virDomainDeviceDef *dev,
const virDomainDef *def G_GNUC_UNUSED, const virDomainDef *def G_GNUC_UNUSED,

View File

@ -62,6 +62,17 @@ struct _virCHDomainObjPrivate {
virCHMonitor *virCHDomainGetMonitor(virDomainObj *vm); virCHMonitor *virCHDomainGetMonitor(virDomainObj *vm);
typedef struct _virCHDomainVcpuPrivate virCHDomainVcpuPrivate;
struct _virCHDomainVcpuPrivate {
virObject parent;
pid_t tid; /* vcpu thread id */
virTristateBool halted;
};
#define CH_DOMAIN_VCPU_PRIVATE(vcpu) \
((virCHDomainVcpuPrivate *) (vcpu)->privateData)
extern virDomainXMLPrivateDataCallbacks virCHDriverPrivateDataCallbacks; extern virDomainXMLPrivateDataCallbacks virCHDriverPrivateDataCallbacks;
extern virDomainDefParserConfig virCHDriverDomainDefParserConfig; extern virDomainDefParserConfig virCHDriverDomainDefParserConfig;