[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] tools/console: use xenforeigmemory to map console ring
commit e8b42a4e8810844ccffd2eab072921b1e4e2ed79 Author: Roger Pau Monne <roger.pau@xxxxxxxxxx> AuthorDate: Wed Sep 22 10:21:18 2021 +0200 Commit: Ian Jackson <iwj@xxxxxxxxxxxxxx> CommitDate: Mon Oct 11 12:05:38 2021 +0100 tools/console: use xenforeigmemory to map console ring This patch replaces the usage of xc_map_foreign_range with xenforeignmemory_map from the stable xenforeignmemory library. Note there are still other uses of libxc functions which prevents removing the dependency. No functional change intended. Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Reviewed-by: Ian Jackson <iwj@xxxxxxxxxxxxxx> --- tools/console/Makefile | 4 ++-- tools/console/daemon/io.c | 25 ++++++++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/tools/console/Makefile b/tools/console/Makefile index 84796eac8f..3f4cddab03 100644 --- a/tools/console/Makefile +++ b/tools/console/Makefile @@ -29,9 +29,9 @@ clean: distclean: clean daemon/main.o: daemon/_paths.h -daemon/io.o: CFLAGS += $(CFLAGS_libxenevtchn) $(CFLAGS_libxengnttab) $(CONSOLE_CFLAGS-y) +daemon/io.o: CFLAGS += $(CFLAGS_libxenevtchn) $(CFLAGS_libxengnttab) $(CFLAGS_libxenforeignmemory) $(CONSOLE_CFLAGS-y) xenconsoled: $(patsubst %.c,%.o,$(wildcard daemon/*.c)) - $(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS) $(LDLIBS_libxenevtchn) $(LDLIBS_libxengnttab) $(LDLIBS_xenconsoled) $(APPEND_LDFLAGS) + $(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS) $(LDLIBS_libxenevtchn) $(LDLIBS_libxengnttab) $(LDLIBS_libxenforeignmemory) $(LDLIBS_xenconsoled) $(APPEND_LDFLAGS) client/main.o: client/_paths.h xenconsole: $(patsubst %.c,%.o,$(wildcard client/*.c)) diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c index 200b575d76..682c1f4008 100644 --- a/tools/console/daemon/io.c +++ b/tools/console/daemon/io.c @@ -22,6 +22,7 @@ #include "utils.h" #include "io.h" #include <xenevtchn.h> +#include <xenforeignmemory.h> #include <xengnttab.h> #include <xenstore.h> #include <xen/io/console.h> @@ -73,6 +74,7 @@ static int log_time_guest_needts = 1; static int log_hv_fd = -1; static xengnttab_handle *xgt_handle = NULL; +static xenforeignmemory_handle *xfm_handle; static struct pollfd *fds; static unsigned int current_array_size; @@ -675,7 +677,7 @@ static void console_unmap_interface(struct console *con) if (xgt_handle && con->ring_ref == -1) xengnttab_unmap(xgt_handle, con->interface, 1); else - munmap(con->interface, XC_PAGE_SIZE); + xenforeignmemory_unmap(xfm_handle, con->interface, 1); con->interface = NULL; con->ring_ref = -1; } @@ -722,11 +724,12 @@ static int console_create_ring(struct console *con) con->ring_ref = -1; } if (!con->interface) { + xen_pfn_t pfn = ring_ref; + /* Fall back to xc_map_foreign_range */ - con->interface = xc_map_foreign_range( - xc, dom->domid, XC_PAGE_SIZE, - PROT_READ|PROT_WRITE, - (unsigned long)ring_ref); + con->interface = xenforeignmemory_map( + xfm_handle, dom->domid, PROT_READ|PROT_WRITE, 1, + &pfn, NULL); if (con->interface == NULL) { err = EINVAL; goto out; @@ -1341,6 +1344,14 @@ void handle_io(void) errno, strerror(errno)); } + xfm_handle = xenforeignmemory_open(NULL, 0); + if (xfm_handle == NULL) { + dolog(LOG_ERR, + "Failed to open xen foreign memory handle: %d (%s)", + errno, strerror(errno)); + goto out; + } + enum_domains(); for (;;) { @@ -1462,6 +1473,10 @@ void handle_io(void) xengnttab_close(xgt_handle); xgt_handle = NULL; } + if (xfm_handle != NULL) { + xenforeignmemory_close(xfm_handle); + xfm_handle = NULL; + } log_hv_evtchn = -1; } -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |