You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by pq...@apache.org on 2005/03/12 01:14:39 UTC

svn commit: r157183 - in apr/apr/trunk: CHANGES poll/unix/epoll.c poll/unix/kqueue.c poll/unix/port.c

Author: pquerna
Date: Fri Mar 11 16:14:38 2005
New Revision: 157183

URL: http://svn.apache.org/viewcvs?view=rev&rev=157183
Log:
Replace looping code with an O(1) APR_RING_CONCAT.
This also fixes a problem on Solaris 10 with the Event Ports.
Karma to Justin for telling me about APR_RING_CONCAT.

Modified:
    apr/apr/trunk/CHANGES
    apr/apr/trunk/poll/unix/epoll.c
    apr/apr/trunk/poll/unix/kqueue.c
    apr/apr/trunk/poll/unix/port.c

Modified: apr/apr/trunk/CHANGES
URL: http://svn.apache.org/viewcvs/apr/apr/trunk/CHANGES?view=diff&r1=157182&r2=157183
==============================================================================
--- apr/apr/trunk/CHANGES (original)
+++ apr/apr/trunk/CHANGES Fri Mar 11 16:14:38 2005
@@ -1,5 +1,8 @@
 Changes for APR 1.2.0
 
+  *) Use APR_RING_CONCAT for moving dead list in KQueue, sys_epoll, and 
+     Event Ports. [Paul Querna]
+
   *) find_apr.m4: Try installed APR before bundled copy if --with-apr not
      passed to configure.  [Justin Erenkrantz]
 

Modified: apr/apr/trunk/poll/unix/epoll.c
URL: http://svn.apache.org/viewcvs/apr/apr/trunk/poll/unix/epoll.c?view=diff&r1=157182&r2=157183
==============================================================================
--- apr/apr/trunk/poll/unix/epoll.c (original)
+++ apr/apr/trunk/poll/unix/epoll.c Fri Mar 11 16:14:38 2005
@@ -257,11 +257,7 @@
     pollset_lock_rings();
 
     /* Shift all PFDs in the Dead Ring to be Free Ring */
-    while (!APR_RING_EMPTY(&(pollset->dead_ring), pfd_elem_t, link)) {
-        ep = APR_RING_FIRST(&(pollset->dead_ring));
-        APR_RING_REMOVE(ep, link);
-        APR_RING_INSERT_TAIL(&(pollset->free_ring), ep, pfd_elem_t, link);
-    }
+    APR_RING_CONCAT(&(pollset->free_ring), &(pollset->dead_ring), pfd_elem_t, link);
 
     pollset_unlock_rings();
 

Modified: apr/apr/trunk/poll/unix/kqueue.c
URL: http://svn.apache.org/viewcvs/apr/apr/trunk/poll/unix/kqueue.c?view=diff&r1=157182&r2=157183
==============================================================================
--- apr/apr/trunk/poll/unix/kqueue.c (original)
+++ apr/apr/trunk/poll/unix/kqueue.c Fri Mar 11 16:14:38 2005
@@ -275,11 +275,7 @@
     pollset_lock_rings();
 
     /* Shift all PFDs in the Dead Ring to be Free Ring */
-    while (!APR_RING_EMPTY(&(pollset->dead_ring), pfd_elem_t, link)) {
-        ep = APR_RING_FIRST(&(pollset->dead_ring));
-        APR_RING_REMOVE(ep, link);
-        APR_RING_INSERT_TAIL(&(pollset->free_ring), ep, pfd_elem_t, link);
-    }
+    APR_RING_CONCAT(&(pollset->free_ring), &(pollset->dead_ring), pfd_elem_t, link);
 
     pollset_unlock_rings();
 

Modified: apr/apr/trunk/poll/unix/port.c
URL: http://svn.apache.org/viewcvs/apr/apr/trunk/poll/unix/port.c?view=diff&r1=157182&r2=157183
==============================================================================
--- apr/apr/trunk/poll/unix/port.c (original)
+++ apr/apr/trunk/poll/unix/port.c Fri Mar 11 16:14:38 2005
@@ -329,11 +329,7 @@
     pollset_lock_rings();
 
     /* Shift all PFDs in the Dead Ring to be Free Ring */
-    while (!APR_RING_EMPTY(&(pollset->dead_ring), pfd_elem_t, link)) {
-        ep = APR_RING_FIRST(&(pollset->dead_ring));
-        APR_RING_REMOVE(ep, link);
-        APR_RING_INSERT_TAIL(&(pollset->free_ring), ep, pfd_elem_t, link);
-    }
+    APR_RING_CONCAT(&(pollset->free_ring), &(pollset->dead_ring), pfd_elem_t, link);
 
     pollset_unlock_rings();