WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH 2/2] xl: support "xl list <domain>"

On Thu, 2010-07-29 at 18:31 +0100, Ian Jackson wrote:
> xm list takes an optional domain argument; make xl list do likewise.
> This also gets rid of a small amount of code which was duplicated
> between list_domains and list_domains_details.
> 
> Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>

I think I implicitly tested this as part of testing my own series from
earlier today, and it looks ok to me, so:

Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

> ---
>  tools/libxl/xl_cmdimpl.c |   56 
> ++++++++++++++++++++++++++++------------------
>  1 files changed, 34 insertions(+), 22 deletions(-)
> 
> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> index 6a1ae0a..1fc9c14 100644
> --- a/tools/libxl/xl_cmdimpl.c
> +++ b/tools/libxl/xl_cmdimpl.c
> @@ -2094,22 +2094,15 @@ void reboot_domain(char *p)
>      if (rc) { fprintf(stderr,"reboot failed (rc=%d)\n.",rc);exit(-1); }
>  }
>  
> -void list_domains_details(void)
> +void list_domains_details(const libxl_dominfo *info, int nb_domain)
>  {
> -    libxl_dominfo *info;
>      struct domain_config d_config;
>  
>      char *config_file;
>      uint8_t *data;
> -    int nb_domain, i, len, rc;
> +    int i, len, rc;
>      libxl_device_model_info dm_info;
>  
> -    info = libxl_list_domain(&ctx, &nb_domain);
> -
> -    if (!info) {
> -        fprintf(stderr, "libxl_domain_infolist failed.\n");
> -        exit(1);
> -    }
>      for (i = 0; i < nb_domain; i++) {
>          rc = libxl_userdata_retrieve(&ctx, info[i].domid, "xl", &data, &len);
>          if (rc)
> @@ -2121,20 +2114,12 @@ void list_domains_details(void)
>          free(data);
>          free(config_file);
>      }
> -    free(info);
>  }
>  
> -void list_domains(int verbose)
> +void list_domains(int verbose, const libxl_dominfo *info, int nb_domain)
>  {
> -    libxl_dominfo *info;
> -    int nb_domain, i;
> -
> -    info = libxl_list_domain(&ctx, &nb_domain);
> +    int i;
>  
> -    if (!info) {
> -        fprintf(stderr, "libxl_domain_infolist failed.\n");
> -        exit(1);
> -    }
>      printf("Name                                        ID   Mem 
> VCPUs\tState\tTime(s)\n");
>      for (i = 0; i < nb_domain; i++) {
>          printf("%-40s %5d %5lu %5d     %c%c%c%c%c%c  %8.1f",
> @@ -2155,7 +2140,6 @@ void list_domains(int verbose)
>          }
>          putchar('\n');
>      }
> -    free(info);
>  }
>  
>  void list_vm(void)
> @@ -2960,6 +2944,10 @@ int main_list(int argc, char **argv)
>          {0, 0, 0, 0}
>      };
>  
> +    libxl_dominfo info_buf;
> +    libxl_dominfo *info, *info_free=0;
> +    int nb_domain, rc;
> +
>      while (1) {
>          opt = getopt_long(argc, argv, "lvh", long_options, &option_index);
>          if (opt == -1)
> @@ -2981,10 +2969,34 @@ int main_list(int argc, char **argv)
>          }
>      }
>  
> +    if (optind >= argc) {
> +        info = libxl_list_domain(&ctx, &nb_domain);
> +        if (!info) {
> +            fprintf(stderr, "libxl_domain_infolist failed.\n");
> +            exit(1);
> +        }
> +        info_free = info;
> +    } else if (optind == argc-1) {
> +        find_domain(argv[optind]);
> +        rc = libxl_domain_info(&ctx, &info_buf, domid);
> +        if (rc) {
> +            fprintf(stderr, "libxl_domain_info failed (code %d).\n", rc);
> +            exit(-rc);
> +        }
> +        info = &info_buf;
> +        nb_domain = 1;
> +    } else {
> +        help("list");
> +        exit(2);
> +    }
> +
>      if (details)
> -        list_domains_details();
> +        list_domains_details(info, nb_domain);
>      else
> -        list_domains(verbose);
> +        list_domains(verbose, info, nb_domain);
> +
> +    free(info_free);
> +
>      exit(0);
>  }
>  



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel