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

Martin Kletzander mkletzan at redhat.com
Fri Mar 31 11:39:11 UTC 2017


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 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.

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?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170331/7fdce449/attachment-0001.sig>


More information about the libvir-list mailing list