[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] xl: allow scaling suffix on memory sizes in mem-set and mem-max



Hi jeremy,

On 05/18/2010 08:41 AM, Jeremy Fitzhardinge wrote:
> Allow mem-set and mem-max to take 'b', 'k', 'm', 'g' and 't' as scaling
> suffixes for bytes, kilobytes, mega, etc.  An unadorned number is still
> treated as kilobytes so no existing users should be affected.
> 
> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
> 
> diff -r baccadfd9418 tools/libxl/xl_cmdimpl.c
> --- a/tools/libxl/xl_cmdimpl.c        Fri May 14 08:05:05 2010 +0100
> +++ b/tools/libxl/xl_cmdimpl.c        Mon May 17 17:37:56 2010 -0700
> @@ -1200,16 +1200,40 @@
>      }
>  }
>  
> +static long long int parse_mem_size_kb(char *mem)

I think here should use 'uint64_t' which is 'unsigned long long'
instead of 'long long int'. 

> +{
> +    char *endptr;
> +    long long int bytes;
> +    long long int scale = 1024;
> +
> +    bytes = strtoll(mem, &endptr, 10);
> +
> +    if (strlen(endptr) > 1)
> +     return -1;
> +
> +    switch (*endptr) {
> +    case '\0':                                               break;
> +    case 'b':        scale = 1;                              break;
> +    case 'k':        scale = 1024ll;                         break;
> +    case 'm':        scale = 1024ll * 1024;                  break;
> +    case 'g':        scale = 1024ll * 1024 * 1024;           break;
> +    case 't':        scale = 1024ll * 1024 * 1024 * 1024;    break;
> +    default:
> +     return -1;
> +    }
> +
> +    return (bytes * scale) / 1024;
> +}
> +
>  int set_memory_max(char *p, char *mem)
>  {
> -    char *endptr;
> -    uint32_t memorykb;
> +    long long int memorykb;
>      int rc;
>  
>      find_domain(p);
>  
> -    memorykb = strtoul(mem, &endptr, 10);
> -    if (*endptr != '\0') {
> +    memorykb = parse_mem_size_kb(mem);
> +    if (memorykb == -1) {
>          fprintf(stderr, "invalid memory size: %s\n", mem);
>          exit(3);
>      }
> @@ -1255,17 +1279,18 @@
>  
>  void set_memory_target(char *p, char *mem)
>  {
> -    char *endptr;
> -    uint32_t memorykb;
> +    long long int memorykb;
>  
>      find_domain(p);
>  
> -    memorykb = strtoul(mem, &endptr, 10);
> -    if (*endptr != '\0') {
> -        fprintf(stderr, "invalid memory size: %s\n", mem);
> -        exit(3);
> +    memorykb = parse_mem_size_kb(mem);
> +
> +    if (memorykb == -1)  {
> +     fprintf(stderr, "invalid memory size: %s\n", mem);
> +     exit(3);
>      }
> -    printf("setting domid %d memory to : %d\n", domid, memorykb);
> +
> +    printf("setting domid %d memory to : %lld\n", domid, memorykb);
>      libxl_set_memory_target(&ctx, domid, memorykb, /* enforce */ 1);
>  }
>  
> diff -r baccadfd9418 tools/libxl/xl_cmdtable.c
> --- a/tools/libxl/xl_cmdtable.c       Fri May 14 08:05:05 2010 +0100
> +++ b/tools/libxl/xl_cmdtable.c       Mon May 17 17:37:56 2010 -0700
> @@ -110,12 +110,12 @@
>      },
>      { "mem-max",
>        &main_memmax,
> -      "Set the maximum amount reservation for a domain",
> +      "Set the maximum amount reservation for a domain.  Units default to 
> kilobytes, but can be suffixed with 'b' (bytes), 'k' (KB), 'm' (MB), 'g' (GB) 
> or 't' (TB)",
>        "<Domain> <MemKB>",
>      },
>      { "mem-set",
>        &main_memset,
> -      "Set the current memory usage for a domain",
> +      "Set the current memory usage for a domain.  Units default to 
> kilobytes, but can be suffixed with 'b' (bytes), 'k' (KB), 'm' (MB), 'g' (GB) 
> or 't' (TB)",
>        "<Domain> <MemKB>",
>      },
>      { "button-press",
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
> 
> 


-- 
Regards
Yang Hongyang

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.