[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Allow tools to see the hypervisor command line.
On Wednesday 17 June 2009 17:32:25 Ian Campbell wrote: > This is useful from tools in the same way /proc/cmdline is useful for > the domain 0 kernel. On NetBSD Dom0, this is sysctl machdep.booted_kernel. Current implementation doesn't work properly, since Xen throws away the first argument at startup. Is it possible to not kill it ? Christoph > > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > > diff -r 2e802c0a5c08 -r b7c94d5e638f tools/python/xen/lowlevel/xc/xc.c > --- a/tools/python/xen/lowlevel/xc/xc.c Wed Jun 17 15:32:27 2009 +0100 > +++ b/tools/python/xen/lowlevel/xc/xc.c Wed Jun 17 16:31:38 2009 +0100 > @@ -1132,6 +1132,7 @@ > xen_changeset_info_t xen_chgset; > xen_capabilities_info_t xen_caps; > xen_platform_parameters_t p_parms; > + xen_commandline_t xen_commandline; > long xen_version; > long xen_pagesize; > char str[128]; > @@ -1153,13 +1154,16 @@ > if ( xc_version(self->xc_handle, XENVER_platform_parameters, &p_parms) > != 0 ) return pyxc_error_to_exception(); > > + if ( xc_version(self->xc_handle, XENVER_commandline, &xen_commandline) > != 0 ) + return pyxc_error_to_exception(); > + > snprintf(str, sizeof(str), "virt_start=0x%lx", p_parms.virt_start); > > xen_pagesize = xc_version(self->xc_handle, XENVER_pagesize, NULL); > if (xen_pagesize < 0 ) > return pyxc_error_to_exception(); > > - return Py_BuildValue("{s:i,s:i,s:s,s:s,s:i,s:s,s:s,s:s,s:s,s:s,s:s}", > + return > Py_BuildValue("{s:i,s:i,s:s,s:s,s:i,s:s,s:s,s:s,s:s,s:s,s:s,s:s}", > "xen_major", xen_version >> 16, > "xen_minor", (xen_version & 0xffff), > "xen_extra", xen_extra, > @@ -1167,6 +1171,7 @@ > "xen_pagesize", xen_pagesize, > "platform_params", str, > "xen_changeset", xen_chgset, > + "xen_commandline", xen_commandline, > "cc_compiler", xen_cc.compiler, > "cc_compile_by", xen_cc.compile_by, > "cc_compile_domain", xen_cc.compile_domain, > diff -r 2e802c0a5c08 -r b7c94d5e638f tools/python/xen/xend/XendNode.py > --- a/tools/python/xen/xend/XendNode.py Wed Jun 17 15:32:27 2009 +0100 > +++ b/tools/python/xen/xend/XendNode.py Wed Jun 17 16:31:38 2009 +0100 > @@ -91,6 +91,7 @@ > # is directly exposed via XenAPI > self.other_config["xen_pagesize"] = > self.xeninfo_dict()["xen_pagesize"] self.other_config["platform_params"] = > self.xeninfo_dict()["platform_params"] + > self.other_config["xen_commandline"] = > self.xeninfo_dict()["xen_commandline"] > > # load CPU UUIDs > saved_cpus = self.state_store.load_state('cpu') > @@ -612,7 +613,8 @@ > "cc_compile_by": xeninfo_dict["cc_compile_by"], > "cc_compile_domain": xeninfo_dict["cc_compile_domain"], > "cc_compile_date": xeninfo_dict["cc_compile_date"], > - "xen_changeset": xeninfo_dict["xen_changeset"] > + "xen_changeset": xeninfo_dict["xen_changeset"], > + "xen_commandline": xeninfo_dict["xen_commandline"] > }) > > return info > @@ -888,6 +890,7 @@ > 'xen_pagesize', > 'platform_params', > 'xen_changeset', > + 'xen_commandline', > 'cc_compiler', > 'cc_compile_by', > 'cc_compile_domain', > diff -r 2e802c0a5c08 -r b7c94d5e638f tools/python/xen/xm/main.py > --- a/tools/python/xen/xm/main.py Wed Jun 17 15:32:27 2009 +0100 > +++ b/tools/python/xen/xm/main.py Wed Jun 17 16:31:38 2009 +0100 > @@ -1757,6 +1757,7 @@ > "xen_scheduler": getVal(["sched_policy"]), > "xen_pagesize": getVal(["other_config", "xen_pagesize"]), > "platform_params": getVal(["other_config", > "platform_params"]), + "xen_commandline": > getVal(["other_config", "xen_commandline"]), "xen_changeset": > getVal(["software_version", "xen_changeset"]), "cc_compiler": > getVal(["software_version", "cc_compiler"]), "cc_compile_by": > getVal(["software_version", "cc_compile_by"]), diff -r 2e802c0a5c08 -r > b7c94d5e638f xen/common/compat/kernel.c > --- a/xen/common/compat/kernel.c Wed Jun 17 15:32:27 2009 +0100 > +++ b/xen/common/compat/kernel.c Wed Jun 17 16:31:38 2009 +0100 > @@ -14,6 +14,8 @@ > #include <compat/xen.h> > #include <compat/nmi.h> > #include <compat/version.h> > + > +extern xen_commandline_t saved_cmdline; > > #define xen_extraversion compat_extraversion > #define xen_extraversion_t compat_extraversion_t > diff -r 2e802c0a5c08 -r b7c94d5e638f xen/common/kernel.c > --- a/xen/common/kernel.c Wed Jun 17 15:32:27 2009 +0100 > +++ b/xen/common/kernel.c Wed Jun 17 16:31:38 2009 +0100 > @@ -24,12 +24,16 @@ > > int tainted; > > +xen_commandline_t saved_cmdline; > + > void cmdline_parse(char *cmdline) > { > char opt[100], *optval, *optkey, *q; > const char *p = cmdline; > struct kernel_param *param; > int bool_assert; > + > + safe_strcpy(saved_cmdline, cmdline); > > if ( p == NULL ) > return; > @@ -246,7 +250,14 @@ > ARRAY_SIZE(current->domain->handle)) ) > return -EFAULT; > return 0; > - } > + } > + > + case XENVER_commandline: > + { > + if ( copy_to_guest(arg, saved_cmdline, ARRAY_SIZE(saved_cmdline)) > ) + return -EFAULT; > + return 0; > + } > } > > return -ENOSYS; > diff -r 2e802c0a5c08 -r b7c94d5e638f xen/include/public/version.h > --- a/xen/include/public/version.h Wed Jun 17 15:32:27 2009 +0100 > +++ b/xen/include/public/version.h Wed Jun 17 16:31:38 2009 +0100 > @@ -78,6 +78,9 @@ > /* arg == xen_domain_handle_t. */ > #define XENVER_guest_handle 8 > > +#define XENVER_commandline 9 > +typedef char xen_commandline_t[1024]; > + > #endif /* __XEN_PUBLIC_VERSION_H__ */ > > /* > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel -- ---to satisfy European Law for business letters: Advanced Micro Devices GmbH Karl-Hammerschmidt-Str. 34, 85609 Dornach b. Muenchen Geschaeftsfuehrer: Thomas M. McCoy, Giuliano Meroni Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen Registergericht Muenchen, HRB Nr. 43632 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |