On Wed, Aug 31, 2011 at 04:26:06PM +0800, Osier Yang wrote: > --- > include/libvirt/libvirt.h.in | 111 ++++++++++++++++++++++++++++++++++++++++++ > src/libvirt_public.syms | 5 ++ > 2 files changed, 116 insertions(+), 0 deletions(-) > > diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in > index 53a2f7d..5474f63 100644 > --- a/include/libvirt/libvirt.h.in > +++ b/include/libvirt/libvirt.h.in > @@ -574,6 +574,112 @@ struct _virDomainBlockStats { > */ > typedef virDomainBlockStatsStruct *virDomainBlockStatsPtr; > > + > +/** > + * VIR_DOMAIN_BLOCK_STATS_FIELD_LENGTH: > + * > + * Macro providing the field length of virDomainBlockStatsFlagsStruct > + */ > +#define VIR_DOMAIN_BLOCK_STATS_FIELD_LENGTH 80 > + > +/** > + * VIR_DOMAIN_BLOCK_STATS_READ_BYTES: > + * > + * Macro represents the total number of read bytes of the > + * block device. > + */ > +#define VIR_DOMAIN_BLOCK_STATS_READ_BYTES "rd_bytes" > + > +/** > + * VIR_DOMAIN_BLOCK_STATS_READ_REQ: > + * > + * Macro represents the total read requests of the > + * block device. > + */ > +#define VIR_DOMAIN_BLOCK_STATS_READ_REQ "rd_operations" > + > +/** > + * VIR_DOMAIN_BLOCK_STATS_READ_TOTAL_TIMES: > + * > + * Macro represents the total time spend on cache reads in > + * nano-seconds of the block device. > + */ > +#define VIR_DOMAIN_BLOCK_STATS_READ_TOTAL_TIMES "rd_total_times" > + > +/** > + * VIR_DOMAIN_BLOCK_STATS_WRITE_BYTES: > + * > + * Macro represents the total number of write bytes of the > + * block device. > + */ > +#define VIR_DOMAIN_BLOCK_STATS_WRITE_BYTES "wr_bytes" > + > +/** > + * VIR_DOMAIN_BLOCK_STATS_WRITE_REQ: > + * > + * Macro represents the total write requests of the > + * block device. > + */ > +#define VIR_DOMAIN_BLOCK_STATS_WRITE_REQ "wr_operations" > + > +/** > + * VIR_DOMAIN_BLOCK_STATS_WRITE_TOTAL_TIMES: > + * > + * Macro represents the total time spend on cache writes in > + * nano-seconds of the block device. > + */ > +#define VIR_DOMAIN_BLOCK_STATS_WRITE_TOTAL_TIMES "wr_total_times" > + > +/** > + * VIR_DOMAIN_BLOCK_STATS_FLUSH_REQ: > + * > + * Macro represents the total flush requests of the > + * block device. > + */ > +#define VIR_DOMAIN_BLOCK_STATS_FLUSH_REQ "flush_operations" > + > +/** > + * VIR_DOMAIN_BLOCK_STATS_FLUSH_TOTAL_TIMES: > + * > + * Macro represents the total time spend on cache flushing in > + * nano-seconds of the block device. > + */ > +#define VIR_DOMAIN_BLOCK_STATS_FLUSH_TOTAL_TIMES "flush_total_times" > + > +/** > + * VIR_DOMAIN_BLOCK_STATS_ERRS: > + * > + * In Xen this returns the mysterious 'oo_req' > + */ > +#define VIR_DOMAIN_BLOCK_STATS_ERRS "errs" > + > + > +/** > + * virDomainBlockStatsFlagsStruct: > + * > + * Struct filled by virDomainBlockStatsFlags() providing information > + * about the block device. > + * > + * Hypervisors may return a field set to ((long long)-1) which indicates > + * that the hypervisor does not support that statistic. > + * > + * NB. Here 'long long' means 64 bit integer. > + */ > +typedef struct _virDomainBlockStatsFlags virDomainBlockStatsFlagsStruct; > + > +struct _virDomainBlockStatsFlags { > + char field[VIR_DOMAIN_BLOCK_STATS_FIELD_LENGTH]; > + long long value; > +}; > + > +/** > + * virDomainBlockStatsFlagsPtr: > + * > + * A pointer to a virDomainBlockStatsFlagsStruct structure > + */ > +typedef virDomainBlockStatsFlagsStruct *virDomainBlockStatsFlagsPtr; > + > + > /** > * virDomainInterfaceStats: > * > @@ -1169,6 +1275,11 @@ int virDomainBlockStats (virDomainPtr dom, > const char *path, > virDomainBlockStatsPtr stats, > size_t size); > +int virDomainBlockStatsFlags (virDomainPtr dom, > + const char *path, > + virDomainBlockStatsFlagsPtr params, > + int *nparams, > + unsigned int flags); > int virDomainInterfaceStats (virDomainPtr dom, > const char *path, > virDomainInterfaceStatsPtr stats, > diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms > index c2b6666..61af4b5 100644 > --- a/src/libvirt_public.syms > +++ b/src/libvirt_public.syms > @@ -480,4 +480,9 @@ LIBVIRT_0.9.4 { > virDomainBlockPull; > } LIBVIRT_0.9.3; > > +LIBVIRT_0.9.5 { > + global: > + virDomainBlockStatsFlags; > +} LIBVIRT_0.9.4; > + > # .... define new API here using predicted next version number .... > -- > 1.7.6 ACK for the API, Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list