From nobody Fri Dec 19 21:49:39 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.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 207.211.31.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=1587477089; cv=none; d=zohomail.com; s=zohoarc; b=EmDHduRiYc9krRXHRExEbOfBROoB2UIWXfNNSLFuRDZxWv9q7MgxpnfphvYMabKJQUGiMVOFL6Apdwv8473YE19RjjNolwaIdXXc6h0G3zf1MAUGhX9ZqNzt0AhrpXv36E473flpolA7ppv2DKIHp2c/IzH9aRX/CiyRPAarJeo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477089; 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=Ysrvco0UEK4jMY9LG+5mmtxX9Azu5/8mYWKYELKhqZs=; b=hB1nupo/7/gIO4EQb5zMF7LUdEMZymU7BeF6YqvpBxp2ZI+LY+z/H0q2HHgbAg7nnlgr1BVOYcyMPgy+v9OnxZ3Q3suKbwtUQ8eEl/SeZwJiUtA5v3/CIXKk6qddAt0Nh8KeSRlo14rjK/xpKT/Ny807utofusW78it3o341+GE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.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 [207.211.31.120]) by mx.zohomail.com with SMTPS id 1587477089030686.8018761540112; Tue, 21 Apr 2020 06:51:29 -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-283-1RlFoVupNo6u86kJfO3Ojw-1; Tue, 21 Apr 2020 09:51:24 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 195FB1B2C985; Tue, 21 Apr 2020 13:51:19 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id ADF5EB3A72; Tue, 21 Apr 2020 13:51:18 +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 5F9D0941AF; Tue, 21 Apr 2020 13:51:18 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 03LDp57A003706 for ; Tue, 21 Apr 2020 09:51:05 -0400 Received: by smtp.corp.redhat.com (Postfix) id 3BECD11921A5; Tue, 21 Apr 2020 13:51:05 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 367EF11921A3 for ; Tue, 21 Apr 2020 13:51:00 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (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 527BA185A791 for ; Tue, 21 Apr 2020 13:51:00 +0000 (UTC) Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-257-d0WNYclmPmWimCIiUz-tUw-1; Tue, 21 Apr 2020 09:50:56 -0400 Received: by mail-wm1-f67.google.com with SMTP id u127so3779455wmg.1 for ; Tue, 21 Apr 2020 06:50:56 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477086; 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=Ysrvco0UEK4jMY9LG+5mmtxX9Azu5/8mYWKYELKhqZs=; b=Ik/WG+4PaMVnhqOKmk3QLyVIZSHr/iNmIRZlqvaqyer/ggi26ed3Zi5cSddodtsqKilcHO gP0NLuBZAZmYdD9mylYVFzGVd3jpXFerQlBEl0SDLVqpogYbjWR4nUX/p6d5KXR6qzm0SE 0TDK6YEeAy0VM39Qbp3qmEmBq2FRjsA= X-MC-Unique: 1RlFoVupNo6u86kJfO3Ojw-1 X-MC-Unique: d0WNYclmPmWimCIiUz-tUw-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=BeXLDWk+5NF2NPDn68BYuKtvcRxZSj5MdGzWz0mpctc=; b=n6sxD3kvffFvzhDJAbe1YQDeaVhrXZK2kDwfhItaYXrfMwqUkePz+g5/q9AjP7XDMw 1wlc7SJl6GR1Tg/E9BCG0Pgzf5bGijZw6LReTqefOqG3U6PxSRXF2eUcMZI0YfutI1fp t9TygpWEcBNsDZG9sV5Ho5MUVdEZKFW9YqkyjsYRCw1b8XUJ9fnXAvqX7SMIxfm2uGIs Jgj2nA3AY5V58/Bpz7KBl+gn1vuA68LxtGNbn0GCEkc/7Jlm+X0nuXw4NrdJkKrrX+XF Y0wT+jO2Y2QEvf94U6wK4Ln8KzPtANsoWFRDBd7WWteUwB2HEDkqba0U7h64dvzbeNh8 4Hhg== X-Gm-Message-State: AGi0Puap5LziALG3MV7crASLfEMmSV893vY8cLV4FbXN7ERFMpbYV4Fn sv9Zt2Xboi2Z3an3Y6vBTXYTjqlOK04= X-Google-Smtp-Source: APiQypJNFpuo0CIq1/NM++KbeR0bJPjFNZoCKq0RdUpmn4KGRG0MNV/cpBt09+kV7ncOVB6j/3GYqw== X-Received: by 2002:a1c:66d5:: with SMTP id a204mr5042066wmc.69.1587477054617; Tue, 21 Apr 2020 06:50:54 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 38/40] conf: convert virDomain*Private to GObject Date: Tue, 21 Apr 2020 15:49:19 +0200 Message-Id: <20200421134921.3717019-39-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDp57A003706 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.79 on 10.5.11.15 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 | 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); =20 - virObjectUnref(def->privateData); + g_clear_object(&def->privateData); VIR_FREE(def); } =20 @@ -1833,7 +1833,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())) @@ -1856,7 +1856,7 @@ virDomainVcpuDefFree(virDomainVcpuDefPtr info) =20 virBitmapFree(info->cpumask); info->cpumask =3D NULL; - virObjectUnref(info->privateData); + g_clear_object(&info->privateData); VIR_FREE(info); } =20 @@ -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); =20 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); =20 VIR_FREE(def); @@ -2422,7 +2422,7 @@ virDomainVsockDefFree(virDomainVsockDefPtr vsock) if (!vsock) return; =20 - 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); } =20 @@ -2651,8 +2651,7 @@ virDomainChrSourceDefDispose(GObject *obj) { virDomainChrSourceDefPtr def =3D VIR_DOMAIN_CHR_SOURCE_DEF(obj); =20 - virObjectUnref(def->privateData); - def->privateData =3D NULL; + g_clear_object(&def->privateData); =20 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); =20 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?= */ =20 - virObjectPtr privateData; + GObject *privateData; =20 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; }; =20 =20 @@ -1071,7 +1071,7 @@ struct _virDomainNetDef { unsigned int mtu; virNetDevCoalescePtr coalesce; virDomainVirtioOptionsPtr virtio; - virObjectPtr privateData; + GObject *privateData; }; =20 typedef enum { @@ -1190,7 +1190,7 @@ struct _virDomainChrSourceReconnectDef { struct _virDomainChrSourceDef { GObject parent; int type; /* virDomainChrType */ - virObjectPtr privateData; + GObject *privateData; union { /* no for null, vc, stdio */ struct { @@ -1493,7 +1493,7 @@ struct _virDomainVideoDriverDef { }; =20 struct _virDomainVideoDef { - virObjectPtr privateData; + GObject *privateData; =20 int type; /* enum virDomainVideoType */ unsigned int ram; /* kibibytes (multiples of 1024) */ @@ -1640,7 +1640,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. @@ -2318,7 +2318,7 @@ struct _virDomainVcpuDef { =20 virDomainThreadSchedParam sched; =20 - virObjectPtr privateData; + GObject *privateData; }; =20 struct _virDomainBlkiotune { @@ -2416,7 +2416,7 @@ typedef enum { } virDomainVsockModel; =20 struct _virDomainVsockDef { - virObjectPtr privateData; + GObject *privateData; =20 virDomainVsockModel model; unsigned int guest_cid; @@ -2774,7 +2774,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 99478890b6..7f6ac10659 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1130,362 +1130,329 @@ 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 qemuDomainDiskPrivateDispose(GObject *obj); +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 void +qemu_domain_disk_private_class_init(qemuDomainDiskPrivateClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->dispose =3D qemuDomainDiskPrivateDispose; + obj->finalize =3D qemuDomainDiskPrivateFinalize; +} =20 -static virObjectPtr +static GObject * qemuDomainDiskPrivateNew(void) { - qemuDomainDiskPrivatePtr priv; + return g_object_new(QEMU_TYPE_DOMAIN_DISK_PRIVATE, NULL); +} =20 - if (qemuDomainDiskPrivateInitialize() < 0) - return NULL; +static void +qemuDomainDiskPrivateDispose(GObject *obj) +{ + qemuDomainDiskPrivatePtr priv =3D QEMU_DOMAIN_DISK(obj); =20 - if (!(priv =3D virObjectNew(qemuDomainDiskPrivateClass))) - return NULL; + virObjectUnref(priv->migrSource); + priv->migrSource =3D NULL; + g_clear_object(&priv->blockjob); =20 - return (virObjectPtr) priv; + G_OBJECT_CLASS(qemu_domain_disk_private_parent_class)->dispose(obj); } =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 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) =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 @@ -457,13 +452,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; @@ -475,12 +477,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 */ @@ -500,6 +513,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 @@ -513,77 +534,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 ffc8bdb344..0f26a81391 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -2717,7 +2717,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 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 =20 /* Minimum header size required to probe all known formats with * virStorageFileProbeFormat, or obtain metadata from a known format. @@ -304,7 +305,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.25.3