Re: [libvirt] [PATCH v2 07/23] src: add support for g_autoptr with virObject instances

2019-10-08 Thread Ján Tomko

On Mon, Oct 07, 2019 at 06:14:09PM +0100, Daniel P. Berrangé wrote:

Libvirt currently uses the VIR_AUTOUNREF macro for auto cleanup of
virObject instances. GLib approaches things differently with GObject,
reusing their g_autoptr() concept.

This introduces support for g_autoptr() with virObject, to facilitate
the conversion to GObject.

Only virObject classes which are currently used with VIR_AUTOREF are
updated. Any others should be converted to GObject before introducing
use of autocleanup.

Signed-off-by: Daniel P. Berrangé 
---
docs/hacking.html.in|  5 +
src/conf/capabilities.h |  3 +++
src/conf/domain_capabilities.h  |  3 +++
src/conf/domain_conf.h  |  3 +++
src/conf/snapshot_conf.h|  3 +++
src/conf/storage_capabilities.h |  3 +++
src/datatypes.h | 15 +++
src/libxl/libxl_conf.h  |  2 ++
src/qemu/qemu_blockjob.h|  1 +
src/qemu/qemu_capabilities.h|  2 ++
src/qemu/qemu_conf.h|  3 +++
src/util/virhostdev.h   |  3 +++
src/util/viridentity.h  |  2 ++
src/util/virmdev.h  |  3 +++
src/util/virobject.h|  4 
src/util/virpci.h   |  3 +++
src/util/virresctrl.h   |  4 
src/util/virscsi.h  |  3 +++
src/util/virscsivhost.h |  3 +++
src/util/virstoragefile.h   |  2 ++
src/util/virusb.h   |  3 +++
21 files changed, 73 insertions(+)



Reviewed-by: Ján Tomko 

Jano


signature.asc
Description: PGP signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

[libvirt] [PATCH v2 07/23] src: add support for g_autoptr with virObject instances

2019-10-07 Thread Daniel P . Berrangé
Libvirt currently uses the VIR_AUTOUNREF macro for auto cleanup of
virObject instances. GLib approaches things differently with GObject,
reusing their g_autoptr() concept.

This introduces support for g_autoptr() with virObject, to facilitate
the conversion to GObject.

Only virObject classes which are currently used with VIR_AUTOREF are
updated. Any others should be converted to GObject before introducing
use of autocleanup.

Signed-off-by: Daniel P. Berrangé 
---
 docs/hacking.html.in|  5 +
 src/conf/capabilities.h |  3 +++
 src/conf/domain_capabilities.h  |  3 +++
 src/conf/domain_conf.h  |  3 +++
 src/conf/snapshot_conf.h|  3 +++
 src/conf/storage_capabilities.h |  3 +++
 src/datatypes.h | 15 +++
 src/libxl/libxl_conf.h  |  2 ++
 src/qemu/qemu_blockjob.h|  1 +
 src/qemu/qemu_capabilities.h|  2 ++
 src/qemu/qemu_conf.h|  3 +++
 src/util/virhostdev.h   |  3 +++
 src/util/viridentity.h  |  2 ++
 src/util/virmdev.h  |  3 +++
 src/util/virobject.h|  4 
 src/util/virpci.h   |  3 +++
 src/util/virresctrl.h   |  4 
 src/util/virscsi.h  |  3 +++
 src/util/virscsivhost.h |  3 +++
 src/util/virstoragefile.h   |  2 ++
 src/util/virusb.h   |  3 +++
 21 files changed, 73 insertions(+)

diff --git a/docs/hacking.html.in b/docs/hacking.html.in
index 40a3c60573..0d04270699 100644
--- a/docs/hacking.html.in
+++ b/docs/hacking.html.in
@@ -1046,6 +1046,11 @@ BAD:
 g_autoptr, g_auto on an object whose cleanup function
 is declared with the libvirt macros and vica-verca.
   
+
+  VIR_AUTOUNREF
+  The GLib macros g_autoptr and G_DEFINE_AUTOPTR_CLEANUP_FUNC
+should be used to manage autoclean of virObject classes.
+This matches usage with GObject classes.
 
 
 File handling
diff --git a/src/conf/capabilities.h b/src/conf/capabilities.h
index d6a4e79d77..4abd3dcabd 100644
--- a/src/conf/capabilities.h
+++ b/src/conf/capabilities.h
@@ -195,6 +195,9 @@ struct _virCaps {
 virCapsStoragePoolPtr *pools;
 };
 
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virCaps, virObjectUnref);
+
+
 struct _virCapsDomainData {
 int ostype;
 int arch;
diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h
index 4756af38e9..f5571b2188 100644
--- a/src/conf/domain_capabilities.h
+++ b/src/conf/domain_capabilities.h
@@ -185,6 +185,9 @@ struct _virDomainCaps {
 /* add new domain features here */
 };
 
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainCaps, virObjectUnref);
+
+
 virDomainCapsPtr virDomainCapsNew(const char *path,
   const char *machine,
   virArch arch,
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 2884af49d8..db4de1a7f5 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2592,6 +2592,9 @@ struct _virDomainObj {
   * restore will be required later */
 };
 
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainObj, virObjectUnref);
+
+
 typedef bool (*virDomainObjListACLFilter)(virConnectPtr conn,
   virDomainDefPtr def);
 
diff --git a/src/conf/snapshot_conf.h b/src/conf/snapshot_conf.h
index 17d614a7e1..7e2ffa9d60 100644
--- a/src/conf/snapshot_conf.h
+++ b/src/conf/snapshot_conf.h
@@ -87,6 +87,9 @@ struct _virDomainSnapshotDef {
 virObjectPtr cookie;
 };
 
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainSnapshotDef, virObjectUnref);
+
+
 typedef enum {
 VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE = 1 << 0,
 VIR_DOMAIN_SNAPSHOT_PARSE_DISKS= 1 << 1,
diff --git a/src/conf/storage_capabilities.h b/src/conf/storage_capabilities.h
index 948e5bed5b..788ea227ea 100644
--- a/src/conf/storage_capabilities.h
+++ b/src/conf/storage_capabilities.h
@@ -30,6 +30,9 @@ struct _virStoragePoolCaps {
 virCapsPtr driverCaps;
 };
 
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virStoragePoolCaps, virObjectUnref);
+
+
 virStoragePoolCapsPtr
 virStoragePoolCapsNew(virCapsPtr driverCaps);
 
diff --git a/src/datatypes.h b/src/datatypes.h
index 87e77fff79..16ab5b7282 100644
--- a/src/datatypes.h
+++ b/src/datatypes.h
@@ -548,6 +548,9 @@ struct _virConnect {
 void *userData; /* the user data */
 };
 
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virConnect, virObjectUnref);
+
+
 /**
  * _virAdmConnect:
  *
@@ -616,6 +619,9 @@ struct _virNetwork {
 unsigned char uuid[VIR_UUID_BUFLEN]; /* the network unique identifier */
 };
 
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virNetwork, virObjectUnref);
+
+
 /**
 * _virNetworkPort:
 *
@@ -627,6 +633,9 @@ struct _virNetworkPort {
 unsigned char uuid[VIR_UUID_BUFLEN]; /* the network unique identifier */
 };
 
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virNetworkPort, virObjectUnref);
+
+
 /**
 * _virInterface:
 *
@@ -658,6 +667,9 @@ struct _virStoragePool {
 virFreeCallback privateDataFreeFunc;
 };