[libvirt] [PATCH v2.1 16/21] Add a new function vshPrintPinInfo.

Daniel Veillard veillard at redhat.com
Wed Aug 22 08:38:06 UTC 2012


On Tue, Aug 21, 2012 at 05:18:39PM +0800, Hu Tao wrote:
> This is a helper function to print vcpu pin info.
> ---
>  tools/virsh-domain.c |   65 ++++++++++++++++++++++++++++++++------------------
>  1 file changed, 42 insertions(+), 23 deletions(-)
> 
> diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
> index 94ac1aa..047d374 100644
> --- a/tools/virsh-domain.c
> +++ b/tools/virsh-domain.c
> @@ -4525,6 +4525,45 @@ static const vshCmdOptDef opts_vcpupin[] = {
>      {NULL, 0, 0, NULL}
>  };
>  
> +/*
> + * Helper function to print vcpupin info.
> + */
> +static bool
> +vshPrintPinInfo(unsigned char *cpumaps, size_t cpumaplen,
> +                int maxcpu, int vcpuindex)
> +{
> +    int cpu, lastcpu;
> +    bool bit, lastbit, isInvert;
> +
> +    if (!cpumaps || cpumaplen <= 0 || maxcpu <= 0 || vcpuindex < 0) {
> +        return false;
> +    }
> +
> +    bit = lastbit = isInvert = false;
> +    lastcpu = -1;
> +
> +    for (cpu = 0; cpu < maxcpu; cpu++) {
> +        bit = VIR_CPU_USABLE(cpumaps, cpumaplen, vcpuindex, cpu);
> +
> +        isInvert = (bit ^ lastbit);
> +        if (bit && isInvert) {
> +            if (lastcpu == -1)
> +                vshPrint(ctl, "%d", cpu);
> +            else
> +                vshPrint(ctl, ",%d", cpu);
> +            lastcpu = cpu;
> +        }
> +        if (!bit && isInvert && lastcpu != cpu - 1)
> +            vshPrint(ctl, "-%d", cpu - 1);
> +        lastbit = bit;
> +    }
> +    if (bit && !isInvert) {
> +        vshPrint(ctl, "-%d", maxcpu - 1);
> +    }
> +
> +    return true;
> +}
> +
>  static bool
>  cmdVcpuPin(vshControl *ctl, const vshCmd *cmd)
>  {
> @@ -4537,7 +4576,6 @@ cmdVcpuPin(vshControl *ctl, const vshCmd *cmd)
>      unsigned char *cpumap = NULL;
>      unsigned char *cpumaps = NULL;
>      size_t cpumaplen;
> -    bool bit, lastbit, isInvert;
>      int i, cpu, lastcpu, maxcpu, ncpus;
>      bool unuse = false;
>      const char *cur;
> @@ -4622,30 +4660,11 @@ cmdVcpuPin(vshControl *ctl, const vshCmd *cmd)
>                 if (vcpu != -1 && i != vcpu)
>                     continue;
>  
> -               bit = lastbit = isInvert = false;
> -               lastcpu = -1;
> -
>                 vshPrint(ctl, "%4d: ", i);
> -               for (cpu = 0; cpu < maxcpu; cpu++) {
> -
> -                   bit = VIR_CPU_USABLE(cpumaps, cpumaplen, i, cpu);
> -
> -                   isInvert = (bit ^ lastbit);
> -                   if (bit && isInvert) {
> -                       if (lastcpu == -1)
> -                           vshPrint(ctl, "%d", cpu);
> -                       else
> -                           vshPrint(ctl, ",%d", cpu);
> -                       lastcpu = cpu;
> -                   }
> -                   if (!bit && isInvert && lastcpu != cpu - 1)
> -                       vshPrint(ctl, "-%d", cpu - 1);
> -                   lastbit = bit;
> -               }
> -               if (bit && !isInvert) {
> -                  vshPrint(ctl, "-%d", maxcpu - 1);
> -               }
> +               ret = vshPrintPinInfo(cpumaps, cpumaplen, maxcpu, i);
>                 vshPrint(ctl, "\n");
> +               if (!ret)
> +                   break;
>              }
>  
>          } else {

  Okay, just a bit of refactoring, ACK

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list