WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] Allow tools to see the hypervisor command line.

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: Re: [Xen-devel] Allow tools to see the hypervisor command line.
From: Christoph Egger <Christoph.Egger@xxxxxxx>
Date: Wed, 17 Jun 2009 17:42:13 +0200
Cc: Ian Campbell <Ian.Campbell@xxxxxxxxxx>, Keir Fraser <Keir.Fraser@xxxxxxxxxxxxx>
Delivery-date: Wed, 17 Jun 2009 08:43:14 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <1245252745.5862.145.camel@xxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <1245252745.5862.145.camel@xxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: KMail/1.9.7
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

<Prev in Thread] Current Thread [Next in Thread>