[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] 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>

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


 


Rackspace

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