[libvirt] [PATCHv5 1/6] virNodeGetCPUTimeParameters: Expose new API

Daniel P. Berrange berrange at redhat.com
Mon May 23 11:58:26 UTC 2011


On Fri, May 20, 2011 at 01:55:20PM +0200, Matthias Bolte wrote:
> 2011/5/20 Daniel P. Berrange <berrange at redhat.com>:
> > On Tue, May 17, 2011 at 04:01:36PM +0900, Minoru Usui wrote:
> >> virNodeGetCPUTimeParameters: Expose new API
> >>
> >> Signed-off-by: Minoru Usui <usui at mxm.nes.nec.co.jp>
> >> ---
> >>  include/libvirt/libvirt.h.in |   65 ++++++++++++++++++++++++++++++++++++++++++
> >>  src/libvirt_public.syms      |    1 +
> >>  2 files changed, 66 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
> >> index f4d0b40..723fdf8 100644
> >> --- a/include/libvirt/libvirt.h.in
> >> +++ b/include/libvirt/libvirt.h.in
> >> @@ -280,6 +280,58 @@ struct _virNodeInfo {
> >>      unsigned int threads;/* number of threads per core */
> >>  };
> >>
> >> +/**
> >> + * VIR_CPU_TIME_FIELD_LENGTH:
> >> + *
> >> + * Macro providing the field length of virNodeCPUTimeParameters
> >> + */
> >> +#define VIR_CPU_TIME_FIELD_LENGTH 80
> >> +
> >> +/**
> >> + * VIR_CPU_TIME_KERNEL:
> >> + *
> >> + * Macro for the cumulative CPU time which spends by kernel,
> >> + * when the node booting up.(in nanoseconds).
> >> + */
> >> +#define VIR_CPU_TIME_KERNEL "kernel"
> >> +
> >> +/**
> >> + * The cumulative CPU time which spends by user processes,
> >> + * when the node booting up.(in nanoseconds).
> >> + */
> >> +#define VIR_CPU_TIME_USER "user"
> >> +
> >> +/**
> >> + * The cumulative idle CPU time,
> >> + * when the node booting up.(in nanoseconds).
> >> + */
> >> +#define VIR_CPU_TIME_IDLE "idle"
> >> +
> >> +/**
> >> + * The cumulative I/O wait CPU time,
> >> + * when the node booting up.(in nanoseconds).
> >> + */
> >> +#define VIR_CPU_TIME_IOWAIT "iowait"
> >> +
> >> +/**
> >> + * The CPU utilization.
> >> + * The usage value is in percent and 100% represents all CPUs on
> >> + * the server.
> >> + */
> >> +#define VIR_CPU_TIME_UTILIZATION "utilization"
> >> +
> >> +/**
> >> + * virCPUTimeParameter:
> >> + *
> >> + * a virNodeCPUTimeParameter is a structure filled by virNodeGetCPUTime()
> >> + * and providing the information for the cpu time of the node.
> >> + */
> >> +typedef struct _virCPUTimeParameter virCPUTimeParameter;
> >> +
> >> +struct _virCPUTimeParameter {
> >> +    char field[VIR_CPU_TIME_FIELD_LENGTH];
> >> +    unsigned long long value;
> >> +};
> >>
> >>  /**
> >>   * virDomainSchedParameterType:
> >> @@ -512,6 +564,14 @@ int virDomainMigrateSetMaxSpeed(virDomainPtr domain,
> >>  typedef virNodeInfo *virNodeInfoPtr;
> >>
> >>  /**
> >> + * virCPUTimeParameterPtr:
> >> + *
> >> + * a virCPUTimeParameterPtr is a pointer to a virCPUTimeParameter structure.
> >> + */
> >> +
> >> +typedef virCPUTimeParameter *virCPUTimeParameterPtr;
> >> +
> >> +/**
> >>   * virConnectFlags
> >>   *
> >>   * Flags when opening a connection to a hypervisor
> >> @@ -645,6 +705,11 @@ int                     virNodeGetInfo          (virConnectPtr conn,
> >>                                                   virNodeInfoPtr info);
> >>  char *                  virConnectGetCapabilities (virConnectPtr conn);
> >>
> >> +int                     virNodeGetCPUTimeParameters (virConnectPtr conn,
> >> +                                                 virCPUTimeParameterPtr params,
> >> +                                                 int *nparams,
> >> +                                                 unsigned int flags);
> >> +
> >>  unsigned long long      virNodeGetFreeMemory    (virConnectPtr conn);
> >>
> >>  int                     virNodeGetSecurityModel (virConnectPtr conn,
> >> diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms
> >> index 1444b55..fb8d3e0 100644
> >> --- a/src/libvirt_public.syms
> >> +++ b/src/libvirt_public.syms
> >> @@ -441,6 +441,7 @@ LIBVIRT_0.9.2 {
> >>          virDomainGetState;
> >>          virDomainInjectNMI;
> >>          virDomainScreenshot;
> >> +        virNodeGetCPUTimeParameters;
> >>  } LIBVIRT_0.9.0;
> >>
> >>  # .... define new API here using predicted next version number ....
> >
> > ACK.
> >
> > I'm wondering whether virCPUTimeParameter should be dropped and just use
> > the generic virTypedParameter instead. It would be rather overkill since
> > we only really want to ever use  'unsigned long long' for this data,
> > but it might be simpler for apps to have the same struct, even if we only
> > use one field of it.
> >
> > Daniel
> >
> 
> Actually virNodeGetCPUTimeParameters is the wrong name. It's not a
> parameter function, it's a statistics function. Therefore, it should
> be called virNodeGetCPUTimeStats or virNodeGetCPUStats.

Hmm, yes, that is a good point really. So how about we call it
virNodeGetCPUStats and just continue to use the dedicated struct
for it, and not reuse the virTypedParameter.


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