[libvirt] [PATCH 3/8] latency: Implemente the public API
Daniel Veillard
veillard at redhat.com
Tue Sep 6 03:31:20 UTC 2011
On Mon, Sep 05, 2011 at 04:38:30PM +0800, Osier Yang wrote:
> ---
> src/libvirt.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 71 insertions(+), 0 deletions(-)
>
> diff --git a/src/libvirt.c b/src/libvirt.c
> index 4d80e2f..a921e4d 100644
> --- a/src/libvirt.c
> +++ b/src/libvirt.c
> @@ -6442,6 +6442,77 @@ error:
> }
>
> /**
> + * virDomainBlockStatsFlags:
> + * @dom: pointer to domain object
> + * @path: path to the block device
> + * @params: pointer to block stats parameter object
objects (plural)
> + * (return value)
> + * @nparams: pointer to number of block stats
need to describe the behaviour of allocation, i.e. who allocate,
and what happens if the caller doesn't allocate enough parameters
> + * @flags: unused, always passes 0
> + *
> + * This function is to get block stats parameters for block
> + * devices attached to the domain.
> + *
> + * The @path is the name of the block device. Get this
> + * by calling virDomainGetXMLDesc and finding the <target dev='...'>
> + * attribute within //domain/devices/disk. (For example, "xvda").
> + *
> + * Domains may have more than one block device. To get stats for
> + * each you should make multiple calls to this function.
> + *
> + * The @params array will be filled with the value equal to the number of
> + * parameters suggested by @nparams.
still unclear if it is too much or too many
> + * As the value of @nparams is dynamic, call the API setting @nparams to 0 and
> + * @params as NULL, the API returns the number of parameters supported by the
> + * HV by updating @nparams on SUCCESS. (Note that block device of different type
> + * might support different parameters numbers, so it might be necessary to compute
> + * @nparams for each block device type). The caller should then allocate @params
> + * array, i.e. (sizeof(@virTypedParameter) * @nparams) bytes and call the API
> + * again. See virDomainGetMemoryParameters for more details.
tend to disagree, we should document the behaviour here, not reference
another function docuemntation, copy as needed
> + * Returns -1 in case of error, 0 in case of success.
> + */
> +int virDomainBlockStatsFlags (virDomainPtr dom,
> + const char *path,
> + virTypedParameterPtr params,
> + int *nparams,
> + unsigned int flags)
> +{
> + virConnectPtr conn;
> +
> + VIR_DOMAIN_DEBUG(dom, "path=%s, params=%p, nparams=%d, flags=%x",
> + path, params, nparams ? *nparams : -1, flags);
> +
> + virResetLastError();
> +
> + if (!VIR_IS_CONNECTED_DOMAIN (dom)) {
> + virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
> + virDispatchError(NULL);
> + return -1;
> + }
> + if (!path || (nparams == NULL) || (*nparams < 0)) {
okay we accept param == NULL here,
> + virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
> + goto error;
> + }
> + conn = dom->conn;
> +
> + if (conn->driver->domainBlockStatsFlags) {
> + int ret;
> + ret = conn->driver->domainBlockStatsFlags(dom, path, params, nparams, flags);
> + if (ret < 0)
> + goto error;
> + return ret;
> + }
> + virLibConnError(VIR_ERR_NO_SUPPORT, __FUNCTION__);
> +
> +error:
> + virDispatchError(dom->conn);
> + return -1;
> +}
> +
> +
> +/**
> * virDomainInterfaceStats:
> * @dom: pointer to the domain object
> * @path: path to the interface
ACK,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list