On Fri, Apr 08, 2011 at 08:33:12PM +0900, Minoru Usui wrote: > virNodeGetCPUTime: Expose new API > > Signed-off-by: Minoru Usui <usui@xxxxxxxxxxxxxxxxx> > --- > 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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list