All of lore.kernel.org
 help / color / mirror / Atom feed
From: Olaf Hering <olaf@aepfle.de>
To: xen-devel@lists.xensource.com
Subject: [PATCH 08 of 22] xenpaging: drop xc.c, move xc_wait_for_event_or_timeout
Date: Fri, 10 Jun 2011 11:12:57 +0200	[thread overview]
Message-ID: <b4e8bdedc0eaf9f1615e.1307697177@probook.site> (raw)
In-Reply-To: <patchbomb.1307697169@probook.site>

# HG changeset patch
# User Olaf Hering <olaf@aepfle.de>
# 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@aepfle.de>

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");
         }

  parent reply	other threads:[~2011-06-10  9:12 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-10  9:12 [PATCH 00 of 22] xenpaging and libxc fixes for xen-unstable Olaf Hering
2011-06-10  9:12 ` [PATCH 01 of 22] xenpaging: remove unused spinlock in pager Olaf Hering
2011-06-21 16:24   ` Ian Jackson
2011-06-10  9:12 ` [PATCH 02 of 22] tools: merge several bitop functions into xc_bitops.h Olaf Hering
2011-06-21 16:16   ` Ian Jackson
2011-06-21 16:20     ` Olaf Hering
2011-06-21 16:25       ` Ian Jackson
2011-06-21 17:17     ` Olaf Hering
2011-06-21 17:18       ` Ian Jackson
2011-06-22 14:03         ` Ian Jackson
2011-06-10  9:12 ` [PATCH 03 of 22] xenpaging: add xs_handle to struct xenpaging Olaf Hering
2011-06-14 11:05   ` Ian Campbell
2011-06-20  9:58     ` [PATCH 03 of 22 v2] " Olaf Hering
2011-06-21 13:17       ` Ian Campbell
2011-06-21 15:33         ` [PATCH 03 of 22 v3] " Olaf Hering
2011-06-10  9:12 ` [PATCH 04 of 22] xenpaging: drop xc.c, remove ASSERT Olaf Hering
2011-06-10  9:12 ` [PATCH 05 of 22] xenpaging: drop xc.c, remove xc_platform_info_t Olaf Hering
2011-06-10  9:12 ` [PATCH 06 of 22] xenpaging: drop xc.c, remove xc_wait_for_event Olaf Hering
2011-06-10  9:12 ` [PATCH 07 of 22] xenpaging: drop xc.c, move xc_mem_paging_flush_ioemu_cache Olaf Hering
2011-06-10  9:12 ` Olaf Hering [this message]
2011-06-10  9:12 ` [PATCH 09 of 22] xenpaging: drop xc.c, remove xc files Olaf Hering
2011-06-10  9:12 ` [PATCH 10 of 22] xenpaging: correct dropping of pages to avoid full ring buffer Olaf Hering
2011-06-10  9:13 ` [PATCH 11 of 22] xenpaging: do not bounce p2mt to xenpaging Olaf Hering
2011-06-13 10:48   ` Tim Deegan
2011-06-20  9:57     ` [PATCH 11 of 22 v2] xenpaging: do not bounce p2mt back to the hypervisor Olaf Hering
2011-06-20 10:36       ` Tim Deegan
2011-06-10  9:13 ` [PATCH 12 of 22] xenpaging: remove srand call Olaf Hering
2011-06-10  9:13 ` [PATCH 13 of 22] xenpaging: remove return values from functions that can not fail Olaf Hering
2011-06-10  9:13 ` [PATCH 14 of 22] xenpaging: catch xc_mem_paging_resume errors Olaf Hering
2011-06-10  9:13 ` [PATCH 15 of 22] xenpaging: remove local domain_id variable Olaf Hering
2011-06-10  9:13 ` [PATCH 16 of 22] xenpaging: move num_pages into xenpaging struct Olaf Hering
2011-06-10  9:13 ` [PATCH 17 of 22] xenpaging: start paging in the middle of gfn range Olaf Hering
2011-06-10  9:13 ` [PATCH 18 of 22] xenpaging: pass integer to xenpaging_populate_page Olaf Hering
2011-06-10  9:13 ` [PATCH 19 of 22] xenpaging: add helper function for unlinking pagefile Olaf Hering
2011-06-10  9:13 ` [PATCH 20 of 22] xenpaging: add watch thread to catch guest shutdown Olaf Hering
2011-06-10  9:13 ` [PATCH 21 of 22] xenpaging: implement stopping of pager by sending SIGTERM/SIGINT Olaf Hering
2011-06-10  9:13 ` [PATCH 22 of 22] xenpaging: remove private mem_event.h Olaf Hering

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b4e8bdedc0eaf9f1615e.1307697177@probook.site \
    --to=olaf@aepfle.de \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.