Signed-off-by: Rafael Fonseca <r4f4rfs(a)gmail.com>
---
src/conf/domain_conf.c | 21 ++-
src/conf/domain_conf.h | 18 +-
src/qemu/qemu_domain.c | 359 +++++++++++++++++---------------------
src/qemu/qemu_domain.h | 145 ++++++++++-----
src/util/virstoragefile.c | 2 +-
src/util/virstoragefile.h | 3 +-
6 files changed, 286 insertions(+), 262 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index fa87fb0590..15a0c2d881 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -1785,7 +1785,7 @@ void virDomainGraphicsDefFree(virDomainGraphicsDefPtr def)
virDomainGraphicsListenDefClear(&def->listens[i]);
VIR_FREE(def->listens);
- virObjectUnref(def->privateData);
+ g_clear_object(&def->privateData);
VIR_FREE(def);
}
@@ -1833,7 +1833,7 @@ static virDomainVcpuDefPtr
virDomainVcpuDefNew(virDomainXMLOptionPtr xmlopt)
{
virDomainVcpuDefPtr ret = NULL;
- g_autoptr(virObject) priv = NULL;
+ g_autoptr(GObject) priv = NULL;
if (xmlopt && xmlopt->privateData.vcpuNew &&
!(priv = xmlopt->privateData.vcpuNew()))
@@ -1856,7 +1856,7 @@ virDomainVcpuDefFree(virDomainVcpuDefPtr info)
virBitmapFree(info->cpumask);
info->cpumask = NULL;
- virObjectUnref(info->privateData);
+ g_clear_object(&info->privateData);
VIR_FREE(info);
}
@@ -2158,7 +2158,7 @@ virDomainDiskDefFree(virDomainDiskDefPtr def)
VIR_FREE(def->blkdeviotune.group_name);
VIR_FREE(def->virtio);
virDomainDeviceInfoClear(&def->info);
- virObjectUnref(def->privateData);
+ g_clear_object(&def->privateData);
VIR_FREE(def);
}
@@ -2361,7 +2361,7 @@ void virDomainFSDefFree(virDomainFSDefPtr def)
VIR_FREE(def->dst);
virDomainDeviceInfoClear(&def->info);
VIR_FREE(def->virtio);
- virObjectUnref(def->privateData);
+ g_clear_object(&def->privateData);
VIR_FREE(def->binary);
VIR_FREE(def);
@@ -2422,7 +2422,7 @@ virDomainVsockDefFree(virDomainVsockDefPtr vsock)
if (!vsock)
return;
- virObjectUnref(vsock->privateData);
+ g_clear_object(&vsock->privateData);
virDomainDeviceInfoClear(&vsock->info);
VIR_FREE(vsock);
}
@@ -2510,7 +2510,7 @@ virDomainNetDefFree(virDomainNetDefPtr def)
if (!def)
return;
virDomainNetDefClear(def);
- virObjectUnref(def->privateData);
+ g_clear_object(&def->privateData);
VIR_FREE(def);
}
@@ -2651,8 +2651,7 @@ virDomainChrSourceDefDispose(GObject *obj)
{
virDomainChrSourceDefPtr def = VIR_DOMAIN_CHR_SOURCE_DEF(obj);
- virObjectUnref(def->privateData);
- def->privateData = NULL;
+ g_clear_object(&def->privateData);
G_OBJECT_CLASS(vir_domain_chr_source_def_parent_class)->dispose(obj);
}
@@ -2909,7 +2908,7 @@ virDomainVideoDefClear(virDomainVideoDefPtr def)
if (def->driver)
VIR_FREE(def->driver->vhost_user_binary);
VIR_FREE(def->driver);
- virObjectUnref(def->privateData);
+ g_clear_object(&def->privateData);
memset(def, 0, sizeof(*def));
}
@@ -27098,7 +27097,7 @@ virDomainRNGDefFree(virDomainRNGDefPtr def)
VIR_FREE(def->source.file);
break;
case VIR_DOMAIN_RNG_BACKEND_EGD:
- virObjectUnref(def->source.chardev);
+ g_clear_object(&def->source.chardev);
break;
case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
case VIR_DOMAIN_RNG_BACKEND_LAST:
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index c9a44ecfd8..ae9a064106 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -528,7 +528,7 @@ typedef enum {
struct _virDomainDiskDef {
virStorageSourcePtr src; /* non-NULL. XXX Allow NULL for empty cdrom? */
- virObjectPtr privateData;
+ GObject *privateData;
int device; /* enum virDomainDiskDevice */
int bus; /* enum virDomainDiskBus */
@@ -852,7 +852,7 @@ struct _virDomainFSDef {
virTristateSwitch posix_lock;
virTristateSwitch flock;
virDomainVirtioOptionsPtr virtio;
- virObjectPtr privateData;
+ GObject *privateData;
};
@@ -1071,7 +1071,7 @@ struct _virDomainNetDef {
unsigned int mtu;
virNetDevCoalescePtr coalesce;
virDomainVirtioOptionsPtr virtio;
- virObjectPtr privateData;
+ GObject *privateData;
};
typedef enum {
@@ -1190,7 +1190,7 @@ struct _virDomainChrSourceReconnectDef {
struct _virDomainChrSourceDef {
GObject parent;
int type; /* virDomainChrType */
- virObjectPtr privateData;
+ GObject *privateData;
union {
/* no <source> for null, vc, stdio */
struct {
@@ -1493,7 +1493,7 @@ struct _virDomainVideoDriverDef {
};
struct _virDomainVideoDef {
- virObjectPtr privateData;
+ GObject *privateData;
int type; /* enum virDomainVideoType */
unsigned int ram; /* kibibytes (multiples of 1024) */
@@ -1640,7 +1640,7 @@ struct _virDomainGraphicsListenDef {
};
struct _virDomainGraphicsDef {
- virObjectPtr privateData;
+ GObject *privateData;
/* Port value discipline:
* Value -1 is legacy syntax indicating that it should be auto-allocated.
@@ -2318,7 +2318,7 @@ struct _virDomainVcpuDef {
virDomainThreadSchedParam sched;
- virObjectPtr privateData;
+ GObject *privateData;
};
struct _virDomainBlkiotune {
@@ -2416,7 +2416,7 @@ typedef enum {
} virDomainVsockModel;
struct _virDomainVsockDef {
- virObjectPtr privateData;
+ GObject *privateData;
virDomainVsockModel model;
unsigned int guest_cid;
@@ -2774,7 +2774,7 @@ struct _virDomainDefParserConfig {
typedef void *(*virDomainXMLPrivateDataAllocFunc)(void *);
typedef void (*virDomainXMLPrivateDataFreeFunc)(void *);
-typedef virObjectPtr (*virDomainXMLPrivateDataNewFunc)(void);
+typedef GObject* (*virDomainXMLPrivateDataNewFunc)(void);
typedef int (*virDomainXMLPrivateDataFormatFunc)(virBufferPtr,
virDomainObjPtr);
typedef int (*virDomainXMLPrivateDataParseFunc)(xmlXPathContextPtr,
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 99478890b6..7f6ac10659 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -1130,362 +1130,329 @@ qemuDomainSecretInfoDestroy(qemuDomainSecretInfoPtr secinfo)
}
-static virClassPtr qemuDomainDiskPrivateClass;
-static void qemuDomainDiskPrivateDispose(void *obj);
+G_DEFINE_TYPE(qemuDomainDiskPrivate, qemu_domain_disk_private, G_TYPE_OBJECT);
+static void qemuDomainDiskPrivateDispose(GObject *obj);
+static void qemuDomainDiskPrivateFinalize(GObject *obj);
-static int
-qemuDomainDiskPrivateOnceInit(void)
+static void
+qemu_domain_disk_private_init(qemuDomainDiskPrivate *priv G_GNUC_UNUSED)
{
- if (!VIR_CLASS_NEW(qemuDomainDiskPrivate, virClassForObject()))
- return -1;
-
- return 0;
}
-VIR_ONCE_GLOBAL_INIT(qemuDomainDiskPrivate);
+static void
+qemu_domain_disk_private_class_init(qemuDomainDiskPrivateClass *klass)
+{
+ GObjectClass *obj = G_OBJECT_CLASS(klass);
+
+ obj->dispose = qemuDomainDiskPrivateDispose;
+ obj->finalize = qemuDomainDiskPrivateFinalize;
+}
-static virObjectPtr
+static GObject *
qemuDomainDiskPrivateNew(void)
{
- qemuDomainDiskPrivatePtr priv;
+ return g_object_new(QEMU_TYPE_DOMAIN_DISK_PRIVATE, NULL);
+}
- if (qemuDomainDiskPrivateInitialize() < 0)
- return NULL;
+static void
+qemuDomainDiskPrivateDispose(GObject *obj)
+{
+ qemuDomainDiskPrivatePtr priv = QEMU_DOMAIN_DISK(obj);
- if (!(priv = virObjectNew(qemuDomainDiskPrivateClass)))
- return NULL;
+ virObjectUnref(priv->migrSource);
+ priv->migrSource = NULL;
+ g_clear_object(&priv->blockjob);
- return (virObjectPtr) priv;
+ G_OBJECT_CLASS(qemu_domain_disk_private_parent_class)->dispose(obj);
}
static void
-qemuDomainDiskPrivateDispose(void *obj)
+qemuDomainDiskPrivateFinalize(GObject *obj)
{
- qemuDomainDiskPrivatePtr priv = obj;
+ qemuDomainDiskPrivatePtr priv = QEMU_DOMAIN_DISK(obj);
- virObjectUnref(priv->migrSource);
VIR_FREE(priv->qomName);
VIR_FREE(priv->nodeCopyOnRead);
- g_clear_object(&priv->blockjob);
+
+ G_OBJECT_CLASS(qemu_domain_disk_private_parent_class)->finalize(obj);
}
-static virClassPtr qemuDomainStorageSourcePrivateClass;
-static void qemuDomainStorageSourcePrivateDispose(void *obj);
+G_DEFINE_TYPE(qemuDomainStorageSourcePrivate, qemu_domain_storage_source_private,
G_TYPE_OBJECT);
+static void qemuDomainStorageSourcePrivateFinalize(GObject *obj);
-static int
-qemuDomainStorageSourcePrivateOnceInit(void)
+static void
+qemu_domain_storage_source_private_init(qemuDomainStorageSourcePrivate *priv
G_GNUC_UNUSED)
{
- if (!VIR_CLASS_NEW(qemuDomainStorageSourcePrivate, virClassForObject()))
- return -1;
-
- return 0;
}
-VIR_ONCE_GLOBAL_INIT(qemuDomainStorageSourcePrivate);
-
-virObjectPtr
-qemuDomainStorageSourcePrivateNew(void)
+static void
+qemu_domain_storage_source_private_class_init(qemuDomainStorageSourcePrivateClass
*klass)
{
- qemuDomainStorageSourcePrivatePtr priv;
-
- if (qemuDomainStorageSourcePrivateInitialize() < 0)
- return NULL;
+ GObjectClass *obj = G_OBJECT_CLASS(klass);
- if (!(priv = virObjectNew(qemuDomainStorageSourcePrivateClass)))
- return NULL;
+ obj->finalize = qemuDomainStorageSourcePrivateFinalize;
+}
- return (virObjectPtr) priv;
+GObject *
+qemuDomainStorageSourcePrivateNew(void)
+{
+ return g_object_new(QEMU_TYPE_DOMAIN_STORAGE_SOURCE_PRIVATE, NULL);
}
static void
-qemuDomainStorageSourcePrivateDispose(void *obj)
+qemuDomainStorageSourcePrivateFinalize(GObject *obj)
{
- qemuDomainStorageSourcePrivatePtr priv = obj;
+ qemuDomainStorageSourcePrivatePtr priv = QEMU_DOMAIN_STORAGE_SOURCE(obj);
g_clear_pointer(&priv->secinfo, qemuDomainSecretInfoFree);
g_clear_pointer(&priv->encinfo, qemuDomainSecretInfoFree);
+
+ G_OBJECT_CLASS(qemu_domain_storage_source_private_parent_class)->finalize(obj);
}
-static virClassPtr qemuDomainVcpuPrivateClass;
-static void qemuDomainVcpuPrivateDispose(void *obj);
+G_DEFINE_TYPE(qemuDomainVcpuPrivate, qemu_domain_vcpu_private, G_TYPE_OBJECT);
+static void qemuDomainVcpuPrivateFinalize(GObject *obj);
-static int
-qemuDomainVcpuPrivateOnceInit(void)
+static void
+qemu_domain_vcpu_private_init(qemuDomainVcpuPrivate *priv G_GNUC_UNUSED)
{
- if (!VIR_CLASS_NEW(qemuDomainVcpuPrivate, virClassForObject()))
- return -1;
-
- return 0;
}
-VIR_ONCE_GLOBAL_INIT(qemuDomainVcpuPrivate);
-
-static virObjectPtr
-qemuDomainVcpuPrivateNew(void)
+static void
+qemu_domain_vcpu_private_class_init(qemuDomainVcpuPrivateClass *klass)
{
- qemuDomainVcpuPrivatePtr priv;
-
- if (qemuDomainVcpuPrivateInitialize() < 0)
- return NULL;
+ GObjectClass *obj = G_OBJECT_CLASS(klass);
- if (!(priv = virObjectNew(qemuDomainVcpuPrivateClass)))
- return NULL;
+ obj->finalize = qemuDomainVcpuPrivateFinalize;
+}
- return (virObjectPtr) priv;
+static GObject *
+qemuDomainVcpuPrivateNew(void)
+{
+ return g_object_new(QEMU_TYPE_DOMAIN_VCPU_PRIVATE, NULL);
}
static void
-qemuDomainVcpuPrivateDispose(void *obj)
+qemuDomainVcpuPrivateFinalize(GObject *obj)
{
- qemuDomainVcpuPrivatePtr priv = obj;
+ qemuDomainVcpuPrivatePtr priv = QEMU_DOMAIN_VCPU(obj);
VIR_FREE(priv->type);
VIR_FREE(priv->alias);
virJSONValueFree(priv->props);
- return;
+
+ G_OBJECT_CLASS(qemu_domain_vcpu_private_parent_class)->finalize(obj);
}
-static virClassPtr qemuDomainChrSourcePrivateClass;
-static void qemuDomainChrSourcePrivateDispose(void *obj);
+G_DEFINE_TYPE(qemuDomainChrSourcePrivate, qemu_domain_chr_source_private,
G_TYPE_OBJECT);
+static void qemuDomainChrSourcePrivateFinalize(GObject *obj);
-static int
-qemuDomainChrSourcePrivateOnceInit(void)
+static void
+qemu_domain_chr_source_private_init(qemuDomainChrSourcePrivate *priv G_GNUC_UNUSED)
{
- if (!VIR_CLASS_NEW(qemuDomainChrSourcePrivate, virClassForObject()))
- return -1;
-
- return 0;
}
-VIR_ONCE_GLOBAL_INIT(qemuDomainChrSourcePrivate);
-
-static virObjectPtr
-qemuDomainChrSourcePrivateNew(void)
+static void
+qemu_domain_chr_source_private_class_init(qemuDomainChrSourcePrivateClass *klass)
{
- qemuDomainChrSourcePrivatePtr priv;
-
- if (qemuDomainChrSourcePrivateInitialize() < 0)
- return NULL;
+ GObjectClass *obj = G_OBJECT_CLASS(klass);
- if (!(priv = virObjectNew(qemuDomainChrSourcePrivateClass)))
- return NULL;
+ obj->finalize = qemuDomainChrSourcePrivateFinalize;
+}
- return (virObjectPtr) priv;
+static GObject *
+qemuDomainChrSourcePrivateNew(void)
+{
+ return g_object_new(QEMU_TYPE_DOMAIN_CHR_SOURCE_PRIVATE, NULL);
}
static void
-qemuDomainChrSourcePrivateDispose(void *obj)
+qemuDomainChrSourcePrivateFinalize(GObject *obj)
{
- qemuDomainChrSourcePrivatePtr priv = obj;
+ qemuDomainChrSourcePrivatePtr priv = QEMU_DOMAIN_CHR_SOURCE(obj);
g_clear_pointer(&priv->secinfo, qemuDomainSecretInfoFree);
+
+ G_OBJECT_CLASS(qemu_domain_chr_source_private_parent_class)->finalize(obj);
}
-static virClassPtr qemuDomainVsockPrivateClass;
-static void qemuDomainVsockPrivateDispose(void *obj);
+G_DEFINE_TYPE(qemuDomainVsockPrivate, qemu_domain_vsock_private, G_TYPE_OBJECT);
+static void qemuDomainVsockPrivateFinalize(GObject *obj);
-static int
-qemuDomainVsockPrivateOnceInit(void)
+static void
+qemu_domain_vsock_private_init(qemuDomainVsockPrivate *priv)
{
- if (!VIR_CLASS_NEW(qemuDomainVsockPrivate, virClassForObject()))
- return -1;
-
- return 0;
+ priv->vhostfd = -1;
}
-VIR_ONCE_GLOBAL_INIT(qemuDomainVsockPrivate);
-
-static virObjectPtr
-qemuDomainVsockPrivateNew(void)
+static void
+qemu_domain_vsock_private_class_init(qemuDomainVsockPrivateClass *klass)
{
- qemuDomainVsockPrivatePtr priv;
-
- if (qemuDomainVsockPrivateInitialize() < 0)
- return NULL;
-
- if (!(priv = virObjectNew(qemuDomainVsockPrivateClass)))
- return NULL;
+ GObjectClass *obj = G_OBJECT_CLASS(klass);
- priv->vhostfd = -1;
+ obj->finalize = qemuDomainVsockPrivateFinalize;
+}
- return (virObjectPtr) priv;
+static GObject *
+qemuDomainVsockPrivateNew(void)
+{
+ return g_object_new(QEMU_TYPE_DOMAIN_VSOCK_PRIVATE, NULL);
}
static void
-qemuDomainVsockPrivateDispose(void *obj G_GNUC_UNUSED)
+qemuDomainVsockPrivateFinalize(GObject *obj)
{
- qemuDomainVsockPrivatePtr priv = obj;
+ qemuDomainVsockPrivatePtr priv = QEMU_DOMAIN_VSOCK(obj);
VIR_FORCE_CLOSE(priv->vhostfd);
+
+ G_OBJECT_CLASS(qemu_domain_vsock_private_parent_class)->finalize(obj);
}
-static virClassPtr qemuDomainGraphicsPrivateClass;
-static void qemuDomainGraphicsPrivateDispose(void *obj);
+G_DEFINE_TYPE(qemuDomainGraphicsPrivate, qemu_domain_graphics_private, G_TYPE_OBJECT);
+static void qemuDomainGraphicsPrivateFinalize(GObject *obj);
-static int
-qemuDomainGraphicsPrivateOnceInit(void)
+static void
+qemu_domain_graphics_private_init(qemuDomainGraphicsPrivate *priv G_GNUC_UNUSED)
{
- if (!VIR_CLASS_NEW(qemuDomainGraphicsPrivate, virClassForObject()))
- return -1;
-
- return 0;
}
-VIR_ONCE_GLOBAL_INIT(qemuDomainGraphicsPrivate);
-
-static virObjectPtr
-qemuDomainGraphicsPrivateNew(void)
+static void
+qemu_domain_graphics_private_class_init(qemuDomainGraphicsPrivateClass *klass)
{
- qemuDomainGraphicsPrivatePtr priv;
-
- if (qemuDomainGraphicsPrivateInitialize() < 0)
- return NULL;
+ GObjectClass *obj = G_OBJECT_CLASS(klass);
- if (!(priv = virObjectNew(qemuDomainGraphicsPrivateClass)))
- return NULL;
+ obj->finalize = qemuDomainGraphicsPrivateFinalize;
+}
- return (virObjectPtr) priv;
+static GObject *
+qemuDomainGraphicsPrivateNew(void)
+{
+ return g_object_new(QEMU_TYPE_DOMAIN_GRAPHICS_PRIVATE, NULL);
}
static void
-qemuDomainGraphicsPrivateDispose(void *obj)
+qemuDomainGraphicsPrivateFinalize(GObject *obj)
{
- qemuDomainGraphicsPrivatePtr priv = obj;
+ qemuDomainGraphicsPrivatePtr priv = QEMU_DOMAIN_GRAPHICS(obj);
VIR_FREE(priv->tlsAlias);
g_clear_pointer(&priv->secinfo, qemuDomainSecretInfoFree);
-}
+ G_OBJECT_CLASS(qemu_domain_graphics_private_parent_class)->finalize(obj);
+}
-static virClassPtr qemuDomainNetworkPrivateClass;
-static void qemuDomainNetworkPrivateDispose(void *obj);
+G_DEFINE_TYPE(qemuDomainNetworkPrivate, qemu_domain_network_private, G_TYPE_OBJECT);
+static void qemuDomainNetworkPrivateFinalize(GObject *obj);
-static int
-qemuDomainNetworkPrivateOnceInit(void)
+static void
+qemu_domain_network_private_init(qemuDomainNetworkPrivate *priv G_GNUC_UNUSED)
{
- if (!VIR_CLASS_NEW(qemuDomainNetworkPrivate, virClassForObject()))
- return -1;
-
- return 0;
}
+static void
+qemu_domain_network_private_class_init(qemuDomainNetworkPrivateClass *klass)
+{
+ GObjectClass *obj = G_OBJECT_CLASS(klass);
-VIR_ONCE_GLOBAL_INIT(qemuDomainNetworkPrivate);
+ obj->finalize = qemuDomainNetworkPrivateFinalize;
+}
-static virObjectPtr
+static GObject *
qemuDomainNetworkPrivateNew(void)
{
- qemuDomainNetworkPrivatePtr priv;
-
- if (qemuDomainNetworkPrivateInitialize() < 0)
- return NULL;
-
- if (!(priv = virObjectNew(qemuDomainNetworkPrivateClass)))
- return NULL;
-
- return (virObjectPtr) priv;
+ return g_object_new(QEMU_TYPE_DOMAIN_NETWORK_PRIVATE, NULL);
}
static void
-qemuDomainNetworkPrivateDispose(void *obj G_GNUC_UNUSED)
+qemuDomainNetworkPrivateFinalize(GObject *obj)
{
- qemuDomainNetworkPrivatePtr priv = obj;
+ qemuDomainNetworkPrivatePtr priv = QEMU_DOMAIN_NETWORK(obj);
qemuSlirpFree(priv->slirp);
-}
+ G_OBJECT_CLASS(qemu_domain_network_private_parent_class)->finalize(obj);
+}
-static virClassPtr qemuDomainFSPrivateClass;
-static void qemuDomainFSPrivateDispose(void *obj);
+G_DEFINE_TYPE(qemuDomainFSPrivate, qemu_domain_fs_private, G_TYPE_OBJECT);
+static void qemuDomainFSPrivateFinalize(GObject *obj);
-static int
-qemuDomainFSPrivateOnceInit(void)
+static void
+qemu_domain_fs_private_init(qemuDomainFSPrivate *priv G_GNUC_UNUSED)
{
- if (!VIR_CLASS_NEW(qemuDomainFSPrivate, virClassForObject()))
- return -1;
-
- return 0;
}
+static void
+qemu_domain_fs_private_class_init(qemuDomainFSPrivateClass *klass)
+{
+ GObjectClass *obj = G_OBJECT_CLASS(klass);
-VIR_ONCE_GLOBAL_INIT(qemuDomainFSPrivate);
-
+ obj->finalize = qemuDomainFSPrivateFinalize;
+}
-static virObjectPtr
+static GObject *
qemuDomainFSPrivateNew(void)
{
- qemuDomainFSPrivatePtr priv;
-
- if (qemuDomainFSPrivateInitialize() < 0)
- return NULL;
-
- if (!(priv = virObjectNew(qemuDomainFSPrivateClass)))
- return NULL;
-
- return (virObjectPtr) priv;
+ return g_object_new(QEMU_TYPE_DOMAIN_FS_PRIVATE, NULL);
}
static void
-qemuDomainFSPrivateDispose(void *obj)
+qemuDomainFSPrivateFinalize(GObject *obj)
{
- qemuDomainFSPrivatePtr priv = obj;
+ qemuDomainFSPrivatePtr priv = QEMU_DOMAIN_FS(obj);
g_free(priv->vhostuser_fs_sock);
+
+ G_OBJECT_CLASS(qemu_domain_fs_private_parent_class)->finalize(obj);
}
-static virClassPtr qemuDomainVideoPrivateClass;
-static void qemuDomainVideoPrivateDispose(void *obj);
+G_DEFINE_TYPE(qemuDomainVideoPrivate, qemu_domain_video_private, G_TYPE_OBJECT);
+static void qemuDomainVideoPrivateFinalize(GObject *obj);
+static void
+qemu_domain_video_private_init(qemuDomainVideoPrivate *priv)
+{
+ priv->vhost_user_fd = -1;
+}
-static int
-qemuDomainVideoPrivateOnceInit(void)
+static void
+qemu_domain_video_private_class_init(qemuDomainVideoPrivateClass *klass)
{
- if (!VIR_CLASS_NEW(qemuDomainVideoPrivate, virClassForObject()))
- return -1;
+ GObjectClass *obj = G_OBJECT_CLASS(klass);
- return 0;
+ obj->finalize = qemuDomainVideoPrivateFinalize;
}
-VIR_ONCE_GLOBAL_INIT(qemuDomainVideoPrivate);
-
-static virObjectPtr
+static GObject *
qemuDomainVideoPrivateNew(void)
{
- qemuDomainVideoPrivatePtr priv;
-
- if (qemuDomainVideoPrivateInitialize() < 0)
- return NULL;
-
- if (!(priv = virObjectNew(qemuDomainVideoPrivateClass)))
- return NULL;
-
- priv->vhost_user_fd = -1;
-
- return (virObjectPtr) priv;
+ return g_object_new(QEMU_TYPE_DOMAIN_VIDEO_PRIVATE, NULL);
}
static void
-qemuDomainVideoPrivateDispose(void *obj)
+qemuDomainVideoPrivateFinalize(GObject *obj)
{
- qemuDomainVideoPrivatePtr priv = obj;
+ qemuDomainVideoPrivatePtr priv = QEMU_DOMAIN_VIDEO(obj);
VIR_FORCE_CLOSE(priv->vhost_user_fd);
+
+ G_OBJECT_CLASS(qemu_domain_video_private_parent_class)->finalize(obj);
}
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index cf19f4d101..7dbd3ffc69 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -433,13 +433,8 @@ struct _qemuDomainObjPrivate {
#define QEMU_DOMAIN_PRIVATE(vm) \
((qemuDomainObjPrivatePtr) (vm)->privateData)
-#define QEMU_DOMAIN_DISK_PRIVATE(disk) \
- ((qemuDomainDiskPrivatePtr) (disk)->privateData)
-
-typedef struct _qemuDomainDiskPrivate qemuDomainDiskPrivate;
-typedef qemuDomainDiskPrivate *qemuDomainDiskPrivatePtr;
struct _qemuDomainDiskPrivate {
- virObject parent;
+ GObject parent;
/* ideally we want a smarter way to interlock block jobs on single qemu disk
* in the future, but for now we just disallow any concurrent job on a
@@ -457,13 +452,20 @@ struct _qemuDomainDiskPrivate {
char *nodeCopyOnRead; /* nodename of the disk-wide copy-on-read blockdev layer */
};
-#define QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src) \
- ((qemuDomainStorageSourcePrivatePtr) (src)->privateData)
+#define QEMU_TYPE_DOMAIN_DISK_PRIVATE qemu_domain_disk_private_get_type()
+G_DECLARE_FINAL_TYPE(qemuDomainDiskPrivate,
+ qemu_domain_disk_private,
+ QEMU,
+ DOMAIN_DISK,
+ GObject);
+typedef qemuDomainDiskPrivate *qemuDomainDiskPrivatePtr;
+
+#define QEMU_DOMAIN_DISK_PRIVATE(disk) \
+ ((qemuDomainDiskPrivatePtr) (disk)->privateData)
+
-typedef struct _qemuDomainStorageSourcePrivate qemuDomainStorageSourcePrivate;
-typedef qemuDomainStorageSourcePrivate *qemuDomainStorageSourcePrivatePtr;
struct _qemuDomainStorageSourcePrivate {
- virObject parent;
+ GObject parent;
/* data required for authentication to the storage source */
qemuDomainSecretInfoPtr secinfo;
@@ -475,12 +477,23 @@ struct _qemuDomainStorageSourcePrivate {
qemuDomainSecretInfoPtr httpcookie;
};
-virObjectPtr qemuDomainStorageSourcePrivateNew(void);
+#define QEMU_TYPE_DOMAIN_STORAGE_SOURCE_PRIVATE
qemu_domain_storage_source_private_get_type()
+G_DECLARE_FINAL_TYPE(qemuDomainStorageSourcePrivate,
+ qemu_domain_storage_source_private,
+ QEMU,
+ DOMAIN_STORAGE_SOURCE,
+ GObject);
+typedef qemuDomainStorageSourcePrivate *qemuDomainStorageSourcePrivatePtr;
+
+#define QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src) \
+ ((qemuDomainStorageSourcePrivatePtr) (src)->privateData)
+
+
+GObject *qemuDomainStorageSourcePrivateNew(void);
+
-typedef struct _qemuDomainVcpuPrivate qemuDomainVcpuPrivate;
-typedef qemuDomainVcpuPrivate *qemuDomainVcpuPrivatePtr;
struct _qemuDomainVcpuPrivate {
- virObject parent;
+ GObject parent;
pid_t tid; /* vcpu thread id */
int enable_id; /* order in which the vcpus were enabled in qemu */
@@ -500,6 +513,14 @@ struct _qemuDomainVcpuPrivate {
int vcpus;
};
+#define QEMU_TYPE_DOMAIN_VCPU_PRIVATE qemu_domain_vcpu_private_get_type()
+G_DECLARE_FINAL_TYPE(qemuDomainVcpuPrivate,
+ qemu_domain_vcpu_private,
+ QEMU,
+ DOMAIN_VCPU,
+ GObject);
+typedef qemuDomainVcpuPrivate *qemuDomainVcpuPrivatePtr;
+
#define QEMU_DOMAIN_VCPU_PRIVATE(vcpu) \
((qemuDomainVcpuPrivatePtr) (vcpu)->privateData)
@@ -513,77 +534,113 @@ struct qemuDomainDiskInfo {
char *nodename;
};
-#define QEMU_DOMAIN_CHR_SOURCE_PRIVATE(dev) \
- ((qemuDomainChrSourcePrivatePtr) (dev)->privateData)
-
-typedef struct _qemuDomainChrSourcePrivate qemuDomainChrSourcePrivate;
-typedef qemuDomainChrSourcePrivate *qemuDomainChrSourcePrivatePtr;
struct _qemuDomainChrSourcePrivate {
- virObject parent;
+ GObject parent;
/* for char devices using secret
* NB: *not* to be written to qemu domain object XML */
qemuDomainSecretInfoPtr secinfo;
};
+#define QEMU_TYPE_DOMAIN_CHR_SOURCE_PRIVATE qemu_domain_chr_source_private_get_type()
+G_DECLARE_FINAL_TYPE(qemuDomainChrSourcePrivate,
+ qemu_domain_chr_source_private,
+ QEMU,
+ DOMAIN_CHR_SOURCE,
+ GObject);
+typedef qemuDomainChrSourcePrivate *qemuDomainChrSourcePrivatePtr;
+
+#define QEMU_DOMAIN_CHR_SOURCE_PRIVATE(dev) \
+ ((qemuDomainChrSourcePrivatePtr) (dev)->privateData)
+
-typedef struct _qemuDomainVsockPrivate qemuDomainVsockPrivate;
-typedef qemuDomainVsockPrivate *qemuDomainVsockPrivatePtr;
struct _qemuDomainVsockPrivate {
- virObject parent;
+ GObject parent;
int vhostfd;
};
+#define QEMU_TYPE_DOMAIN_VSOCK_PRIVATE qemu_domain_vsock_private_get_type()
+G_DECLARE_FINAL_TYPE(qemuDomainVsockPrivate,
+ qemu_domain_vsock_private,
+ QEMU,
+ DOMAIN_VSOCK,
+ GObject);
+typedef qemuDomainVsockPrivate *qemuDomainVsockPrivatePtr;
-#define QEMU_DOMAIN_VIDEO_PRIVATE(dev) \
- ((qemuDomainVideoPrivatePtr) (dev)->privateData)
-typedef struct _qemuDomainVideoPrivate qemuDomainVideoPrivate;
-typedef qemuDomainVideoPrivate *qemuDomainVideoPrivatePtr;
struct _qemuDomainVideoPrivate {
- virObject parent;
+ GObject parent;
int vhost_user_fd;
};
+#define QEMU_TYPE_DOMAIN_VIDEO_PRIVATE qemu_domain_video_private_get_type()
+G_DECLARE_FINAL_TYPE(qemuDomainVideoPrivate,
+ qemu_domain_video_private,
+ QEMU,
+ DOMAIN_VIDEO,
+ GObject);
+typedef qemuDomainVideoPrivate *qemuDomainVideoPrivatePtr;
+
+#define QEMU_DOMAIN_VIDEO_PRIVATE(dev) \
+ ((qemuDomainVideoPrivatePtr) (dev)->privateData)
-#define QEMU_DOMAIN_GRAPHICS_PRIVATE(dev) \
- ((qemuDomainGraphicsPrivatePtr) (dev)->privateData)
-typedef struct _qemuDomainGraphicsPrivate qemuDomainGraphicsPrivate;
-typedef qemuDomainGraphicsPrivate *qemuDomainGraphicsPrivatePtr;
struct _qemuDomainGraphicsPrivate {
- virObject parent;
+ GObject parent;
char *tlsAlias;
qemuDomainSecretInfoPtr secinfo;
};
+#define QEMU_TYPE_DOMAIN_GRAPHICS_PRIVATE qemu_domain_graphics_private_get_type()
+G_DECLARE_FINAL_TYPE(qemuDomainGraphicsPrivate,
+ qemu_domain_graphics_private,
+ QEMU,
+ DOMAIN_GRAPHICS,
+ GObject);
+typedef qemuDomainGraphicsPrivate *qemuDomainGraphicsPrivatePtr;
+
+#define QEMU_DOMAIN_GRAPHICS_PRIVATE(dev) \
+ ((qemuDomainGraphicsPrivatePtr) (dev)->privateData)
-#define QEMU_DOMAIN_NETWORK_PRIVATE(dev) \
- ((qemuDomainNetworkPrivatePtr) (dev)->privateData)
-typedef struct _qemuDomainNetworkPrivate qemuDomainNetworkPrivate;
-typedef qemuDomainNetworkPrivate *qemuDomainNetworkPrivatePtr;
struct _qemuDomainNetworkPrivate {
- virObject parent;
+ GObject parent;
qemuSlirpPtr slirp;
};
+#define QEMU_TYPE_DOMAIN_NETWORK_PRIVATE qemu_domain_network_private_get_type()
+G_DECLARE_FINAL_TYPE(qemuDomainNetworkPrivate,
+ qemu_domain_network_private,
+ QEMU,
+ DOMAIN_NETWORK,
+ GObject);
+typedef qemuDomainNetworkPrivate *qemuDomainNetworkPrivatePtr;
+
+#define QEMU_DOMAIN_NETWORK_PRIVATE(dev) \
+ ((qemuDomainNetworkPrivatePtr) (dev)->privateData)
-#define QEMU_DOMAIN_FS_PRIVATE(dev) \
- ((qemuDomainFSPrivatePtr) (dev)->privateData)
-typedef struct _qemuDomainFSPrivate qemuDomainFSPrivate;
-typedef qemuDomainFSPrivate *qemuDomainFSPrivatePtr;
struct _qemuDomainFSPrivate {
- virObject parent;
+ GObject parent;
char *vhostuser_fs_sock;
};
+#define QEMU_TYPE_DOMAIN_FS_PRIVATE qemu_domain_fs_private_get_type()
+G_DECLARE_FINAL_TYPE(qemuDomainFSPrivate,
+ qemu_domain_fs_private,
+ QEMU,
+ DOMAIN_FS,
+ GObject);
+typedef qemuDomainFSPrivate *qemuDomainFSPrivatePtr;
+
+#define QEMU_DOMAIN_FS_PRIVATE(dev) \
+ ((qemuDomainFSPrivatePtr) (dev)->privateData)
+
typedef enum {
QEMU_PROCESS_EVENT_WATCHDOG = 0,
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index ffc8bdb344..0f26a81391 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -2717,7 +2717,7 @@ virStorageSourceClear(virStorageSourcePtr def)
virStorageNetHostDefFree(def->nhosts, def->hosts);
virStorageAuthDefFree(def->auth);
- virObjectUnref(def->privateData);
+ g_clear_object(&def->privateData);
VIR_FREE(def->nodestorage);
VIR_FREE(def->nodeformat);
diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
index 7939c09cd5..a744bcbf5c 100644
--- a/src/util/virstoragefile.h
+++ b/src/util/virstoragefile.h
@@ -30,6 +30,7 @@
#include "virsecret.h"
#include "virenum.h"
#include "virpci.h"
+#include <glib-object.h>
/* Minimum header size required to probe all known formats with
* virStorageFileProbeFormat, or obtain metadata from a known format.
@@ -304,7 +305,7 @@ struct _virStorageSource {
virStorageSourceInitiatorDef initiator;
- virObjectPtr privateData;
+ GObject *privateData;
int format; /* virStorageFileFormat in domain backing chains, but
* pool-specific enum for storage volumes */
--
2.25.3