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] Re: [PATCH 2 of 5] xenconsole support for multiple consoles

To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] Re: [PATCH 2 of 5] xenconsole support for multiple consoles
From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Date: Thu, 11 Jun 2009 16:10:53 +0100
Delivery-date: Thu, 11 Jun 2009 08:16:37 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <4A311DCB.10006@xxxxxxxxxxxxx>
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: <4A311DCB.10006@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 2.0.0.14 (X11/20080505)
Stefano Stabellini wrote:

> This patch adds a new command line argument to xenconsole to specify to
> which console to connect to in case a domain has more than one.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> 



Sorry I sent two copies of the third patch.
This is the correct xenconsole patch.

---

diff -r 5f407cb2fc00 tools/console/client/main.c
--- a/tools/console/client/main.c       Thu Jun 11 15:19:43 2009 +0100
+++ b/tools/console/client/main.c       Thu Jun 11 15:24:27 2009 +0100
@@ -71,6 +71,7 @@
               "Attaches to a virtual domain console\n"
               "\n"
               "  -h, --help       display this help and exit\n"
+              "  -n, --num N      use console number N\n"
               , program);
 }
 
@@ -255,15 +256,17 @@
 {
        struct termios attr;
        int domid;
-       char *sopt = "h";
+       char *sopt = "hn:";
        int ch;
+       unsigned int num = 0;
        int opt_ind=0;
        struct option lopt[] = {
+               { "num",     1, 0, 'n' },
                { "help",    0, 0, 'h' },
                { 0 },
 
        };
-       char *path;
+       char *dom_path = NULL, *path = NULL;
        int spty, xsfd;
        struct xs_handle *xs;
        char *end;
@@ -274,14 +277,15 @@
                        usage(argv[0]);
                        exit(0);
                        break;
+               case 'n':
+                       num = atoi(optarg);
+                       break;
+               default:
+                       fprintf(stderr, "Invalid argument\n");
+                       fprintf(stderr, "Try `%s --help' for more 
information.\n", 
+                                       argv[0]);
+                       exit(EINVAL);
                }
-       }
-       
-       if ((argc - optind) != 1) {
-               fprintf(stderr, "Invalid number of arguments\n");
-               fprintf(stderr, "Try `%s --help' for more information.\n", 
-                       argv[0]);
-               exit(EINVAL);
        }
        
        domid = strtol(argv[optind], &end, 10);
@@ -299,13 +303,13 @@
 
        signal(SIGTERM, sighandler);
 
-       path = xs_get_domain_path(xs, domid);
+       dom_path = xs_get_domain_path(xs, domid);
+       if (dom_path == NULL)
+               err(errno, "xs_get_domain_path()");
+       path = malloc(strlen(dom_path) + strlen("/serial/0/tty") + 3);
        if (path == NULL)
-               err(errno, "xs_get_domain_path()");
-       path = realloc(path, strlen(path) + strlen("/console/tty") + 1);
-       if (path == NULL)
-               err(ENOMEM, "realloc");
-       strcat(path, "/console/tty");
+               err(ENOMEM, "malloc");
+       snprintf(path, strlen(dom_path) + strlen("/serial/0/tty") + 2, 
"%s/serial/%d/tty", dom_path, num);
 
        /* FIXME consoled currently does not assume domain-0 doesn't have a
           console which is good when we break domain-0 up.  To keep us
@@ -336,5 +340,6 @@
        restore_term(STDIN_FILENO, &attr);
 
        free(path);
+       free(dom_path);
        return 0;
  }
diff -r 5f407cb2fc00 tools/python/xen/xm/console.py
--- a/tools/python/xen/xm/console.py    Thu Jun 11 15:19:43 2009 +0100
+++ b/tools/python/xen/xm/console.py    Thu Jun 11 15:24:27 2009 +0100
@@ -24,8 +24,8 @@
 
 XENCONSOLE = "xenconsole"
 
-def execConsole(domid):
-    xen.util.auxbin.execute(XENCONSOLE, [str(domid)])
+def execConsole(domid, num = 0):
+    xen.util.auxbin.execute(XENCONSOLE, [str(domid), "--num", str(num)])
 
 
 class OurXenstoreConnection:
diff -r 5f407cb2fc00 tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py       Thu Jun 11 15:19:43 2009 +0100
+++ b/tools/python/xen/xm/main.py       Thu Jun 11 15:24:27 2009 +0100
@@ -1779,12 +1779,13 @@
                 print "%-23s:" % x[0], x[1]
 
 def xm_console(args):
-    arg_check(args, "console", 1, 2)
+    arg_check(args, "console", 1, 3)
 
+    num = 0
     quiet = False;
 
     try:
-        (options, params) = getopt.gnu_getopt(args, 'q', ['quiet'])
+        (options, params) = getopt.gnu_getopt(args, 'qn:', ['quiet', 'num'])
     except getopt.GetoptError, opterr:
         err(opterr)
         usage('console')
@@ -1792,6 +1793,8 @@
     for (k, v) in options:
         if k in ['-q', '--quiet']:
             quiet = True
+       elif k in ['-n', '--num']:
+           num = int(v[0])
         else:
             assert False
 
@@ -1819,7 +1822,7 @@
         else:
             raise xmlrpclib.Fault(0, "Domain '%s' is not started" % dom)
 
-    console.execConsole(domid)
+    console.execConsole(domid, num)
 
 
 def domain_name_to_domid(domain_name):

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

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