[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Allow tools to see the hypervisor command line.
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1245316845 -3600 # Node ID 407e2e7dca5b1b3f528959246b1efbd4e243c119 # Parent c0d2838fc10f8bb0b004cee3fe7e2b41ff4e2f0e 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> --- tools/python/xen/lowlevel/xc/xc.c | 7 ++++++- tools/python/xen/xend/XendNode.py | 5 ++++- tools/python/xen/xm/main.py | 1 + xen/common/compat/kernel.c | 2 ++ xen/common/kernel.c | 13 ++++++++++++- xen/include/public/version.h | 3 +++ 6 files changed, 28 insertions(+), 3 deletions(-) diff -r c0d2838fc10f -r 407e2e7dca5b tools/python/xen/lowlevel/xc/xc.c --- a/tools/python/xen/lowlevel/xc/xc.c Thu Jun 18 10:20:17 2009 +0100 +++ b/tools/python/xen/lowlevel/xc/xc.c Thu Jun 18 10:20:45 2009 +0100 @@ -1132,6 +1132,7 @@ static PyObject *pyxc_xeninfo(XcObject * 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 @@ static PyObject *pyxc_xeninfo(XcObject * 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 @@ static PyObject *pyxc_xeninfo(XcObject * "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 c0d2838fc10f -r 407e2e7dca5b tools/python/xen/xend/XendNode.py --- a/tools/python/xen/xend/XendNode.py Thu Jun 18 10:20:17 2009 +0100 +++ b/tools/python/xen/xend/XendNode.py Thu Jun 18 10:20:45 2009 +0100 @@ -91,6 +91,7 @@ class XendNode: # 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 @@ class XendNode: "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 @@ class XendNode: 'xen_pagesize', 'platform_params', 'xen_changeset', + 'xen_commandline', 'cc_compiler', 'cc_compile_by', 'cc_compile_domain', diff -r c0d2838fc10f -r 407e2e7dca5b tools/python/xen/xm/main.py --- a/tools/python/xen/xm/main.py Thu Jun 18 10:20:17 2009 +0100 +++ b/tools/python/xen/xm/main.py Thu Jun 18 10:20:45 2009 +0100 @@ -1757,6 +1757,7 @@ def xm_info(args): "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 c0d2838fc10f -r 407e2e7dca5b xen/common/compat/kernel.c --- a/xen/common/compat/kernel.c Thu Jun 18 10:20:17 2009 +0100 +++ b/xen/common/compat/kernel.c Thu Jun 18 10:20:45 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 c0d2838fc10f -r 407e2e7dca5b xen/common/kernel.c --- a/xen/common/kernel.c Thu Jun 18 10:20:17 2009 +0100 +++ b/xen/common/kernel.c Thu Jun 18 10:20:45 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 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDL 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 c0d2838fc10f -r 407e2e7dca5b xen/include/public/version.h --- a/xen/include/public/version.h Thu Jun 18 10:20:17 2009 +0100 +++ b/xen/include/public/version.h Thu Jun 18 10:20:45 2009 +0100 @@ -78,6 +78,9 @@ typedef struct xen_feature_info xen_feat /* 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-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |