On Fri, Mar 31, 2017 at 05:32:16PM +0800, Eli Qiao wrote:
On Thursday, 30 March 2017 at 10:03 PM, Martin Kletzander wrote:
> Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com
(mailto:mkletzan@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.
What do you mean? The files look just like they look in the system.
It's a copy of what actually is under /sys/devices/system. The
description is in the kernel.
> +{
> + 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 ?
Well what if you want to use this for another file in the future? This
function will be able to read it even if the file has "1M" in it. Or
did you mean something else?