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();