在 2012年4月5日 下午6:38,Daniel P. Berrange <berrange(a)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.