]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Introduce annotations for virQEMUDriverPtr fields
authorDaniel P. Berrange <berrange@redhat.com>
Wed, 16 Jan 2013 13:24:55 +0000 (13:24 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 5 Feb 2013 19:22:26 +0000 (19:22 +0000)
Annotate the fields in virQEMUDriverPtr to indicate the locking
rules for their use

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
src/qemu/qemu_conf.h

index 4bf1be0405c14709a67299c6449f5a2c2a863a06..0000b53d96e57cb8859246c2569416b17d5564a7 100644 (file)
@@ -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;
 };