From patchwork Fri Jan 15 13:23:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Campbell X-Patchwork-Id: 8040561 Return-Path: X-Original-To: patchwork-xen-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 3955B9FE7B for ; Fri, 15 Jan 2016 13:26:08 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 1C9622044C for ; Fri, 15 Jan 2016 13:26:06 +0000 (UTC) Received: from lists.xen.org (lists.xenproject.org [50.57.142.19]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0D12F2045A for ; Fri, 15 Jan 2016 13:26:05 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xen.org) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1aK4MJ-0005Lr-Hz; Fri, 15 Jan 2016 13:24:07 +0000 Received: from mail6.bemta4.messagelabs.com ([85.158.143.247]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1aK4MD-00056H-Rz for xen-devel@lists.xen.org; Fri, 15 Jan 2016 13:24:02 +0000 Received: from [85.158.143.35] by server-3.bemta-4.messagelabs.com id C9/6F-31122-0F2F8965; Fri, 15 Jan 2016 13:24:00 +0000 X-Env-Sender: prvs=815b692d9=Ian.Campbell@citrix.com X-Msg-Ref: server-5.tower-21.messagelabs.com!1452864226!10324840!7 X-Originating-IP: [66.165.176.89] X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n, received_headers: No Received headers X-StarScan-Received: X-StarScan-Version: 7.35.1; banners=-,-,- X-VirusChecked: Checked Received: (qmail 25142 invoked from network); 15 Jan 2016 13:24:00 -0000 Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89) by server-5.tower-21.messagelabs.com with RC4-SHA encrypted SMTP; 15 Jan 2016 13:24:00 -0000 X-IronPort-AV: E=Sophos;i="5.22,299,1449532800"; d="scan'208";a="325395885" From: Ian Campbell To: , , Date: Fri, 15 Jan 2016 13:23:53 +0000 Message-ID: <1452864236-2645-2-git-send-email-ian.campbell@citrix.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1452864236-2645-1-git-send-email-ian.campbell@citrix.com> References: <1452864168.32341.97.camel@citrix.com> <1452864236-2645-1-git-send-email-ian.campbell@citrix.com> MIME-Version: 1.0 X-DLP: MIA1 Cc: Ian Campbell Subject: [Xen-devel] [PATCH QEMU-XEN-TRADITIONAL v8 1/4] qemu-xen-traditional: Use libxenevtchn X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00, RCVD_IN_BRBL_LASTEXT, RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP /dev/xen/evtchn related wrappers have been moved out of libxenctrl into their own library. Note that i386-dm/helper2.c's xc_interface * was always really an xc_evtchn *, it's just they used to be typedefs to the same thing... Signed-off-by: Ian Campbell Acked-by: Ian Jackson --- v3: Library moved to tools/libs/ --- hw/xen_backend.c | 26 +++++++++++++------------- hw/xen_backend.h | 2 +- hw/xen_common.h | 1 + i386-dm/helper2.c | 19 ++++++++++--------- xen-hooks.mak | 2 ++ 5 files changed, 27 insertions(+), 23 deletions(-) diff --git a/hw/xen_backend.c b/hw/xen_backend.c index 92b3506..40f6887 100644 --- a/hw/xen_backend.c +++ b/hw/xen_backend.c @@ -208,19 +208,19 @@ static struct XenDevice *xen_be_get_xendev(const char *type, int dom, int dev, xendev->debug = debug; xendev->local_port = -1; - xendev->evtchndev = xc_evtchn_open(NULL, 0); + xendev->evtchndev = xenevtchn_open(NULL, 0); if (xendev->evtchndev == NULL) { xen_be_printf(NULL, 0, "can't open evtchn device\n"); qemu_free(xendev); return NULL; } - fcntl(xc_evtchn_fd(xendev->evtchndev), F_SETFD, FD_CLOEXEC); + fcntl(xenevtchn_fd(xendev->evtchndev), F_SETFD, FD_CLOEXEC); if (ops->flags & DEVOPS_FLAG_NEED_GNTDEV) { xendev->gnttabdev = xc_gnttab_open(NULL, 0); if (xendev->gnttabdev == NULL) { xen_be_printf(NULL, 0, "can't open gnttab device\n"); - xc_evtchn_close(xendev->evtchndev); + xenevtchn_close(xendev->evtchndev); qemu_free(xendev); return NULL; } @@ -268,7 +268,7 @@ static struct XenDevice *xen_be_del_xendev(int dom, int dev) } if (xendev->evtchndev != NULL) - xc_evtchn_close(xendev->evtchndev); + xenevtchn_close(xendev->evtchndev); if (xendev->gnttabdev != NULL) xc_gnttab_close(xendev->gnttabdev); @@ -630,13 +630,13 @@ static void xen_be_evtchn_event(void *opaque) struct XenDevice *xendev = opaque; evtchn_port_t port; - port = xc_evtchn_pending(xendev->evtchndev); + port = xenevtchn_pending(xendev->evtchndev); if (port != xendev->local_port) { - xen_be_printf(xendev, 0, "xc_evtchn_pending returned %d (expected %d)\n", + xen_be_printf(xendev, 0, "xenevtchn_pending returned %d (expected %d)\n", port, xendev->local_port); return; } - xc_evtchn_unmask(xendev->evtchndev, port); + xenevtchn_unmask(xendev->evtchndev, port); if (xendev->ops->event) xendev->ops->event(xendev); @@ -683,14 +683,14 @@ int xen_be_bind_evtchn(struct XenDevice *xendev) { if (xendev->local_port != -1) return 0; - xendev->local_port = xc_evtchn_bind_interdomain + xendev->local_port = xenevtchn_bind_interdomain (xendev->evtchndev, xendev->dom, xendev->remote_port); if (xendev->local_port == -1) { - xen_be_printf(xendev, 0, "xc_evtchn_bind_interdomain failed\n"); + xen_be_printf(xendev, 0, "xenevtchn_bind_interdomain failed\n"); return -1; } xen_be_printf(xendev, 2, "bind evtchn port %d\n", xendev->local_port); - qemu_set_fd_handler(xc_evtchn_fd(xendev->evtchndev), + qemu_set_fd_handler(xenevtchn_fd(xendev->evtchndev), xen_be_evtchn_event, NULL, xendev); return 0; } @@ -699,15 +699,15 @@ void xen_be_unbind_evtchn(struct XenDevice *xendev) { if (xendev->local_port == -1) return; - qemu_set_fd_handler(xc_evtchn_fd(xendev->evtchndev), NULL, NULL, NULL); - xc_evtchn_unbind(xendev->evtchndev, xendev->local_port); + qemu_set_fd_handler(xenevtchn_fd(xendev->evtchndev), NULL, NULL, NULL); + xenevtchn_unbind(xendev->evtchndev, xendev->local_port); xen_be_printf(xendev, 2, "unbind evtchn port %d\n", xendev->local_port); xendev->local_port = -1; } int xen_be_send_notify(struct XenDevice *xendev) { - return xc_evtchn_notify(xendev->evtchndev, xendev->local_port); + return xenevtchn_notify(xendev->evtchndev, xendev->local_port); } /* diff --git a/hw/xen_backend.h b/hw/xen_backend.h index e421391..60f18f8 100644 --- a/hw/xen_backend.h +++ b/hw/xen_backend.h @@ -44,7 +44,7 @@ struct XenDevice { int remote_port; int local_port; - xc_evtchn *evtchndev; + xenevtchn_handle *evtchndev; xc_gnttab *gnttabdev; struct XenDevOps *ops; diff --git a/hw/xen_common.h b/hw/xen_common.h index a615052..cee908f 100644 --- a/hw/xen_common.h +++ b/hw/xen_common.h @@ -4,6 +4,7 @@ #include #include +#include #include #include #include diff --git a/i386-dm/helper2.c b/i386-dm/helper2.c index ede3105..2706f2e 100644 --- a/i386-dm/helper2.c +++ b/i386-dm/helper2.c @@ -48,6 +48,7 @@ #include #include +#include #include #include #include @@ -104,7 +105,7 @@ buffered_iopage_t *buffered_io_page = NULL; QEMUTimer *buffered_io_timer; /* the evtchn fd for polling */ -xc_interface *xce_handle = NULL; +xenevtchn_handle *xce_handle = NULL; /* which vcpu we are serving */ int send_vcpu = 0; @@ -141,7 +142,7 @@ CPUX86State *cpu_x86_init(const char *cpu_model) cpu_single_env = env; - xce_handle = xc_evtchn_open(NULL, 0); + xce_handle = xenevtchn_open(NULL, 0); if (xce_handle == NULL) { perror("open"); return NULL; @@ -149,7 +150,7 @@ CPUX86State *cpu_x86_init(const char *cpu_model) /* FIXME: how about if we overflow the page here? */ for (i = 0; i < vcpus; i++) { - rc = xc_evtchn_bind_interdomain( + rc = xenevtchn_bind_interdomain( xce_handle, domid, shared_page->vcpu_ioreq[i].vp_eport); if (rc == -1) { fprintf(logfile, "bind interdomain ioctl error %d\n", errno); @@ -164,7 +165,7 @@ CPUX86State *cpu_x86_init(const char *cpu_model) errno); return NULL; } - rc = xc_evtchn_bind_interdomain(xce_handle, domid, (uint32_t)bufioreq_evtchn); + rc = xenevtchn_bind_interdomain(xce_handle, domid, (uint32_t)bufioreq_evtchn); if (rc == -1) { fprintf(logfile, "bind interdomain ioctl error %d\n", errno); return NULL; @@ -278,7 +279,7 @@ static ioreq_t *cpu_get_ioreq(void) int i; evtchn_port_t port; - port = xc_evtchn_pending(xce_handle); + port = xenevtchn_pending(xce_handle); if (port == bufioreq_local_port) { qemu_mod_timer(buffered_io_timer, BUFFER_IO_MAX_DELAY + qemu_get_clock(rt_clock)); @@ -296,7 +297,7 @@ static ioreq_t *cpu_get_ioreq(void) } // unmask the wanted port again - xc_evtchn_unmask(xce_handle, port); + xenevtchn_unmask(xce_handle, port); //get the io packet from shared memory send_vcpu = i; @@ -539,7 +540,7 @@ static void handle_buffered_io(void *opaque) BUFFER_IO_MAX_DELAY + qemu_get_clock(rt_clock)); } else { qemu_del_timer(buffered_io_timer); - xc_evtchn_unmask(xce_handle, bufioreq_local_port); + xenevtchn_unmask(xce_handle, bufioreq_local_port); } } @@ -583,7 +584,7 @@ static void cpu_handle_ioreq(void *opaque) } req->state = STATE_IORESP_READY; - xc_evtchn_notify(xce_handle, ioreq_local_port[send_vcpu]); + xenevtchn_notify(xce_handle, ioreq_local_port[send_vcpu]); } } @@ -592,7 +593,7 @@ int xen_pause_requested; int main_loop(void) { CPUState *env = cpu_single_env; - int evtchn_fd = xce_handle == NULL ? -1 : xc_evtchn_fd(xce_handle); + int evtchn_fd = xce_handle == NULL ? -1 : xenevtchn_fd(xce_handle); char *qemu_file; fd_set fds; diff --git a/xen-hooks.mak b/xen-hooks.mak index bf7f027..18259d4 100644 --- a/xen-hooks.mak +++ b/xen-hooks.mak @@ -1,4 +1,5 @@ CPPFLAGS+= -I$(XEN_ROOT)/tools/libs/toollog/include +CPPFLAGS+= -I$(XEN_ROOT)/tools/libs/evtchn/include CPPFLAGS+= -I$(XEN_ROOT)/tools/libxc/include CPPFLAGS+= -I$(XEN_ROOT)/tools/xenstore/include CPPFLAGS+= -I$(XEN_ROOT)/tools/include @@ -18,6 +19,7 @@ endif CFLAGS += $(CMDLINE_CFLAGS) +LIBS += -L$(XEN_ROOT)/tools/libs/evtchn -lxenevtchn LIBS += -L$(XEN_ROOT)/tools/libxc -lxenctrl -lxenguest LIBS += -L$(XEN_ROOT)/tools/xenstore -lxenstore LIBS += -Wl,-rpath-link=$(XEN_ROOT)/tools/libs/toollog