Hi Stefano,
Stefano Stabellini wrote:
> Hi all,
> this is a non comprehensive list of missing features in libxenlight
> and\or xl:
>
...
>
> - -c option to xl create;
>
How about the following patch.
* I made it base changeset 21236:9a1d7caa2024.
Regards
Yu Zhiguo
--------------------------------------------------------------
Add option '-c' for 'xl create'
* -c Connect to the console after the domain is created.
Signed-off-by: Yu Zhiguo <yuzg@xxxxxxxxxxxxxx>
diff -r 9a1d7caa2024 -r 880b6a219189 tools/libxl/xl.c
--- a/tools/libxl/xl.c Mon Apr 26 12:13:23 2010 +0100
+++ b/tools/libxl/xl.c Fri Apr 30 17:58:25 2010 +0800
@@ -976,7 +976,7 @@
libxl_domain_unpause(&ctx, domid);
if (!daemonize)
- return 0; /* caller gets success in parent */
+ return domid; /* caller gets success in parent */
if (need_daemon) {
char *fullname, *name;
@@ -1000,7 +1000,7 @@
"daemonizing child", child1, status);
return ERROR_FAIL;
}
- return 0; /* caller gets success in parent */
+ return domid; /* caller gets success in parent */
}
rc = libxl_ctx_postfork(&ctx);
@@ -1113,6 +1113,7 @@
printf("Options:\n\n");
printf("-h Print this help.\n");
printf("-p Leave the domain paused after it is
created.\n");
+ printf("-c Connect to the console after the domain
is created.\n");
printf("-d Enable debug messages.\n");
printf("-e Do not wait in the background for the
death of the domain.\n");
} else if(!strcmp(command, "list")) {
@@ -1937,7 +1938,7 @@
0 /* no config file, use incoming */,
"incoming migration stream", 1,
0, &migration_domname);
- if (rc) {
+ if (rc < 0) {
fprintf(stderr, "migration target: Domain creation failed"
" (code %d).\n", rc);
exit(-rc);
@@ -2047,7 +2048,10 @@
}
rc = create_domain(debug, daemonize, config_file,
checkpoint_file, paused, -1, 0);
- exit(-rc);
+ if (rc >= 0)
+ exit(0);
+ else
+ exit(-rc);
}
int main_migrate_receive(int argc, char **argv)
@@ -2291,14 +2295,18 @@
int main_create(int argc, char **argv)
{
char *filename = NULL;
- int paused = 0, debug = 0, daemonize = 1;
+ char dom[10]; /* long enough */
+ int paused = 0, debug = 0, daemonize = 1, console_autoconnect = 0;
int opt, rc;
- while ((opt = getopt(argc, argv, "hdep")) != -1) {
+ while ((opt = getopt(argc, argv, "hpcde")) != -1) {
switch (opt) {
case 'p':
paused = 1;
break;
+ case 'c':
+ console_autoconnect = 1;
+ break;
case 'd':
debug = 1;
break;
@@ -2322,7 +2330,14 @@
filename = argv[optind];
rc = create_domain(debug, daemonize, filename, NULL, paused,
-1, 0);
- exit(-rc);
+ if (rc > 0) {
+ if (console_autoconnect) {
+ snprintf(dom, sizeof(dom), "%d", rc);
+ console(dom, 0);
+ }
+ exit(0);
+ } else
+ exit(-rc);
}
void button_press(char *p, char *b)
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|