[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] add support for memory suffix in user tools and in kernel
ChangeSet 1.1443.2.2, 2005/04/05 11:11:54+01:00, vh249@xxxxxxxxxxxxxxxxxxxxxx add support for memory suffix in user tools and in kernel Signed-off-by: Vincent Hanquez <vincent@xxxxxxxxxxxxx> tools/python/xen/xm/main.py | 29 +++++++++++++++++++++++++++-- xen/arch/x86/domain_build.c | 2 +- xen/common/kernel.c | 18 ++++++++++++++++++ xen/include/xen/init.h | 6 +++++- 4 files changed, 51 insertions(+), 4 deletions(-) diff -Nru a/tools/python/xen/xm/main.py b/tools/python/xen/xm/main.py --- a/tools/python/xen/xm/main.py 2005-04-05 09:03:22 -04:00 +++ b/tools/python/xen/xm/main.py 2005-04-05 09:03:22 -04:00 @@ -14,6 +14,31 @@ from xen.xm import create, destroy, migrate, shutdown, sysrq from xen.xm.opts import * +def unit(c): + if not c.isalpha(): + return 0 + base = 1 + if c == 'G' or c == 'g': base = 1024 * 1024 * 1024 + elif c == 'M' or c == 'm': base = 1024 * 1024 + elif c == 'K' or c == 'k': base = 1024 + else: + print 'ignoring unknown unit' + return base + +def int_unit(str, dest): + base = unit(str[-1]) + if not base: + return int(str) + + value = int(str[:-1]) + dst_base = unit(dest) + if dst_base == 0: + dst_base = 1 + if dst_base > base: + return value / (dst_base / base) + else: + return value * (base / dst_base) + class Group: name = "" @@ -475,7 +500,7 @@ def main(self, args): if len(args) != 3: self.err("%s: Invalid argument(s)" % args[0]) dom = args[1] - mem = int(args[2]) + mem = int_unit(args[2], 'm') server.xend_domain_maxmem_set(dom, mem) xm.prog(ProgMaxmem) @@ -493,7 +518,7 @@ def main(self, args): if len(args) != 3: self.err("%s: Invalid argument(s)" % args[0]) dom = args[1] - mem_target = int(args[2]) + mem_target = int_unit(args[2], 'm') server.xend_domain_mem_target_set(dom, mem_target) xm.prog(ProgBalloon) diff -Nru a/xen/arch/x86/domain_build.c b/xen/arch/x86/domain_build.c --- a/xen/arch/x86/domain_build.c 2005-04-05 09:03:22 -04:00 +++ b/xen/arch/x86/domain_build.c 2005-04-05 09:03:22 -04:00 @@ -23,7 +23,7 @@ /* opt_dom0_mem: Kilobytes of memory allocated to domain 0. */ static unsigned int opt_dom0_mem = 0; -integer_param("dom0_mem", opt_dom0_mem); +integer_unit_param("dom0_mem", opt_dom0_mem); #if defined(__i386__) /* No ring-3 access in initial leaf page tables. */ diff -Nru a/xen/common/kernel.c b/xen/common/kernel.c --- a/xen/common/kernel.c 2005-04-05 09:03:22 -04:00 +++ b/xen/common/kernel.c 2005-04-05 09:03:22 -04:00 @@ -55,6 +55,24 @@ *(unsigned int *)param->var = simple_strtol(opt, (char **)&opt, 0); break; + case OPT_UINT_UNIT: + if ( opt != NULL ) + { + int base = 1; + unsigned int value; + + value = simple_strtoul(opt, (char **)&opt, 0); + if (*opt == 'G' || *opt == 'g') { + base = 1024 * 1024; + opt++; + } if (*opt == 'M' || *opt == 'm') { + base = 1024; + opt++; + } else if (*opt == 'K' || *opt == 'k') + opt++; + *(unsigned int *) param->var = value * base; + } + break; case OPT_BOOL: *(int *)param->var = 1; break; diff -Nru a/xen/include/xen/init.h b/xen/include/xen/init.h --- a/xen/include/xen/init.h 2005-04-05 09:03:22 -04:00 +++ b/xen/include/xen/init.h 2005-04-05 09:03:22 -04:00 @@ -59,7 +59,7 @@ */ struct kernel_param { const char *name; - enum { OPT_STR, OPT_UINT, OPT_BOOL } type; + enum { OPT_STR, OPT_UINT, OPT_UINT_UNIT, OPT_BOOL } type; void *var; unsigned int len; }; @@ -74,6 +74,10 @@ static char __setup_str_##_var[] __initdata = _name; \ static struct kernel_param __setup_##_var __attribute_used__ \ __initsetup = { __setup_str_##_var, OPT_UINT, &_var, sizeof(_var) } +#define integer_unit_param(_name, _var) \ + static char __setup_str_##_var[] __initdata = _name; \ + static struct kernel_param __setup_##_var __attribute_used__ \ + __initsetup = { __setup_str_##_var, OPT_UINT_UNIT, &_var, sizeof(_var) } #define string_param(_name, _var) \ static char __setup_str_##_var[] __initdata = _name; \ static struct kernel_param __setup_##_var __attribute_used__ \ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |