[libvirt] [PATCHv2 1/6] virNodeGetCPUTime: Expose new API

Daniel P. Berrange berrange at redhat.com
Tue Apr 19 10:48:55 UTC 2011


On Fri, Apr 08, 2011 at 08:33:12PM +0900, Minoru Usui wrote:
> virNodeGetCPUTime: Expose new API
> 
> Signed-off-by: Minoru Usui <usui at 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 :|




More information about the libvir-list mailing list