[libvirt] [PATCH 1/8] latency: Define new public API and structure

Osier Yang jyang at redhat.com
Wed Aug 31 08:26:06 UTC 2011


---
 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




More information about the libvir-list mailing list