[libvirt] [PATCH 10/16] util: Add virSysfsGetCPUCache* functions

Eli Qiao qiaoliyong at gmail.com
Fri Mar 31 09:32:16 UTC 2017



On Thursday, 30 March 2017 at 10:03 PM, Martin Kletzander wrote:

> Signed-off-by: Martin Kletzander <mkletzan at redhat.com (mailto:mkletzan at redhat.com)>
> ---
> src/libvirt_private.syms | 5 +++
> src/util/virsysfs.c | 102 +++++++++++++++++++++++++++++++++++++++++++++++
> src/util/virsysfs.h | 34 ++++++++++++++++
> 3 files changed, 141 insertions(+)
>  
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index bcd2506ef7c9..0b3b41516fe6 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -2623,6 +2623,11 @@ virVasprintfInternal;
> # util/virsysfs.h
> virSysfsCpuDirOpen;
> virSysfsDirOpen;
> +virSysfsGetCpuCacheValueBitmap;
> +virSysfsGetCpuCacheValueInt;
> +virSysfsGetCpuCacheValueScaledInt;
> +virSysfsGetCpuCacheValueString;
> +virSysfsGetCpuCacheValueUint;
> virSysfsGetCpuValueBitmap;
> virSysfsGetCpuValueInt;
> virSysfsGetCpuValueString;
> diff --git a/src/util/virsysfs.c b/src/util/virsysfs.c
> index a8550bbfbc26..2a64be4f5f73 100644
> --- a/src/util/virsysfs.c
> +++ b/src/util/virsysfs.c
> @@ -221,6 +221,108 @@ virSysfsCpuDirOpen(unsigned int cpu,
> }
>  
>  
> +/*
> + * Per-CPU/cache getters
> + */
> +int
> +virSysfsGetCpuCacheValueInt(unsigned int cpu,
> + const char *cache,
> + const char *file,
> + int *value)
>  
>  


It will be helpful that we describe what cache, file looks like
even it’s straight enough to reading code.
> +{
> + char *path = NULL;
> + int ret = -1;
> +
> + if (virAsprintf(&path, "%s/cpu/cpu%u/cache/%s/%s",
>  
>  


cpu/cpu0/cache/index3/size
  
> + sysfs_system_path, cpu, cache, file) < 0)
> + return -1;
> +
> + ret = virFileReadValueInt(path, value);
> +
> + VIR_FREE(path);
> + return ret;
> +}
> +
> +
> +int
> +virSysfsGetCpuCacheValueUint(unsigned int cpu,
> + const char *cache,
> + const char *file,
> + unsigned int *value)
> +{
> + char *path = NULL;
> + int ret = -1;
> +
> + if (virAsprintf(&path, "%s/cpu/cpu%u/cache/%s/%s",
> + sysfs_system_path, cpu, cache, file) < 0)
> + return -1;
> +
> + ret = virFileReadValueUint(path, value);
> +
> + VIR_FREE(path);
> + return ret;
> +}
> +
> +int
> +virSysfsGetCpuCacheValueScaledInt(unsigned int cpu,
> + const char *cache,
> + const char *file,
> + unsigned long long *value)
>  
>  


Can we add notes here to tell the value is in unite KiB ?
  
> +{
> + char *path = NULL;
> + int ret = -1;
> +
> + if (virAsprintf(&path, "%s/cpu/cpu%u/cache/%s/%s",
> + sysfs_system_path, cpu, cache, file) < 0)
> + return -1;
> +
> + ret = virFileReadValueScaledInt(path, value);
> +
> + VIR_FREE(path);
> + return ret;
> +}
> +
> +
> +int
> +virSysfsGetCpuCacheValueString(unsigned int cpu,
> + const char *cache,
> + const char *file,
> + char **value)
> +{
> + char *path = NULL;
> + int ret = -1;
> +
> + if (virAsprintf(&path, "cpu/cpu%u/cache/%s/%s", cpu, cache, file) < 0)
> + return -1;
> +
> + ret = virSysfsGetValueString(path, value);
> +
> + VIR_FREE(path);
> + return ret;
> +}
> +
> +int
> +virSysfsGetCpuCacheValueBitmap(unsigned int cpu,
> + const char *cache,
> + const char *file,
> + virBitmapPtr *value)
> +{
> + char *path = NULL;
> + int ret = -1;
> +
> + if (virAsprintf(&path, "%s/cpu/cpu%u/cache/%s/%s",
> + sysfs_system_path, cpu, cache, file) < 0)
> + return -1;
> +
> + ret = virFileReadValueBitmap(path, VIR_SYSFS_VALUE_MAXLEN, value);
> + VIR_FREE(path);
> + return ret;
> +}
> +
> +
> +/*
> + * Per-NUMA node getters
> + */
> int
> virSysfsGetNodeValueString(unsigned int node,
> const char *file,
> diff --git a/src/util/virsysfs.h b/src/util/virsysfs.h
> index 25bd100ea9cb..92f9111b069f 100644
> --- a/src/util/virsysfs.h
> +++ b/src/util/virsysfs.h
> @@ -77,6 +77,40 @@ virSysfsCpuDirOpen(unsigned int cpu,
>  
>  
> /*
> + * Per-CPU/cache getters
> + */
> +int
> +virSysfsGetCpuCacheValueInt(unsigned int cpu,
> + const char *cache,
> + const char *file,
> + int *value);
> +
> +int
> +virSysfsGetCpuCacheValueUint(unsigned int cpu,
> + const char *cache,
> + const char *file,
> + unsigned int *value);
> +
> +int
> +virSysfsGetCpuCacheValueScaledInt(unsigned int cpu,
> + const char *cache,
> + const char *file,
> + unsigned long long *value);
> +
> +int
> +virSysfsGetCpuCacheValueString(unsigned int cpu,
> + const char *cache,
> + const char *file,
> + char **value);
> +
> +int
> +virSysfsGetCpuCacheValueBitmap(unsigned int cpu,
> + const char *cache,
> + const char *file,
> + virBitmapPtr *value);
> +
> +
> +/*
> * Per-NUMA node getters
> */
> int
> --  
> 2.12.2
>  
> --
> libvir-list mailing list
> libvir-list at redhat.com (mailto:libvir-list at redhat.com)
> https://www.redhat.com/mailman/listinfo/libvir-list
>  
>  


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170331/91bccba6/attachment-0001.htm>


More information about the libvir-list mailing list