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

Eli Qiao qiaoliyong at gmail.com
Fri Mar 31 12:36:24 UTC 2017



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 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.
>  
Okay, never mind.  
>  
> > > +{
> > > + char *path = NULL;
> > > + int ret = -1;
> > > +
> > > + if (virAsprintf(&path, "%s/cpu/cpu%u/cache/%s/%s",
> > >  
> >  
> >  
> >  
> > cpu/cpu0/cache/index3/size
>  
> ???
>  
ignore this.  
>  
> > > + 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?
>  
>  

My mistake, it’s should B (not KiB), It’s okay.  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170331/7f53fd68/attachment-0001.htm>


More information about the libvir-list mailing list