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
|