On Fri, Apr 08, 2011 at 08:33:12PM +0900, Minoru Usui wrote:
virNodeGetCPUTime: Expose new API
Signed-off-by: Minoru Usui <usui(a)mxm.nes.nec.co.jp>
---
include/libvirt/libvirt.h.in | 64 ++++++++++++++++++++++++++++++++++++++++++
src/libvirt_public.syms | 5 +++
2 files changed, 69 insertions(+), 0 deletions(-)
diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
index bd36015..154c138 100644
--- a/include/libvirt/libvirt.h.in
+++ b/include/libvirt/libvirt.h.in
@@ -228,6 +228,57 @@ struct _virNodeInfo {
unsigned int threads;/* number of threads per core */
};
+/**
+ * virNodeCpuTime:
+ *
+ * a virNodeCpuTime is a structure filled by virNodeGetCpuTime() and providing
+ * the information for the cpu time of the node.
+ */
+
+/**
+ * Cpu Time Statistics Tags:
+ */
+typedef enum {
+ /*
+ * The cumulative CPU time which spends by kernel,
+ * when the node booting up.(in nanoseconds).
+ */
+ VIR_NODE_CPU_TIME_KERNEL = 0,
+ /*
+ * The cumulative CPU time which spends by user processes,
+ * when the node booting up.(in nanoseconds).
+ */
+ VIR_NODE_CPU_TIME_USER = 1,
+ /*
+ * The cumulative idle CPU time,
+ * when the node booting up.(in nanoseconds).
+ */
+ VIR_NODE_CPU_TIME_IDLE = 2,
+ /*
+ * The cumulative I/O wait CPU time,
+ * when the node booting up.(in nanoseconds).
+ */
+ VIR_NODE_CPU_TIME_IOWAIT = 3,
+ /*
+ * The CPU utilization.
+ * The usage value is in percent and 100% represents all CPUs on
+ * the server.
+ */
+ VIR_NODE_CPU_TIME_UTILIZATION = 4,
+
+ /*
+ * The number of statistics supported by this version of the interface.
+ * To add new statistics, add them to the enum and increase this value.
+ */
+ VIR_NODE_CPU_TIME_NR = 5,
+} virNodeCpuTimeTags;
+
+typedef struct _virNodeCpuTime virNodeCpuTime;
+
+struct _virNodeCpuTime {
+ virNodeCpuTimeTags tag;
+ unsigned long long val;
+};
I've just remembered that the virSchedParameter, virMemoryParameter and
virBlkioParameter structs all use a string to represent the data value,
rather than an enum. I wonder if we ought todo the same here.
eg, something like
#define VIR_NODE_CPUE_FIELD_LENGTH 80
struct _virNodeCpuParameter {
char field[VIR_NODE_CPU_FIELD_LENGTH]
unsigned long long value;
};
They also have a union for returning different data types, beyond just
'unsigned long long' but I think that might be overkill here.
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|