On Thu, Apr 05, 2012 at 06:06:43PM +0800, Zhihua Che wrote: > Hi, everyone > > I'm writing application using libvirt and I need call > virDomainGetCPUStats to get domain cpu stats . I learn from API > reference that this function has to be called when domain is running. > So my question is if there is an atomic way to test the domain's state > and get its stats? > > Or, it's ok to call this function when domain is not active, but > caller just gets error returned. > > In my code, I just call it directly and return error. I wonder if > this programming practice has subtle problem like race condition. For a function which is only callable when the domain is running, libvirt will return a special error code VIR_ERR_OPERATION_INVALID if you invoke it when the domain is shutoff. Thus the race-free way to deal with this scenario is to just call the API, and check for VIR_ERR_OPERATION_INVALID. Any other error code is an indication of a "real" error situaton. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|