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
|