[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] [mq]: patch_libxl_get_console_tty.diff



diff -r 9dda0efd8ce1 -r 4a6043e1434a tools/libxl/libxl.c
--- a/tools/libxl/libxl.c       Fri Apr 27 17:57:55 2012 +0200
+++ b/tools/libxl/libxl.c       Sat Apr 28 22:36:56 2012 +0800
@@ -15,6 +15,8 @@
  */
 
 #include "libxl_osdeps.h"
+//#include "libxl_osdeps.h"
+//#include "libxl_osdeps.h"
 
 #include "libxl_internal.h"
 
@@ -1173,6 +1175,29 @@ int libxl_primary_console_exec(libxl_ctx
     return rc;
 }
 
+int libxl_get_console_tty(libxl_ctx *ctx, uint32_t domid, char **path)
+{
+    GC_INIT(ctx);
+    char *dom_path = 0;
+    char *tty_path = 0, *os_type_path = 0, *vm_uuid_path = 0;
+    char *tty = 0, *os_type = 0, *vm_uuid = 0; 
+
+    dom_path = libxl__xs_get_dompath(gc, domid);
+    vm_uuid_path = libxl__sprintf(gc, "%s/vm", dom_path);
+    vm_uuid = libxl__xs_read(gc, XBT_NULL, vm_uuid_path);
+    os_type_path = libxl__sprintf(gc, "%s/image/ostype", vm_uuid);
+    os_type = libxl__xs_read(gc, XBT_NULL, os_type_path);
+    if ( !strcmp("hvm", os_type)) {
+        tty_path = libxl__sprintf(gc, "%s/serial/0/tty", dom_path);
+    } else {
+        tty_path = libxl__sprintf(gc, "%s/console/tty", dom_path);
+    } 
+    tty = libxl__xs_read(gc, XBT_NULL, tty_path);
+    *path = strdup(tty);
+    GC_FREE;
+    return 0;
+}
+
 int libxl_vncviewer_exec(libxl_ctx *ctx, uint32_t domid, int autopass)
 {
     GC_INIT(ctx);
diff -r 9dda0efd8ce1 -r 4a6043e1434a tools/libxl/libxl.h
--- a/tools/libxl/libxl.h       Fri Apr 27 17:57:55 2012 +0200
+++ b/tools/libxl/libxl.h       Sat Apr 28 22:36:56 2012 +0800
@@ -534,6 +534,10 @@ int libxl_console_exec(libxl_ctx *ctx, u
  * case of HVM guests, and before libxl_run_bootloader in case of PV
  * guests using pygrub. */
 int libxl_primary_console_exec(libxl_ctx *ctx, uint32_t domid_vm);
+/* libxl_get_console_tty get the tty path from xenstore according to the 
+ * domain id. 
+ */
+int libxl_get_console_tty(libxl_ctx *ctx, uint32_t domid, char **path);
 
 /* May be called with info_r == NULL to check for domain's existance */
 int libxl_domain_info(libxl_ctx*, libxl_dominfo *info_r,

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.