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