
在 2012年4月5日 下午6:38,Daniel P. Berrange <berrange@redhat.com> 写道:
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 --
I guess I got it.