WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH 08 of 22] xenpaging: drop xc.c, move xc_wait_for_even

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 08 of 22] xenpaging: drop xc.c, move xc_wait_for_event_or_timeout
From: Olaf Hering <olaf@xxxxxxxxx>
Date: Fri, 10 Jun 2011 11:12:57 +0200
Delivery-date: Fri, 10 Jun 2011 02:17:38 -0700
Dkim-signature: v=1; a=rsa-sha1; c=relaxed/relaxed; t=1307697180; l=3424; s=domk; d=aepfle.de; h=To:From:Date:References:In-Reply-To:Subject: Content-Transfer-Encoding:MIME-Version:Content-Type:X-RZG-CLASS-ID: X-RZG-AUTH; bh=lFpr3p7GxW3YEAQWsm8dLBwsERg=; b=ARp9AoH07Th5mLmZ9iEkE0A405zq+NnxAjHFqT/22VtclO7ZFeGRL8RVP/ufVyZ+Oil cLeOjiL+5vZiNi2G3ORMTXD6fJAyIA94Kyd0IMO7EBEZYedBDrg54lHYyj845X1B3FykN xlDQHRmyaIrP63YtGtLIi/aIBYK4gqHD5j4=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1307697169@xxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <patchbomb.1307697169@xxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mercurial-patchbomb/1.7.5
# HG changeset patch
# User Olaf Hering <olaf@xxxxxxxxx>
# Date 1307695631 -7200
# Node ID b4e8bdedc0eaf9f1615e01152240d74a9996e07f
# Parent  fe8cb47be2adc95e6181de8c166e4460e1a2e40f
xenpaging: drop xc.c, move xc_wait_for_event_or_timeout

Move xc_wait_for_event_or_timeout() into xenpaging and massage it a bit for
further changes in subsequent patches.
Include poll.h instead of sys/poll.h.

Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>

diff -r fe8cb47be2ad -r b4e8bdedc0ea tools/xenpaging/xc.c
--- a/tools/xenpaging/xc.c      Fri Jun 10 10:47:10 2011 +0200
+++ b/tools/xenpaging/xc.c      Fri Jun 10 10:47:11 2011 +0200
@@ -32,46 +32,6 @@
 
 
 
-int xc_wait_for_event_or_timeout(xc_interface *xch, xc_evtchn *xce, unsigned 
long ms)
-{
-    struct pollfd fd = { .fd = xc_evtchn_fd(xce), .events = POLLIN | POLLERR };
-    int port;
-    int rc;
-    
-    rc = poll(&fd, 1, ms);
-    if ( rc == -1 )
-    {
-        if (errno == EINTR)
-            return 0;
-
-        ERROR("Poll exited with an error");
-        goto err;
-    }
-    
-    if ( rc == 1 )
-    {
-        port = xc_evtchn_pending(xce);
-        if ( port == -1 )
-        {
-            ERROR("Failed to read port from event channel");
-            goto err;
-        }
-        
-        rc = xc_evtchn_unmask(xce, port);
-        if ( rc != 0 )
-        {
-            ERROR("Failed to unmask event channel port");
-            goto err;
-        }
-    }
-    else
-        port = -1;
-    
-    return port;
-
- err:
-    return -errno;
-}
 
 
 
diff -r fe8cb47be2ad -r b4e8bdedc0ea tools/xenpaging/xc.h
--- a/tools/xenpaging/xc.h      Fri Jun 10 10:47:10 2011 +0200
+++ b/tools/xenpaging/xc.h      Fri Jun 10 10:47:11 2011 +0200
@@ -37,7 +37,6 @@
 
 
 
-int xc_wait_for_event_or_timeout(xc_interface *xch, xc_evtchn *xce, unsigned 
long ms);
 
 
 
diff -r fe8cb47be2ad -r b4e8bdedc0ea tools/xenpaging/xenpaging.c
--- a/tools/xenpaging/xenpaging.c       Fri Jun 10 10:47:10 2011 +0200
+++ b/tools/xenpaging/xenpaging.c       Fri Jun 10 10:47:11 2011 +0200
@@ -27,6 +27,7 @@
 #include <time.h>
 #include <signal.h>
 #include <unistd.h>
+#include <poll.h>
 #include <xc_private.h>
 #include <xs.h>
 
@@ -62,6 +63,47 @@ static int xenpaging_mem_paging_flush_io
     return rc == true ? 0 : -1;
 }
 
+static int xenpaging_wait_for_event_or_timeout(xenpaging_t *paging)
+{
+    xc_interface *xch = paging->xc_handle;
+    xc_evtchn *xce = paging->mem_event.xce_handle;
+    struct pollfd fd[1];
+    int port;
+    int rc;
+
+    fd[0].fd = xc_evtchn_fd(xce);
+    fd[0].events = POLLIN | POLLERR;
+    rc = poll(fd, 1, 100);
+    if ( rc < 0 )
+    {
+        if (errno == EINTR)
+            return 0;
+
+        ERROR("Poll exited with an error");
+        return -errno;
+    }
+
+    if ( rc && fd[0].revents & POLLIN )
+    {
+        DPRINTF("Got event from evtchn\n");
+        port = xc_evtchn_pending(xce);
+        if ( port == -1 )
+        {
+            ERROR("Failed to read port from event channel");
+            rc = -1;
+            goto err;
+        }
+
+        rc = xc_evtchn_unmask(xce, port);
+        if ( rc < 0 )
+        {
+            ERROR("Failed to unmask event channel port");
+        }
+    }
+err:
+    return rc;
+}
+
 static void *init_page(void)
 {
     void *buffer;
@@ -598,13 +640,13 @@ int main(int argc, char *argv[])
     while ( !interrupted )
     {
         /* Wait for Xen to signal that a page needs paged in */
-        rc = xc_wait_for_event_or_timeout(xch, paging->mem_event.xce_handle, 
100);
-        if ( rc < -1 )
+        rc = xenpaging_wait_for_event_or_timeout(paging);
+        if ( rc < 0 )
         {
             ERROR("Error getting event");
             goto out;
         }
-        else if ( rc != -1 )
+        else if ( rc != 0 )
         {
             DPRINTF("Got event from Xen\n");
         }

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

<Prev in Thread] Current Thread [Next in Thread>