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

[Xen-changelog] [xen-unstable] Allow tools to see the hypervisor command line.



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1245316845 -3600
# Node ID 407e2e7dca5b1b3f528959246b1efbd4e243c119
# Parent  c0d2838fc10f8bb0b004cee3fe7e2b41ff4e2f0e
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>
---
 tools/python/xen/lowlevel/xc/xc.c |    7 ++++++-
 tools/python/xen/xend/XendNode.py |    5 ++++-
 tools/python/xen/xm/main.py       |    1 +
 xen/common/compat/kernel.c        |    2 ++
 xen/common/kernel.c               |   13 ++++++++++++-
 xen/include/public/version.h      |    3 +++
 6 files changed, 28 insertions(+), 3 deletions(-)

diff -r c0d2838fc10f -r 407e2e7dca5b tools/python/xen/lowlevel/xc/xc.c
--- a/tools/python/xen/lowlevel/xc/xc.c Thu Jun 18 10:20:17 2009 +0100
+++ b/tools/python/xen/lowlevel/xc/xc.c Thu Jun 18 10:20:45 2009 +0100
@@ -1132,6 +1132,7 @@ static PyObject *pyxc_xeninfo(XcObject *
     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 @@ static PyObject *pyxc_xeninfo(XcObject *
     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 @@ static PyObject *pyxc_xeninfo(XcObject *
                          "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 c0d2838fc10f -r 407e2e7dca5b tools/python/xen/xend/XendNode.py
--- a/tools/python/xen/xend/XendNode.py Thu Jun 18 10:20:17 2009 +0100
+++ b/tools/python/xen/xend/XendNode.py Thu Jun 18 10:20:45 2009 +0100
@@ -91,6 +91,7 @@ class XendNode:
         # 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 @@ class XendNode:
             "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 @@ class XendNode:
                       'xen_pagesize',
                       'platform_params',
                       'xen_changeset',
+                      'xen_commandline',
                       'cc_compiler',
                       'cc_compile_by',
                       'cc_compile_domain',
diff -r c0d2838fc10f -r 407e2e7dca5b tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py       Thu Jun 18 10:20:17 2009 +0100
+++ b/tools/python/xen/xm/main.py       Thu Jun 18 10:20:45 2009 +0100
@@ -1757,6 +1757,7 @@ def xm_info(args):
             "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 c0d2838fc10f -r 407e2e7dca5b xen/common/compat/kernel.c
--- a/xen/common/compat/kernel.c        Thu Jun 18 10:20:17 2009 +0100
+++ b/xen/common/compat/kernel.c        Thu Jun 18 10:20:45 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 c0d2838fc10f -r 407e2e7dca5b xen/common/kernel.c
--- a/xen/common/kernel.c       Thu Jun 18 10:20:17 2009 +0100
+++ b/xen/common/kernel.c       Thu Jun 18 10:20:45 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 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDL
                            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 c0d2838fc10f -r 407e2e7dca5b xen/include/public/version.h
--- a/xen/include/public/version.h      Thu Jun 18 10:20:17 2009 +0100
+++ b/xen/include/public/version.h      Thu Jun 18 10:20:45 2009 +0100
@@ -78,6 +78,9 @@ typedef struct xen_feature_info xen_feat
 /* 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-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

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