On Wed, Apr 06, 2011 at 03:30:50PM -0600, Eric Blake wrote: > On 04/06/2011 01:18 AM, Hu Tao wrote: > > This series adds a virObject structure that manages reference-counting. > > > > Some notes about referece-counting introduced by this series: > > > > A thread owns a virObject by incrementing its reference-count by 1. > > If a thread owns a virObject, the virObject is guarenteed not be > > freed until the thread releases ownership by decrementing its > > reference-count by 1. A thread can't access a virObject after it > > releases the ownership of virObject because it can be freed at > > anytime. > > > > A thread can own a virObject legally in these ways: > > > > - a thread owns a virObject that it creates. > > - a thread owns a virObject if another thread passes the ownership > > to it. Example: qemuMonitorOpen > > - a thread gets a virObject from a container. > > Example: virDomainFindByUUID > > - a container owns a virObject by incrementing its reference-count > > by 1 before adding it to the container > > - if a virObject is removed from a container its reference-count > > must be decremented by 1 > > > > By following these rules, there is no need to protect operations on > > an object's reference-count by an external lock. (like in old ways > > virDomainObj lock protects qemu monitor's ref-count.) > > These rules _need_ to be part of the patch series, preferably added at > the same time as patch 1/6 (see for example how src/qemu/THREADS.txt > documents threading issues related to qemu). I don't know whether > virobject.h or a standalone document is better (but if you do a > standalone document, then virobject.h should at least mention it). OK. Will put it in virobject.h in next version. > > -- > Eric Blake eblake@xxxxxxxxxx +1-801-349-2682 > Libvirt virtualization library http://libvirt.org > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list