[PATCH v3 12/13] Introduce annotations for virQEMUDriverPtr fields

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: "Daniel P. Berrange" <berrange@xxxxxxxxxx>

Annotate the fields in virQEMUDriverPtr to indicate the locking
rules for their use

Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx>
---
 src/qemu/qemu_conf.h | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
index 4bf1be0..a224ab1 100644
--- a/src/qemu/qemu_conf.h
+++ b/src/qemu/qemu_conf.h
@@ -154,45 +154,67 @@ struct _virQEMUDriverConfig {
 struct _virQEMUDriver {
     virMutex lock;
 
+    /* Require lock to get reference on 'config',
+     * then lockless thereafter */
     virQEMUDriverConfigPtr config;
 
+    /* Immutable pointer, self-locking APIs */
     virThreadPoolPtr workerPool;
 
+    /* Atomic increment only */
     int nextvmid;
 
+    /* Immutable pointer. Unsafe APIs XXX */
     virCgroupPtr cgroup;
 
+    /* Atomic inc/dec only */
     size_t nactive;
 
+    /* Immutable pointers. Caller must provide locking */
     virStateInhibitCallback inhibitCallback;
     void *inhibitOpaque;
 
+    /* Immutable pointer, self-locking APIs */
     virDomainObjListPtr domains;
 
+    /* Lazy-load on first use. Unsafe. XXX */
     char *qemuImgBinary;
 
+    /* Immutable pointer, lockless APIs. Pointless abstraction */
     ebtablesContext *ebtables;
 
+    /* Require lock while using. Unsafe. XXX */
     virCapsPtr caps;
 
+    /* Immutable pointer, self-locking APIs */
     qemuCapsCachePtr capsCache;
 
+    /* Immutable pointer, self-locking APIs */
     virDomainEventStatePtr domainEventState;
 
+    /* Immutable pointer. Unsafe APIs. XXX */
     virSecurityManagerPtr securityManager;
 
+    /* Immutable pointers. Requires locks to be held before
+     * calling APIs. activePciHostdevs must be locked before
+     * inactivePciHostdevs */
     virPCIDeviceListPtr activePciHostdevs;
     virPCIDeviceListPtr inactivePciHostdevs;
     virUSBDeviceListPtr activeUsbHostdevs;
 
+    /* Immutable pointer. Unsafe APIs. XXX */
     virHashTablePtr sharedDisks;
 
+    /* Immutable pointer, self-locking APis */
     virPortAllocatorPtr remotePorts;
 
+    /* Immutable pointer, lockless APIs*/
     virSysinfoDefPtr hostsysinfo;
 
+    /* Immutable pointer. XXX check safety */
     virLockManagerPluginPtr lockManager;
 
+    /* Immutable pointer. Unsafe APIs. XXX */
     virHashTablePtr closeCallbacks;
 };
 
-- 
1.8.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]