All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] stubdom: read the command line
@ 2008-03-11 17:42 Samuel Thibault
  0 siblings, 0 replies; only message in thread
From: Samuel Thibault @ 2008-03-11 17:42 UTC (permalink / raw)
  To: xen-devel

stubdom: add support for reading the command line from the config file,
and merge the dmargs with it in the case of qemu.

Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>

diff -r 73ec21ad5dc7 extras/mini-os/main.c
--- a/extras/mini-os/main.c	Tue Mar 11 16:01:04 2008 +0000
+++ b/extras/mini-os/main.c	Tue Mar 11 17:35:14 2008 +0000
@@ -42,6 +42,9 @@ static void call_main(void *p)
 static void call_main(void *p)
 {
     char *args, /**path,*/ *msg, *c;
+#ifdef CONFIG_QEMU
+    char *domargs;
+#endif
     int argc;
     char **argv;
     char *envp[] = { NULL };
@@ -63,14 +66,12 @@ static void call_main(void *p)
     }
 
     /* Fetch argc, argv from XenStore */
-    char domid_s[10];
     int domid;
     domid = xenbus_read_integer("target");
     if (domid == -1) {
         printk("Couldn't read target\n");
         do_exit();
     }
-    snprintf(domid_s, sizeof(domid_s), "%d", domid);
 
     snprintf(path, sizeof(path), "/local/domain/%d/vm", domid);
     msg = xenbus_read(XBT_NIL, path, &vm);
@@ -78,59 +79,64 @@ static void call_main(void *p)
         printk("Couldn't read vm path\n");
         do_exit();
     }
-    printk("vm is at %s\n", vm);
-#else
+    printk("dom vm is at %s\n", vm);
+
+    snprintf(path, sizeof(path), "%s/image/dmargs", vm);
+    free(vm);
+    msg = xenbus_read(XBT_NIL, path, &domargs);
+
+    if (msg) {
+        printk("Couldn't get stubdom args: %s\n", msg);
+        domargs = strdup("");
+    }
+#endif
+
     msg = xenbus_read(XBT_NIL, "vm", &vm);
     if (msg) {
         printk("Couldn't read vm path\n");
         do_exit();
     }
-#endif
 
-    snprintf(path, sizeof(path), "%s/image/dmargs", vm);
+    printk("my vm is at %s\n", vm);
+    snprintf(path, sizeof(path), "%s/image/cmdline", vm);
     free(vm);
     msg = xenbus_read(XBT_NIL, path, &args);
 
     if (msg) {
-        printk("Couldn't get stubdom args: %s\n", msg);
+        printk("Couldn't get my args: %s\n", msg);
         args = strdup("");
     }
 
     argc = 1;
+
+#define PARSE_ARGS(ARGS,START,END) \
+    c = ARGS; \
+    while (*c) { \
+	if (*c != ' ') { \
+	    START; \
+	    while (*c && *c != ' ') \
+		c++; \
+	} else { \
+            END; \
+	    while (*c == ' ') \
+		c++; \
+	} \
+    }
+
+    PARSE_ARGS(args, argc++, );
 #ifdef CONFIG_QEMU
-    argc += 2;
+    PARSE_ARGS(domargs, argc++, );
 #endif
-    c = args;
-    while (*c) {
-	if (*c != ' ') {
-	    argc++;
-	    while (*c && *c != ' ')
-		c++;
-	} else {
-	    while (*c == ' ')
-		c++;
-	}
-    }
+
     argv = alloca((argc + 1) * sizeof(char *));
     argv[0] = "main";
     argc = 1;
+
+    PARSE_ARGS(args, argv[argc++] = c, *c++ = 0)
 #ifdef CONFIG_QEMU
-    argv[1] = "-d";
-    argv[2] = domid_s;
-    argc += 2;
+    PARSE_ARGS(domargs, argv[argc++] = c, *c++ = 0)
 #endif
-    c = args;
-    while (*c) {
-	if (*c != ' ') {
-	    argv[argc++] = c;
-	    while (*c && *c != ' ')
-		c++;
-	} else {
-	    *c++ = 0;
-	    while (*c == ' ')
-		c++;
-	}
-    }
+
     argv[argc] = NULL;
 
     for (i = 0; i < argc; i++)
diff -r 73ec21ad5dc7 tools/python/xen/xend/image.py
--- a/tools/python/xen/xend/image.py	Tue Mar 11 16:01:04 2008 +0000
+++ b/tools/python/xen/xend/image.py	Tue Mar 11 17:35:14 2008 +0000
@@ -90,6 +90,7 @@ class ImageHandler:
                         ("image/kernel", self.kernel),
                         ("image/cmdline", self.cmdline),
                         ("image/ramdisk", self.ramdisk))
+        self.vm.permissionsVm("image/cmdline", { 'dom': self.vm.getDomid(), 'read': True } )
 
         self.device_model = vmConfig['platform'].get('device_model')

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-03-11 17:42 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-11 17:42 [PATCH] stubdom: read the command line Samuel Thibault

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.