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

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

To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>, Keir Fraser <Keir.Fraser@xxxxxxxxxxxxx>
Subject: [Xen-devel] Allow tools to see the hypervisor command line.
From: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
Date: Wed, 17 Jun 2009 16:32:25 +0100
Cc:
Delivery-date: Wed, 17 Jun 2009 08:32:54 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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>
Organization: Citrix Systems, Inc.
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
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

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