From nobody Mon Feb 9 04:29:59 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) client-ip=205.139.110.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1589371159; cv=none; d=zohomail.com; s=zohoarc; b=Tm9hldQS9IzdU9qFT7BzAmI6p/Jyc7QptRO5PH0UjeiRm5gpUNrAoQpP+WM8+/35x/2AvlpeL3GygfuRvSi4vcwoUdYX7Xe/gjkTYUjR6bo2y8u78Xwyd/0yp2uTYHduovJwXbSUNDiNkPt/cvtqm6LW+tmIgxqNrZUiqV760Oc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589371159; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Gdo1Aswu+dpXPKfZSqP6b3R54BYHtFTRHTdVDqZvcLU=; b=QeS108E+PEuoQdG1CtHTsn4JJddVuu4hcJrPXmrQyrqASBCraFffJ8QlQl8p9chEYe7GSXt6byKIwxoEn0qHo1HI/bv2zlXKw6QC1DXX3PxrbkonGTBS1GzT6todbZWkXXtRl2Wk4gY6MemCSb5E25O823MW4aRgJmnl6RydDFA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by mx.zohomail.com with SMTPS id 1589371159353466.6121471734157; Wed, 13 May 2020 04:59:19 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-306-pLzBchsJPmqVZDPE_TZSCQ-1; Wed, 13 May 2020 07:59:15 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1EECF107ACCA; Wed, 13 May 2020 11:59:09 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F370434201; Wed, 13 May 2020 11:59:08 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id C1EBD180476A; Wed, 13 May 2020 11:59:08 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 04DBx5g1016423 for ; Wed, 13 May 2020 07:59:05 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0168F2029F62; Wed, 13 May 2020 11:59:05 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F04282029F6F for ; Wed, 13 May 2020 11:59:04 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id CC4148007AC for ; Wed, 13 May 2020 11:59:04 +0000 (UTC) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-44-X1isooBOPX2Q73czmlF1AQ-1; Wed, 13 May 2020 07:59:02 -0400 Received: by mail-wr1-f66.google.com with SMTP id l18so20525623wrn.6 for ; Wed, 13 May 2020 04:59:01 -0700 (PDT) Received: from localhost.localdomain (public-gprs367127.centertel.pl. [37.47.65.88]) by smtp.gmail.com with ESMTPSA id l1sm27838422wrc.24.2020.05.13.04.58.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2020 04:58:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589371157; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=Gdo1Aswu+dpXPKfZSqP6b3R54BYHtFTRHTdVDqZvcLU=; b=gfcswc1r2js68zqw36VBLPt76Q83ure4Kf5u4ENlTyIwU/evTWt6WXrjBOoY0f5JgzsFue Q26Cu4cJlWwOB3uJhB+U5m5NgYkPCv4FWxJw4SaBInAsEHCHhj8yqaFZ/AcGEFfsobxW7n t9jQH/uhjZtE1jOr3tTv5H2WZgiJndw= X-MC-Unique: pLzBchsJPmqVZDPE_TZSCQ-1 X-MC-Unique: X1isooBOPX2Q73czmlF1AQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Gdo1Aswu+dpXPKfZSqP6b3R54BYHtFTRHTdVDqZvcLU=; b=ff7WV6So9MHaLS9CULgMGbtHcbfMcPxK3vr7ri2TWVdmoq0syzoen9Ga0g2RqxENb0 +RN3pd8LoTcBiNolCJ1g7xmj8YaAHw2UskKLf5+lZEjPz9R0+bxSbqTpWMW0y8VnO9qC 5Qi1ne4tgy5GXxIrOgwcGJKVBj5+4ooltlajsB9p3tMYuiokAwVpQS1fE9TnlvwPEbiV c15X2vK+28PiBXy3q2+9p9VZCRtWeFPPe9389cR2gA36q0ZMHtkih8xeDrbgxX2KVxRo WY4lo71obrcKbG2GtFOtFXDCaXmchGGsGfjpn+OHgRalY6qYVNzJTSyh7q83zac9MM+G nrrg== X-Gm-Message-State: AGi0PuZsa/fiucSTJQnQH+gcq5FfY0YIDJtw0eaqEipqFkVMjbIb9qoC kArU9QymuGI8lbhjcsQzk9sKXOux X-Google-Smtp-Source: APiQypIIA4DSvS2mVOUdtovldDi0ti3LRHzYfq+qqzbGSVFZ4LfUMdhI+bELV29L3nGm7EMG69xGGA== X-Received: by 2002:adf:f651:: with SMTP id x17mr32068619wrp.277.1589371139845; Wed, 13 May 2020 04:58:59 -0700 (PDT) From: Rafael Fonseca To: libvirt-list@redhat.com Subject: [PATCH 38/40] conf: convert virDomain*Private to GObject Date: Wed, 13 May 2020 13:57:22 +0200 Message-Id: <20200513115724.157687-39-r4f4rfs@gmail.com> In-Reply-To: <20200513115724.157687-1-r4f4rfs@gmail.com> References: <20200513115724.157687-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Cc: Rafael Fonseca X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Rafael Fonseca --- src/conf/domain_conf.c | 18 +- src/conf/domain_conf.h | 18 +- src/qemu/qemu_domain.c | 349 +++++++++++++++++--------------------- src/qemu/qemu_domain.h | 145 +++++++++++----- src/util/virstoragefile.c | 2 +- src/util/virstoragefile.h | 3 +- 6 files changed, 274 insertions(+), 261 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index f7392fce05..a7b7ed3f4c 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1829,7 +1829,7 @@ void virDomainGraphicsDefFree(virDomainGraphicsDefPtr= def) virDomainGraphicsListenDefClear(&def->listens[i]); VIR_FREE(def->listens); =20 - virObjectUnref(def->privateData); + g_clear_object(&def->privateData); VIR_FREE(def); } =20 @@ -1877,7 +1877,7 @@ static virDomainVcpuDefPtr virDomainVcpuDefNew(virDomainXMLOptionPtr xmlopt) { virDomainVcpuDefPtr ret =3D NULL; - g_autoptr(virObject) priv =3D NULL; + g_autoptr(GObject) priv =3D NULL; =20 if (xmlopt && xmlopt->privateData.vcpuNew && !(priv =3D xmlopt->privateData.vcpuNew())) @@ -1900,7 +1900,7 @@ virDomainVcpuDefFree(virDomainVcpuDefPtr info) =20 virBitmapFree(info->cpumask); info->cpumask =3D NULL; - virObjectUnref(info->privateData); + g_clear_object(&info->privateData); VIR_FREE(info); } =20 @@ -2202,7 +2202,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); =20 VIR_FREE(def); } @@ -2405,7 +2405,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); =20 VIR_FREE(def); @@ -2466,7 +2466,7 @@ virDomainVsockDefFree(virDomainVsockDefPtr vsock) if (!vsock) return; =20 - virObjectUnref(vsock->privateData); + g_clear_object(&vsock->privateData); virDomainDeviceInfoClear(&vsock->info); VIR_FREE(vsock); } @@ -2554,7 +2554,7 @@ virDomainNetDefFree(virDomainNetDefPtr def) if (!def) return; virDomainNetDefClear(def); - virObjectUnref(def->privateData); + g_clear_object(&def->privateData); VIR_FREE(def); } =20 @@ -2943,7 +2943,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); =20 memset(def, 0, sizeof(*def)); } @@ -27345,7 +27345,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 2a4d8deaf6..2160cf3a4d 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -529,7 +529,7 @@ typedef enum { struct _virDomainDiskDef { virStorageSourcePtr src; /* non-NULL. XXX Allow NULL for empty cdrom?= */ =20 - virObjectPtr privateData; + GObject *privateData; =20 int device; /* enum virDomainDiskDevice */ int bus; /* enum virDomainDiskBus */ @@ -856,7 +856,7 @@ struct _virDomainFSDef { virTristateSwitch posix_lock; virTristateSwitch flock; virDomainVirtioOptionsPtr virtio; - virObjectPtr privateData; + GObject *privateData; }; =20 =20 @@ -1075,7 +1075,7 @@ struct _virDomainNetDef { unsigned int mtu; virNetDevCoalescePtr coalesce; virDomainVirtioOptionsPtr virtio; - virObjectPtr privateData; + GObject *privateData; }; =20 typedef enum { @@ -1194,7 +1194,7 @@ struct _virDomainChrSourceReconnectDef { struct _virDomainChrSourceDef { GObject parent; int type; /* virDomainChrType */ - virObjectPtr privateData; + GObject *privateData; union { /* no for null, vc, stdio */ struct { @@ -1497,7 +1497,7 @@ struct _virDomainVideoDriverDef { }; =20 struct _virDomainVideoDef { - virObjectPtr privateData; + GObject *privateData; =20 int type; /* enum virDomainVideoType */ unsigned int ram; /* kibibytes (multiples of 1024) */ @@ -1644,7 +1644,7 @@ struct _virDomainGraphicsListenDef { }; =20 struct _virDomainGraphicsDef { - virObjectPtr privateData; + GObject *privateData; =20 /* Port value discipline: * Value -1 is legacy syntax indicating that it should be auto-allocat= ed. @@ -2376,7 +2376,7 @@ struct _virDomainVcpuDef { =20 virDomainThreadSchedParam sched; =20 - virObjectPtr privateData; + GObject *privateData; }; =20 struct _virDomainBlkiotune { @@ -2474,7 +2474,7 @@ typedef enum { } virDomainVsockModel; =20 struct _virDomainVsockDef { - virObjectPtr privateData; + GObject *privateData; =20 virDomainVsockModel model; unsigned int guest_cid; @@ -2834,7 +2834,7 @@ struct _virDomainDefParserConfig { =20 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 e422db80a5..554bfa85f2 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1154,362 +1154,317 @@ qemuDomainSecretInfoDestroy(qemuDomainSecretInfoP= tr secinfo) } =20 =20 -static virClassPtr qemuDomainDiskPrivateClass; -static void qemuDomainDiskPrivateDispose(void *obj); +G_DEFINE_TYPE(qemuDomainDiskPrivate, qemu_domain_disk_private, G_TYPE_OBJE= CT); +static void qemuDomainDiskPrivateFinalize(GObject *obj); =20 -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; } =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainDiskPrivate); - -static virObjectPtr -qemuDomainDiskPrivateNew(void) +static void +qemu_domain_disk_private_class_init(qemuDomainDiskPrivateClass *klass) { - qemuDomainDiskPrivatePtr priv; - - if (qemuDomainDiskPrivateInitialize() < 0) - return NULL; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - if (!(priv =3D virObjectNew(qemuDomainDiskPrivateClass))) - return NULL; + obj->finalize =3D qemuDomainDiskPrivateFinalize; +} =20 - return (virObjectPtr) priv; +static GObject * +qemuDomainDiskPrivateNew(void) +{ + return g_object_new(QEMU_TYPE_DOMAIN_DISK_PRIVATE, NULL); } =20 static void -qemuDomainDiskPrivateDispose(void *obj) +qemuDomainDiskPrivateFinalize(GObject *obj) { - qemuDomainDiskPrivatePtr priv =3D obj; + qemuDomainDiskPrivatePtr priv =3D QEMU_DOMAIN_DISK(obj); =20 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); } =20 -static virClassPtr qemuDomainStorageSourcePrivateClass; -static void qemuDomainStorageSourcePrivateDispose(void *obj); +G_DEFINE_TYPE(qemuDomainStorageSourcePrivate, qemu_domain_storage_source_p= rivate, G_TYPE_OBJECT); +static void qemuDomainStorageSourcePrivateFinalize(GObject *obj); =20 -static int -qemuDomainStorageSourcePrivateOnceInit(void) +static void +qemu_domain_storage_source_private_init(qemuDomainStorageSourcePrivate *pr= iv G_GNUC_UNUSED) { - if (!VIR_CLASS_NEW(qemuDomainStorageSourcePrivate, virClassForObject()= )) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainStorageSourcePrivate); - -virObjectPtr -qemuDomainStorageSourcePrivateNew(void) +static void +qemu_domain_storage_source_private_class_init(qemuDomainStorageSourcePriva= teClass *klass) { - qemuDomainStorageSourcePrivatePtr priv; - - if (qemuDomainStorageSourcePrivateInitialize() < 0) - return NULL; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - if (!(priv =3D virObjectNew(qemuDomainStorageSourcePrivateClass))) - return NULL; + obj->finalize =3D qemuDomainStorageSourcePrivateFinalize; +} =20 - return (virObjectPtr) priv; +GObject * +qemuDomainStorageSourcePrivateNew(void) +{ + return g_object_new(QEMU_TYPE_DOMAIN_STORAGE_SOURCE_PRIVATE, NULL); } =20 =20 static void -qemuDomainStorageSourcePrivateDispose(void *obj) +qemuDomainStorageSourcePrivateFinalize(GObject *obj) { - qemuDomainStorageSourcePrivatePtr priv =3D obj; + qemuDomainStorageSourcePrivatePtr priv =3D QEMU_DOMAIN_STORAGE_SOURCE(= obj); =20 g_clear_pointer(&priv->secinfo, qemuDomainSecretInfoFree); g_clear_pointer(&priv->encinfo, qemuDomainSecretInfoFree); + + G_OBJECT_CLASS(qemu_domain_storage_source_private_parent_class)->final= ize(obj); } =20 =20 -static virClassPtr qemuDomainVcpuPrivateClass; -static void qemuDomainVcpuPrivateDispose(void *obj); +G_DEFINE_TYPE(qemuDomainVcpuPrivate, qemu_domain_vcpu_private, G_TYPE_OBJE= CT); +static void qemuDomainVcpuPrivateFinalize(GObject *obj); =20 -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; } =20 -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 =3D G_OBJECT_CLASS(klass); =20 - if (!(priv =3D virObjectNew(qemuDomainVcpuPrivateClass))) - return NULL; + obj->finalize =3D qemuDomainVcpuPrivateFinalize; +} =20 - return (virObjectPtr) priv; +static GObject * +qemuDomainVcpuPrivateNew(void) +{ + return g_object_new(QEMU_TYPE_DOMAIN_VCPU_PRIVATE, NULL); } =20 =20 static void -qemuDomainVcpuPrivateDispose(void *obj) +qemuDomainVcpuPrivateFinalize(GObject *obj) { - qemuDomainVcpuPrivatePtr priv =3D obj; + qemuDomainVcpuPrivatePtr priv =3D QEMU_DOMAIN_VCPU(obj); =20 VIR_FREE(priv->type); VIR_FREE(priv->alias); virJSONValueFree(priv->props); - return; + + G_OBJECT_CLASS(qemu_domain_vcpu_private_parent_class)->finalize(obj); } =20 =20 -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); =20 -static int -qemuDomainChrSourcePrivateOnceInit(void) +static void +qemu_domain_chr_source_private_init(qemuDomainChrSourcePrivate *priv G_GNU= C_UNUSED) { - if (!VIR_CLASS_NEW(qemuDomainChrSourcePrivate, virClassForObject())) - return -1; - - return 0; } =20 -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 =3D G_OBJECT_CLASS(klass); =20 - if (!(priv =3D virObjectNew(qemuDomainChrSourcePrivateClass))) - return NULL; + obj->finalize =3D qemuDomainChrSourcePrivateFinalize; +} =20 - return (virObjectPtr) priv; +static GObject * +qemuDomainChrSourcePrivateNew(void) +{ + return g_object_new(QEMU_TYPE_DOMAIN_CHR_SOURCE_PRIVATE, NULL); } =20 =20 static void -qemuDomainChrSourcePrivateDispose(void *obj) +qemuDomainChrSourcePrivateFinalize(GObject *obj) { - qemuDomainChrSourcePrivatePtr priv =3D obj; + qemuDomainChrSourcePrivatePtr priv =3D QEMU_DOMAIN_CHR_SOURCE(obj); =20 g_clear_pointer(&priv->secinfo, qemuDomainSecretInfoFree); + + G_OBJECT_CLASS(qemu_domain_chr_source_private_parent_class)->finalize(= obj); } =20 =20 -static virClassPtr qemuDomainVsockPrivateClass; -static void qemuDomainVsockPrivateDispose(void *obj); +G_DEFINE_TYPE(qemuDomainVsockPrivate, qemu_domain_vsock_private, G_TYPE_OB= JECT); +static void qemuDomainVsockPrivateFinalize(GObject *obj); =20 -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 =3D -1; } =20 -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 =3D virObjectNew(qemuDomainVsockPrivateClass))) - return NULL; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - priv->vhostfd =3D -1; + obj->finalize =3D qemuDomainVsockPrivateFinalize; +} =20 - return (virObjectPtr) priv; +static GObject * +qemuDomainVsockPrivateNew(void) +{ + return g_object_new(QEMU_TYPE_DOMAIN_VSOCK_PRIVATE, NULL); } =20 =20 static void -qemuDomainVsockPrivateDispose(void *obj G_GNUC_UNUSED) +qemuDomainVsockPrivateFinalize(GObject *obj) { - qemuDomainVsockPrivatePtr priv =3D obj; + qemuDomainVsockPrivatePtr priv =3D QEMU_DOMAIN_VSOCK(obj); =20 VIR_FORCE_CLOSE(priv->vhostfd); + + G_OBJECT_CLASS(qemu_domain_vsock_private_parent_class)->finalize(obj); } =20 =20 -static virClassPtr qemuDomainGraphicsPrivateClass; -static void qemuDomainGraphicsPrivateDispose(void *obj); +G_DEFINE_TYPE(qemuDomainGraphicsPrivate, qemu_domain_graphics_private, G_T= YPE_OBJECT); +static void qemuDomainGraphicsPrivateFinalize(GObject *obj); =20 -static int -qemuDomainGraphicsPrivateOnceInit(void) +static void +qemu_domain_graphics_private_init(qemuDomainGraphicsPrivate *priv G_GNUC_U= NUSED) { - if (!VIR_CLASS_NEW(qemuDomainGraphicsPrivate, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainGraphicsPrivate); - -static virObjectPtr -qemuDomainGraphicsPrivateNew(void) +static void +qemu_domain_graphics_private_class_init(qemuDomainGraphicsPrivateClass *kl= ass) { - qemuDomainGraphicsPrivatePtr priv; - - if (qemuDomainGraphicsPrivateInitialize() < 0) - return NULL; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - if (!(priv =3D virObjectNew(qemuDomainGraphicsPrivateClass))) - return NULL; + obj->finalize =3D qemuDomainGraphicsPrivateFinalize; +} =20 - return (virObjectPtr) priv; +static GObject * +qemuDomainGraphicsPrivateNew(void) +{ + return g_object_new(QEMU_TYPE_DOMAIN_GRAPHICS_PRIVATE, NULL); } =20 =20 static void -qemuDomainGraphicsPrivateDispose(void *obj) +qemuDomainGraphicsPrivateFinalize(GObject *obj) { - qemuDomainGraphicsPrivatePtr priv =3D obj; + qemuDomainGraphicsPrivatePtr priv =3D QEMU_DOMAIN_GRAPHICS(obj); =20 VIR_FREE(priv->tlsAlias); g_clear_pointer(&priv->secinfo, qemuDomainSecretInfoFree); -} =20 + G_OBJECT_CLASS(qemu_domain_graphics_private_parent_class)->finalize(ob= j); +} =20 -static virClassPtr qemuDomainNetworkPrivateClass; -static void qemuDomainNetworkPrivateDispose(void *obj); =20 +G_DEFINE_TYPE(qemuDomainNetworkPrivate, qemu_domain_network_private, G_TYP= E_OBJECT); +static void qemuDomainNetworkPrivateFinalize(GObject *obj); =20 -static int -qemuDomainNetworkPrivateOnceInit(void) +static void +qemu_domain_network_private_init(qemuDomainNetworkPrivate *priv G_GNUC_UNU= SED) { - if (!VIR_CLASS_NEW(qemuDomainNetworkPrivate, virClassForObject())) - return -1; - - return 0; } =20 +static void +qemu_domain_network_private_class_init(qemuDomainNetworkPrivateClass *klas= s) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainNetworkPrivate); + obj->finalize =3D qemuDomainNetworkPrivateFinalize; +} =20 =20 -static virObjectPtr +static GObject * qemuDomainNetworkPrivateNew(void) { - qemuDomainNetworkPrivatePtr priv; - - if (qemuDomainNetworkPrivateInitialize() < 0) - return NULL; - - if (!(priv =3D virObjectNew(qemuDomainNetworkPrivateClass))) - return NULL; - - return (virObjectPtr) priv; + return g_object_new(QEMU_TYPE_DOMAIN_NETWORK_PRIVATE, NULL); } =20 =20 static void -qemuDomainNetworkPrivateDispose(void *obj G_GNUC_UNUSED) +qemuDomainNetworkPrivateFinalize(GObject *obj) { - qemuDomainNetworkPrivatePtr priv =3D obj; + qemuDomainNetworkPrivatePtr priv =3D QEMU_DOMAIN_NETWORK(obj); =20 qemuSlirpFree(priv->slirp); -} =20 + G_OBJECT_CLASS(qemu_domain_network_private_parent_class)->finalize(obj= ); +} =20 -static virClassPtr qemuDomainFSPrivateClass; -static void qemuDomainFSPrivateDispose(void *obj); =20 +G_DEFINE_TYPE(qemuDomainFSPrivate, qemu_domain_fs_private, G_TYPE_OBJECT); +static void qemuDomainFSPrivateFinalize(GObject *obj); =20 -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; } =20 +static void +qemu_domain_fs_private_class_init(qemuDomainFSPrivateClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainFSPrivate); - + obj->finalize =3D qemuDomainFSPrivateFinalize; +} =20 -static virObjectPtr +static GObject * qemuDomainFSPrivateNew(void) { - qemuDomainFSPrivatePtr priv; - - if (qemuDomainFSPrivateInitialize() < 0) - return NULL; - - if (!(priv =3D virObjectNew(qemuDomainFSPrivateClass))) - return NULL; - - return (virObjectPtr) priv; + return g_object_new(QEMU_TYPE_DOMAIN_FS_PRIVATE, NULL); } =20 =20 static void -qemuDomainFSPrivateDispose(void *obj) +qemuDomainFSPrivateFinalize(GObject *obj) { - qemuDomainFSPrivatePtr priv =3D obj; + qemuDomainFSPrivatePtr priv =3D QEMU_DOMAIN_FS(obj); =20 g_free(priv->vhostuser_fs_sock); + + G_OBJECT_CLASS(qemu_domain_fs_private_parent_class)->finalize(obj); } =20 -static virClassPtr qemuDomainVideoPrivateClass; -static void qemuDomainVideoPrivateDispose(void *obj); +G_DEFINE_TYPE(qemuDomainVideoPrivate, qemu_domain_video_private, G_TYPE_OB= JECT); +static void qemuDomainVideoPrivateFinalize(GObject *obj); =20 +static void +qemu_domain_video_private_init(qemuDomainVideoPrivate *priv) +{ + priv->vhost_user_fd =3D -1; +} =20 -static int -qemuDomainVideoPrivateOnceInit(void) +static void +qemu_domain_video_private_class_init(qemuDomainVideoPrivateClass *klass) { - if (!VIR_CLASS_NEW(qemuDomainVideoPrivate, virClassForObject())) - return -1; + GObjectClass *obj =3D G_OBJECT_CLASS(klass); =20 - return 0; + obj->finalize =3D qemuDomainVideoPrivateFinalize; } =20 -VIR_ONCE_GLOBAL_INIT(qemuDomainVideoPrivate); =20 - -static virObjectPtr +static GObject * qemuDomainVideoPrivateNew(void) { - qemuDomainVideoPrivatePtr priv; - - if (qemuDomainVideoPrivateInitialize() < 0) - return NULL; - - if (!(priv =3D virObjectNew(qemuDomainVideoPrivateClass))) - return NULL; - - priv->vhost_user_fd =3D -1; - - return (virObjectPtr) priv; + return g_object_new(QEMU_TYPE_DOMAIN_VIDEO_PRIVATE, NULL); } =20 =20 static void -qemuDomainVideoPrivateDispose(void *obj) +qemuDomainVideoPrivateFinalize(GObject *obj) { - qemuDomainVideoPrivatePtr priv =3D obj; + qemuDomainVideoPrivatePtr priv =3D QEMU_DOMAIN_VIDEO(obj); =20 VIR_FORCE_CLOSE(priv->vhost_user_fd); + + G_OBJECT_CLASS(qemu_domain_video_private_parent_class)->finalize(obj); } =20 =20 diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 41d3f1561d..286a422338 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -443,13 +443,8 @@ struct _qemuDomainObjPrivate { #define QEMU_DOMAIN_PRIVATE(vm) \ ((qemuDomainObjPrivatePtr) (vm)->privateData) =20 -#define QEMU_DOMAIN_DISK_PRIVATE(disk) \ - ((qemuDomainDiskPrivatePtr) (disk)->privateData) - -typedef struct _qemuDomainDiskPrivate qemuDomainDiskPrivate; -typedef qemuDomainDiskPrivate *qemuDomainDiskPrivatePtr; struct _qemuDomainDiskPrivate { - virObject parent; + GObject parent; =20 /* ideally we want a smarter way to interlock block jobs on single qem= u disk * in the future, but for now we just disallow any concurrent job on a @@ -467,13 +462,20 @@ struct _qemuDomainDiskPrivate { char *nodeCopyOnRead; /* nodename of the disk-wide copy-on-read blockd= ev layer */ }; =20 -#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) + =20 -typedef struct _qemuDomainStorageSourcePrivate qemuDomainStorageSourcePriv= ate; -typedef qemuDomainStorageSourcePrivate *qemuDomainStorageSourcePrivatePtr; struct _qemuDomainStorageSourcePrivate { - virObject parent; + GObject parent; =20 /* data required for authentication to the storage source */ qemuDomainSecretInfoPtr secinfo; @@ -485,12 +487,23 @@ struct _qemuDomainStorageSourcePrivate { qemuDomainSecretInfoPtr httpcookie; }; =20 -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); + =20 -typedef struct _qemuDomainVcpuPrivate qemuDomainVcpuPrivate; -typedef qemuDomainVcpuPrivate *qemuDomainVcpuPrivatePtr; struct _qemuDomainVcpuPrivate { - virObject parent; + GObject parent; =20 pid_t tid; /* vcpu thread id */ int enable_id; /* order in which the vcpus were enabled in qemu */ @@ -510,6 +523,14 @@ struct _qemuDomainVcpuPrivate { int vcpus; }; =20 +#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) =20 @@ -523,77 +544,113 @@ struct qemuDomainDiskInfo { char *nodename; }; =20 -#define QEMU_DOMAIN_CHR_SOURCE_PRIVATE(dev) \ - ((qemuDomainChrSourcePrivatePtr) (dev)->privateData) - -typedef struct _qemuDomainChrSourcePrivate qemuDomainChrSourcePrivate; -typedef qemuDomainChrSourcePrivate *qemuDomainChrSourcePrivatePtr; struct _qemuDomainChrSourcePrivate { - virObject parent; + GObject parent; =20 /* for char devices using secret * NB: *not* to be written to qemu domain object XML */ qemuDomainSecretInfoPtr secinfo; }; =20 +#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) + =20 -typedef struct _qemuDomainVsockPrivate qemuDomainVsockPrivate; -typedef qemuDomainVsockPrivate *qemuDomainVsockPrivatePtr; struct _qemuDomainVsockPrivate { - virObject parent; + GObject parent; =20 int vhostfd; }; =20 +#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; =20 -#define QEMU_DOMAIN_VIDEO_PRIVATE(dev) \ - ((qemuDomainVideoPrivatePtr) (dev)->privateData) =20 -typedef struct _qemuDomainVideoPrivate qemuDomainVideoPrivate; -typedef qemuDomainVideoPrivate *qemuDomainVideoPrivatePtr; struct _qemuDomainVideoPrivate { - virObject parent; + GObject parent; =20 int vhost_user_fd; }; =20 +#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) =20 -#define QEMU_DOMAIN_GRAPHICS_PRIVATE(dev) \ - ((qemuDomainGraphicsPrivatePtr) (dev)->privateData) =20 -typedef struct _qemuDomainGraphicsPrivate qemuDomainGraphicsPrivate; -typedef qemuDomainGraphicsPrivate *qemuDomainGraphicsPrivatePtr; struct _qemuDomainGraphicsPrivate { - virObject parent; + GObject parent; =20 char *tlsAlias; qemuDomainSecretInfoPtr secinfo; }; =20 +#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) =20 -#define QEMU_DOMAIN_NETWORK_PRIVATE(dev) \ - ((qemuDomainNetworkPrivatePtr) (dev)->privateData) =20 -typedef struct _qemuDomainNetworkPrivate qemuDomainNetworkPrivate; -typedef qemuDomainNetworkPrivate *qemuDomainNetworkPrivatePtr; struct _qemuDomainNetworkPrivate { - virObject parent; + GObject parent; =20 qemuSlirpPtr slirp; }; =20 +#define QEMU_TYPE_DOMAIN_NETWORK_PRIVATE qemu_domain_network_private_get_t= ype() +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) =20 -#define QEMU_DOMAIN_FS_PRIVATE(dev) \ - ((qemuDomainFSPrivatePtr) (dev)->privateData) =20 -typedef struct _qemuDomainFSPrivate qemuDomainFSPrivate; -typedef qemuDomainFSPrivate *qemuDomainFSPrivatePtr; struct _qemuDomainFSPrivate { - virObject parent; + GObject parent; =20 char *vhostuser_fs_sock; }; =20 +#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) + =20 typedef enum { QEMU_PROCESS_EVENT_WATCHDOG =3D 0, diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index 535a94e239..173a6a75f3 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -2685,7 +2685,7 @@ virStorageSourceClear(virStorageSourcePtr def) =20 virStorageNetHostDefFree(def->nhosts, def->hosts); virStorageAuthDefFree(def->auth); - virObjectUnref(def->privateData); + g_clear_object(&def->privateData); =20 VIR_FREE(def->nodestorage); VIR_FREE(def->nodeformat); diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h index c68bdc9680..58e8e1d8cf 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 =20 /* Minimum header size required to probe all known formats with * virStorageFileProbeFormat, or obtain metadata from a known format. @@ -302,7 +303,7 @@ struct _virStorageSource { =20 virStorageSourceInitiatorDef initiator; =20 - virObjectPtr privateData; + GObject *privateData; =20 int format; /* virStorageFileFormat in domain backing chains, but * pool-specific enum for storage volumes */ --=20 2.26.2