From: Tomasz Wroblewski <tomasz.wroblewski@citrix.com>
To: xen-devel@lists.xensource.com
Subject: [PATCH] libxenlight: add console command
Date: Fri, 27 Nov 2009 15:31:53 +0000 [thread overview]
Message-ID: <1259335913.3867.28.camel@alva> (raw)
[-- Attachment #1: Type: text/plain, Size: 128 bytes --]
Resending as attachment because of bad line endings apparently
Signed-off-by: Tomasz Wroblewski <tomasz.wroblewski@citrix.com>
[-- Attachment #2: add_console_cmd --]
[-- Type: text/x-patch, Size: 3785 bytes --]
diff -r d7d77bace286 tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Fri Nov 27 10:13:42 2009 +0000
+++ b/tools/libxl/libxl.c Fri Nov 27 10:18:18 2009 +0000
@@ -468,6 +468,24 @@
if (rc < 0) {
XL_LOG_ERRNOVAL(ctx, XL_LOG_ERROR, rc, "xc_domain_destroy failed for %d", domid);
return -1;
+ }
+ return 0;
+}
+
+int libxl_console_attach(struct libxl_ctx *ctx, uint32_t domid, int cons_num)
+{
+ struct stat st;
+ const char *XENCONSOLE = "/usr/lib/xen/bin/xenconsole";
+ char *cmd = NULL;
+
+ if (stat(XENCONSOLE, &st) != 0) {
+ XL_LOG(ctx, XL_LOG_ERROR, "could not access %s", XENCONSOLE);
+ return ERROR_FAIL;
+ }
+
+ cmd = libxl_sprintf(ctx, "%s %d --num %d", XENCONSOLE, domid, cons_num);
+ if (system(cmd) != 0) {
+ return ERROR_FAIL;
}
return 0;
}
diff -r d7d77bace286 tools/libxl/libxl.h
--- a/tools/libxl/libxl.h Fri Nov 27 10:13:42 2009 +0000
+++ b/tools/libxl/libxl.h Fri Nov 27 10:18:18 2009 +0000
@@ -266,6 +266,8 @@
int libxl_domain_pause(struct libxl_ctx *ctx, uint32_t domid);
int libxl_domain_unpause(struct libxl_ctx *ctx, uint32_t domid);
+int libxl_console_attach(struct libxl_ctx *ctx, uint32_t domid, int cons_num);
+
struct libxl_dominfo * libxl_domain_list(struct libxl_ctx *ctx, int *nb_domain);
xc_dominfo_t * libxl_domain_infolist(struct libxl_ctx *ctx, int *nb_domain);
diff -r d7d77bace286 tools/libxl/xl.c
--- a/tools/libxl/xl.c Fri Nov 27 10:13:42 2009 +0000
+++ b/tools/libxl/xl.c Fri Nov 27 10:18:18 2009 +0000
@@ -715,6 +715,7 @@
printf(" pci-list list pass-through pci devices for a domain\n\n");
printf(" pause pause execution of a domain\n\n");
printf(" unpause unpause a paused domain\n\n");
+ printf(" console attach to domain's console\n\n");
} else if(!strcmp(command, "create")) {
printf("Usage: xl create <ConfigFile> [options] [vars]\n\n");
printf("Create a domain based on <ConfigFile>.\n\n");
@@ -742,7 +743,56 @@
} else if(!strcmp(command, "destroy")) {
printf("Usage: xl destroy <Domain>\n\n");
printf("Terminate a domain immediately.\n\n");
+ } else if (!strcmp(command, "console")) {
+ printf("Usage: xl console <Domain>\n\n");
+ printf("Attach to domain's console.\n\n");
}
+}
+
+void console(char *p, int cons_num)
+{
+ struct libxl_ctx ctx;
+ uint32_t domid;
+
+ libxl_ctx_init(&ctx);
+ libxl_ctx_set_log(&ctx, log_callback, NULL);
+
+ if (libxl_param_to_domid(&ctx, p, &domid) < 0) {
+ fprintf(stderr, "%s is an invalid domain identifier\n", p);
+ exit(2);
+ }
+ libxl_console_attach(&ctx, domid, cons_num);
+}
+
+int main_console(int argc, char **argv)
+{
+ int opt = 0, cons_num = 0;
+ char *p = NULL;
+
+ while ((opt = getopt(argc, argv, "hn:")) != -1) {
+ switch (opt) {
+ case 'h':
+ help("console");
+ exit(0);
+ case 'n':
+ if (optarg) {
+ cons_num = strtol(optarg, NULL, 10);
+ }
+ break;
+ default:
+ fprintf(stderr, "option not supported\n");
+ break;
+ }
+ }
+ if (optind >= argc) {
+ help("console");
+ exit(2);
+ }
+
+ p = argv[optind];
+
+ console(p, cons_num);
+ exit(0);
}
void pcilist(char *dom)
@@ -1121,6 +1171,8 @@
main_pause(argc - 1, argv + 1);
} else if (!strcmp(argv[1], "unpause")) {
main_unpause(argc - 1, argv + 1);
+ } else if (!strcmp(argv[1], "console")) {
+ main_console(argc - 1, argv + 1);
} else if (!strcmp(argv[1], "help")) {
if (argc > 2)
help(argv[2]);
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
next reply other threads:[~2009-11-27 15:31 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-27 15:31 Tomasz Wroblewski [this message]
-- strict thread matches above, loose matches on Subject: below --
2009-11-27 10:40 [PATCH] libxenlight: add console command Tomasz Wroblewski
2009-11-27 11:35 ` Stefano Stabellini
2009-11-27 15:18 ` Stefano Stabellini
2009-12-01 6:47 ` Vincent Hanquez
2009-12-01 13:41 ` Stefano Stabellini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1259335913.3867.28.camel@alva \
--to=tomasz.wroblewski@citrix.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.