From 1f873744c821979912cf760d5c297e91ff872566 Mon Sep 17 00:00:00 2001 From: Minoru Usui Date: Tue, 7 Jun 2011 09:58:47 +0900 Subject: [PATCH] virNodeGetCPUStats: Expose new API Signed-off-by: Minoru Usui --- include/libvirt/libvirt.h.in | 75 +++++++++++++++++++++++++++++++++++- python/generator.py | 1 + src/libvirt_public.syms | 1 + 3 files changed, 76 insertions(+), 1 deletion(-) diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in index 8b63ba2183..4bd2cdcd46 100644 --- a/include/libvirt/libvirt.h.in +++ b/include/libvirt/libvirt.h.in @@ -216,7 +216,6 @@ typedef struct _virStream virStream; */ typedef virStream *virStreamPtr; - /** * VIR_SECURITY_LABEL_BUFLEN: * @@ -302,6 +301,66 @@ struct _virNodeInfo { unsigned int threads;/* number of threads per core */ }; +/** + * VIR_CPU_STATS_FIELD_LENGTH: + * + * Macro providing the field length of virNodeCPUStats + */ +#define VIR_CPU_STATS_FIELD_LENGTH 80 + +/** + * VIR_CPU_STATS_ALL_CPUS: + * + * Macro for the total CPU time/utilization + */ +#define VIR_CPU_STATS_ALL_CPUS (-1) + +/** + * VIR_CPU_STATS_KERNEL: + * + * Macro for the cumulative CPU time which spends by kernel, + * when the node booting up.(in nanoseconds). + */ +#define VIR_CPU_STATS_KERNEL "kernel" + +/** + * The cumulative CPU time which spends by user processes, + * when the node booting up.(in nanoseconds). + */ +#define VIR_CPU_STATS_USER "user" + +/** + * The cumulative idle CPU time, + * when the node booting up.(in nanoseconds). + */ +#define VIR_CPU_STATS_IDLE "idle" + +/** + * The cumulative I/O wait CPU time, + * when the node booting up.(in nanoseconds). + */ +#define VIR_CPU_STATS_IOWAIT "iowait" + +/** + * The CPU utilization. + * The usage value is in percent and 100% represents all CPUs on + * the server. + */ +#define VIR_CPU_STATS_UTILIZATION "utilization" + +/** + * virCPUStats: + * + * a virNodeCPUStats is a structure filled by virNodeGetCPUStats() + * and providing the information for the cpu stats of the node. + */ +typedef struct _virCPUStats virCPUStats; + +struct _virCPUStats { + char field[VIR_CPU_STATS_FIELD_LENGTH]; + unsigned long long value; +}; + /* Common data types shared among interfaces with name/type/value lists. */ @@ -561,6 +620,14 @@ int virDomainMigrateSetMaxSpeed(virDomainPtr domain, typedef virNodeInfo *virNodeInfoPtr; +/** + * virCPUStatsPtr: + * + * a virCPUStatsPtr is a pointer to a virCPUStats structure. + */ + +typedef virCPUStats *virCPUStatsPtr; + /** * virConnectFlags * @@ -695,6 +762,12 @@ int virNodeGetInfo (virConnectPtr conn, virNodeInfoPtr info); char * virConnectGetCapabilities (virConnectPtr conn); +int virNodeGetCPUStats (virConnectPtr conn, + int cpuNum, + virCPUStatsPtr params, + int *nparams, + unsigned int flags); + unsigned long long virNodeGetFreeMemory (virConnectPtr conn); int virNodeGetSecurityModel (virConnectPtr conn, diff --git a/python/generator.py b/python/generator.py index 634b78877f..d929efa42e 100755 --- a/python/generator.py +++ b/python/generator.py @@ -363,6 +363,7 @@ skip_impl = ( 'virConnectBaselineCPU', 'virDomainRevertToSnapshot', 'virDomainSendKey', + 'virNodeGetCPUStats', ) diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms index a7be36bb78..af559b6366 100644 --- a/src/libvirt_public.syms +++ b/src/libvirt_public.syms @@ -454,6 +454,7 @@ LIBVIRT_0.9.3 { global: virDomainPinVcpuFlags; virDomainSendKey; + virNodeGetCPUStats; } LIBVIRT_0.9.2; # .... define new API here using predicted next version number ....