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

[Xen-devel] [PATCH RFC 3/5] Grant table for console, xenstore pages



This patch modifies the console daemon to use xc_gnttab_map_grant_ref
instead of xc_map_foreign_range.

Make sure you have linux-2.6.18-xen.hg changeset 600:1bd3dbfdaf0f before
running this.

Signed-off-by: Diego Ongaro <diego.ongaro@xxxxxxxxxx>
---
diff -r e0be727aa133 tools/console/daemon/io.c
--- a/tools/console/daemon/io.c Thu Jul 10 19:30:51 2008 +0100
+++ b/tools/console/daemon/io.c Thu Jul 10 19:50:47 2008 +0100
@@ -25,6 +25,7 @@
 #include <xs.h>
 #include <xen/io/console.h>
 #include <xenctrl.h>
+#include <xen/grant_table.h>
 
 #include <stdlib.h>
 #include <errno.h>
@@ -540,10 +541,9 @@
        if (ring_ref != dom->ring_ref) {
                if (dom->interface != NULL)
                        munmap(dom->interface, getpagesize());
-               dom->interface = xc_map_foreign_range(
-                       xc, dom->domid, getpagesize(),
-                       PROT_READ|PROT_WRITE,
-                       (unsigned long)ring_ref);
+               dom->interface = xc_gnttab_map_grant_ref(xcg, dom->domid,
+                                                        
GNTTAB_RESERVED_CONSOLE,
+                                                        PROT_READ|PROT_WRITE);
                if (dom->interface == NULL) {
                        err = EINVAL;
                        goto out;
diff -r e0be727aa133 tools/console/daemon/utils.c
--- a/tools/console/daemon/utils.c      Thu Jul 10 19:30:51 2008 +0100
+++ b/tools/console/daemon/utils.c      Thu Jul 10 19:50:47 2008 +0100
@@ -37,8 +37,9 @@
 #include "xenctrl.h"
 #include "utils.h"
 
-struct xs_handle *xs;
-int xc;
+struct xs_handle *xs = NULL;
+int xc = -1;
+int xcg = -1;
 
 static void child_exit(int sig)
 {
@@ -122,6 +123,12 @@
                goto out;
        }
 
+       xcg = xc_gnttab_open();
+       if (xcg == -1) {
+               dolog(LOG_ERR, "Failed to open gnttab (%m)");
+               goto out;
+       }
+
        if (!xs_watch(xs, "@introduceDomain", "domlist")) {
                dolog(LOG_ERR, "xenstore watch on @introduceDomain fails.");
                goto out;
@@ -139,6 +146,8 @@
                xs_daemon_close(xs);
        if (xc != -1)
                xc_interface_close(xc);
+       if (xcg != -1)
+               xc_gnttab_close(xcg);
        return false;
 }
 
diff -r e0be727aa133 tools/console/daemon/utils.h
--- a/tools/console/daemon/utils.h      Thu Jul 10 19:30:51 2008 +0100
+++ b/tools/console/daemon/utils.h      Thu Jul 10 19:50:47 2008 +0100
@@ -32,6 +32,7 @@
 
 extern struct xs_handle *xs;
 extern int xc;
+extern int xcg;
 
 #if 1
 #define dolog(val, fmt, ...) do {                              \

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


 


Rackspace

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