[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Allow tools to see the hypervisor command line.
This is useful from tools in the same way /proc/cmdline is useful for the domain 0 kernel. 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |