On Friday, 31 March 2017 at 7:39 PM, Martin Kletzander wrote:
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@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.symsindex bcd2506ef7c9..0b3b41516fe6 100644--- a/src/libvirt_private.syms+++ b/src/libvirt_private.syms@@ -2623,6 +2623,11 @@ virVasprintfInternal;# util/virsysfs.hvirSysfsCpuDirOpen;virSysfsDirOpen;+virSysfsGetCpuCacheValueBitmap;+virSysfsGetCpuCacheValueInt;+virSysfsGetCpuCacheValueScaledInt;+virSysfsGetCpuCacheValueString;+virSysfsGetCpuCacheValueUint;virSysfsGetCpuValueBitmap;virSysfsGetCpuValueInt;virSysfsGetCpuValueString;diff --git a/src/util/virsysfs.c b/src/util/virsysfs.cindex 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 likeeven 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. Thedescription 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? Thisfunction will be able to read it even if the file has "1M" in it. Ordid you mean something else?