[libvirt] [PATCHv5 06/19] util: Add monitor interface to determine path

John Ferlan jferlan at redhat.com
Tue Oct 9 23:15:39 UTC 2018



On 10/9/18 6:30 AM, Wang Huaqiang wrote:
> Add interface for resctrl monitor to determine the path.
> 
> Signed-off-by: Wang Huaqiang <huaqiang.wang at intel.com>
> ---
>  src/libvirt_private.syms |  1 +
>  src/util/virresctrl.c    | 32 ++++++++++++++++++++++++++++++++
>  src/util/virresctrl.h    |  3 +++
>  3 files changed, 36 insertions(+)
> 
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 4a52a86..e175c8b 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -2681,6 +2681,7 @@ virResctrlInfoGetMonitorPrefix;
>  virResctrlInfoMonFree;
>  virResctrlInfoNew;
>  virResctrlMonitorAddPID;
> +virResctrlMonitorDeterminePath;
>  virResctrlMonitorNew;
>  
>  
> diff --git a/src/util/virresctrl.c b/src/util/virresctrl.c
> index 03001cc..1a5578e 100644
> --- a/src/util/virresctrl.c
> +++ b/src/util/virresctrl.c
> @@ -2465,3 +2465,35 @@ virResctrlMonitorAddPID(virResctrlMonitorPtr monitor,
>  {
>      return virResctrlAddPID(monitor->path, pid);
>  }
> +
> +int
> +virResctrlMonitorDeterminePath(virResctrlMonitorPtr monitor,
> +                               const char *machinename)
> +{
> +    char *alloc_path = NULL;

const char

> +    char *parentpath = NULL;

VIR_AUTOFREE(char *) parentpath = NULL;

(thus the VIR_FREE later isn't necessary)

> +
> +    if (!monitor) {
> +        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                       _("Invalid resctrl monitor"));
> +        return -1;
> +    }

Shouldn't there be a monitor->path check here like there is in
virResctrlAllocDeterminePath?

> +
> +    if (monitor->alloc)
> +        alloc_path = monitor->alloc->path;
> +    else
> +        alloc_path = (char *)SYSFS_RESCTRL_PATH;

s/(char *)//

> +
> +    if (virAsprintf(&parentpath, "%s/mon_groups", alloc_path) < 0)
> +        return -1;
> +
> +    monitor->path = virResctrlDeterminePath(parentpath, machinename,
> +                                            monitor->id);
> +
> +    VIR_FREE(parentpath);

see above...

John

> +
> +    if (!monitor->path)
> +        return -1;
> +
> +    return 0;
> +}
> diff --git a/src/util/virresctrl.h b/src/util/virresctrl.h
> index cb9bfae..69b6b1d 100644
> --- a/src/util/virresctrl.h
> +++ b/src/util/virresctrl.h
> @@ -196,4 +196,7 @@ virResctrlMonitorNew(void);
>  int
>  virResctrlMonitorAddPID(virResctrlMonitorPtr monitor,
>                          pid_t pid);
> +int
> +virResctrlMonitorDeterminePath(virResctrlMonitorPtr monitor,
> +                               const char *machinename);
>  #endif /*  __VIR_RESCTRL_H__ */
> 




More information about the libvir-list mailing list