[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.