gstein 2003/11/16 16:32:36
Modified: include apr_poll.h
poll/os2 Makefile.in
poll/unix poll.c pollacc.c
Removed: poll/os2 poll.c
Log:
Remove the old/deprecated apr_poll interface.
* include/apr_poll.h:
(apr_poll, apr_poll_setup, apr_poll_socket_add, apr_poll_socket_mask,
apr_poll_socket_remove, apr_poll_socket_clear,
apr_poll_revents_get): removed. these were deprecated a while back,
in favor of the apr_pollset_t interfaces.
* poll/os2/poll.c: removed. this implemented apr_poll() which was
deprecated by the new apr_pollset_t interfaces.
* poll/os/Makefile.in: remove reference to poll.lo
* poll/unix/poll.c:
- remove include of alloca.h; no longer needed
(apr_poll): removed both implementations
* poll/unix/pollacc.c:
(apr_poll_setup, apr_poll_socket_add, apr_poll_socket_mask,
apr_poll_socket_remove, apr_poll_socket_clear,
apr_poll_revents_get): removed these deprecated functions.
Revision Changes Path
1.12 +0 -46 apr/include/apr_poll.h
Index: apr_poll.h
===================================================================
RCS file: /home/cvs/apr/include/apr_poll.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- apr_poll.h 28 Oct 2003 11:11:08 -0000 1.11
+++ apr_poll.h 17 Nov 2003 00:32:36 -0000 1.12
@@ -119,29 +119,6 @@
};
-/**
- * Poll the sockets in the poll structure
- * @param aprset The poll structure we will be using.
- * @param numsock The number of sockets we are polling
- * @param nsds The number of sockets signalled.
- * @param timeout The amount of time in microseconds to wait. This is
- * a maximum, not a minimum. If a socket is signalled, we
- * will wake up before this time. A negative number means
- * wait until a socket is signalled.
- * @remark
- * <PRE>
- * The number of sockets signalled is returned in the second argument.
- *
- * This is a blocking call, and it will not return until either a
- * socket has been signalled, or the timeout has expired.
- * </PRE>
- */
-/* ### is this deprecated, too? */
-APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t numsock,
- apr_int32_t *nsds,
- apr_interval_time_t timeout);
-
-
/* General-purpose poll API for arbitrarily large numbers of
* file descriptors
*/
@@ -200,29 +177,6 @@
const apr_pollfd_t **descriptors);
/** @} */
-
-
-/* These functions are deprecated. If you want doc, then go to older
- versions of this header file.
-
- ### should probably just be removed.
-*/
-APR_DECLARE(apr_status_t) apr_poll_setup(apr_pollfd_t **new_poll,
- apr_int32_t num,
- apr_pool_t *cont);
-APR_DECLARE(apr_status_t) apr_poll_socket_add(apr_pollfd_t *aprset,
- apr_socket_t *sock,
- apr_int16_t event);
-APR_DECLARE(apr_status_t) apr_poll_socket_mask(apr_pollfd_t *aprset,
- apr_socket_t *sock,
- apr_int16_t events);
-APR_DECLARE(apr_status_t) apr_poll_socket_remove(apr_pollfd_t *aprset,
- apr_socket_t *sock);
-APR_DECLARE(apr_status_t) apr_poll_socket_clear(apr_pollfd_t *aprset,
- apr_int16_t events);
-APR_DECLARE(apr_status_t) apr_poll_revents_get(apr_int16_t *event,
- apr_socket_t *sock,
- apr_pollfd_t *aprset);
#ifdef __cplusplus
1.4 +0 -1 apr/poll/os2/Makefile.in
Index: Makefile.in
===================================================================
RCS file: /home/cvs/apr/poll/os2/Makefile.in,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Makefile.in 9 Aug 2002 09:11:52 -0000 1.3
+++ Makefile.in 17 Nov 2003 00:32:36 -0000 1.4
@@ -2,7 +2,6 @@
VPATH = @srcdir@
TARGETS = \
- poll.lo \
pollset.lo \
pollacc.lo
1.40 +3 -204 apr/poll/unix/poll.c
Index: poll.c
===================================================================
RCS file: /home/cvs/apr/poll/unix/poll.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- poll.c 28 Oct 2003 11:31:34 -0000 1.39
+++ poll.c 17 Nov 2003 00:32:36 -0000 1.40
@@ -64,15 +64,14 @@
#if HAVE_SYS_POLL_H
#include <sys/poll.h>
#endif
-#if HAVE_ALLOCA_H
-#include <alloca.h>
-#endif
+
#ifdef NETWARE
#define HAS_SOCKETS(dt) (dt == APR_POLL_SOCKET) ? 1 : 0
#define HAS_PIPES(dt) (dt == APR_POLL_FILE) ? 1 : 0
#endif
+
#ifdef HAVE_POLL /* We can just use poll to do our socket polling. */
static apr_int16_t get_event(apr_int16_t event)
@@ -115,207 +114,7 @@
return rv;
}
-#define SMALL_POLLSET_LIMIT 8
-
-APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t num,
- apr_int32_t *nsds, apr_interval_time_t timeout)
-{
- int i, num_to_poll;
-#ifdef HAVE_VLA
- /* XXX: I trust that this is a segv when insufficient stack exists? */
- struct pollfd pollset[num];
-#elif defined(HAVE_ALLOCA)
- struct pollfd *pollset = alloca(sizeof(struct pollfd) * num);
- if (!pollset)
- return APR_ENOMEM;
-#else
- struct pollfd tmp_pollset[SMALL_POLLSET_LIMIT];
- struct pollfd *pollset;
-
- if (num <= SMALL_POLLSET_LIMIT) {
- pollset = tmp_pollset;
- }
- else {
- /* This does require O(n) to copy the descriptors to the internal
- * mapping.
- */
- pollset = malloc(sizeof(struct pollfd) * num);
- /* The other option is adding an apr_pool_abort() fn to invoke
- * the pool's out of memory handler
- */
- if (!pollset)
- return APR_ENOMEM;
- }
-#endif
- for (i = 0; i < num; i++) {
- if (aprset[i].desc_type == APR_POLL_SOCKET) {
- pollset[i].fd = aprset[i].desc.s->socketdes;
- }
- else if (aprset[i].desc_type == APR_POLL_FILE) {
- pollset[i].fd = aprset[i].desc.f->filedes;
- }
- else {
- break;
- }
- pollset[i].events = get_event(aprset[i].reqevents);
- }
- num_to_poll = i;
-
- if (timeout > 0) {
- timeout /= 1000; /* convert microseconds to milliseconds */
- }
-
- i = poll(pollset, num_to_poll, timeout);
- (*nsds) = i;
-
- for (i = 0; i < num; i++) {
- aprset[i].rtnevents = get_revent(pollset[i].revents);
- }
-
-#if !defined(HAVE_VLA) && !defined(HAVE_ALLOCA)
- if (num > SMALL_POLLSET_LIMIT) {
- free(pollset);
- }
-#endif
-
- if ((*nsds) < 0) {
- return apr_get_netos_error();
- }
- if ((*nsds) == 0) {
- return APR_TIMEUP;
- }
- return APR_SUCCESS;
-}
-
-
-#else /* Use select to mimic poll */
-
-APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, int num,
apr_int32_t *nsds,
- apr_interval_time_t timeout)
-{
- fd_set readset, writeset, exceptset;
- int rv, i;
- int maxfd = -1;
- struct timeval tv, *tvptr;
-#ifdef NETWARE
- apr_datatype_e set_type = APR_NO_DESC;
-#endif
-
- if (timeout < 0) {
- tvptr = NULL;
- }
- else {
- tv.tv_sec = (long)apr_time_sec(timeout);
- tv.tv_usec = (long)apr_time_usec(timeout);
- tvptr = &tv;
- }
-
- FD_ZERO(&readset);
- FD_ZERO(&writeset);
- FD_ZERO(&exceptset);
-
- for (i = 0; i < num; i++) {
- apr_os_sock_t fd;
-
- aprset[i].rtnevents = 0;
-
- if (aprset[i].desc_type == APR_POLL_SOCKET) {
-#ifdef NETWARE
- if (HAS_PIPES(set_type)) {
- return APR_EBADF;
- }
- else {
- set_type = APR_POLL_SOCKET;
- }
-#endif
- fd = aprset[i].desc.s->socketdes;
- }
- else if (aprset[i].desc_type == APR_POLL_FILE) {
-#if !APR_FILES_AS_SOCKETS
- return APR_EBADF;
-#else
-#ifdef NETWARE
- if (aprset[i].desc.f->is_pipe && !HAS_SOCKETS(set_type)) {
- set_type = APR_POLL_FILE;
- }
- else
- return APR_EBADF;
-#endif /* NETWARE */
-
- fd = aprset[i].desc.f->filedes;
-
-#endif /* APR_FILES_AS_SOCKETS */
- }
- else {
- break;
- }
- if (aprset[i].reqevents & APR_POLLIN) {
- FD_SET(fd, &readset);
- }
- if (aprset[i].reqevents & APR_POLLOUT) {
- FD_SET(fd, &writeset);
- }
- if (aprset[i].reqevents &
- (APR_POLLPRI | APR_POLLERR | APR_POLLHUP | APR_POLLNVAL)) {
- FD_SET(fd, &exceptset);
- }
- if ((int)fd > maxfd) {
- maxfd = (int)fd;
- }
- }
-
-#ifdef NETWARE
- if (HAS_PIPES(set_type)) {
- rv = pipe_select(maxfd + 1, &readset, &writeset, &exceptset, tvptr);
- }
- else {
-#endif
-
- rv = select(maxfd + 1, &readset, &writeset, &exceptset, tvptr);
-
-#ifdef NETWARE
- }
-#endif
-
- (*nsds) = rv;
- if ((*nsds) == 0) {
- return APR_TIMEUP;
- }
- if ((*nsds) < 0) {
- return apr_get_netos_error();
- }
-
- for (i = 0; i < num; i++) {
- apr_os_sock_t fd;
-
- if (aprset[i].desc_type == APR_POLL_SOCKET) {
- fd = aprset[i].desc.s->socketdes;
- }
- else if (aprset[i].desc_type == APR_POLL_FILE) {
-#if !APR_FILES_AS_SOCKETS
- return APR_EBADF;
-#else
- fd = aprset[i].desc.f->filedes;
-#endif
- }
- else {
- break;
- }
- if (FD_ISSET(fd, &readset)) {
- aprset[i].rtnevents |= APR_POLLIN;
- }
- if (FD_ISSET(fd, &writeset)) {
- aprset[i].rtnevents |= APR_POLLOUT;
- }
- if (FD_ISSET(fd, &exceptset)) {
- aprset[i].rtnevents |= APR_POLLERR;
- }
- }
-
- return APR_SUCCESS;
-}
-
-#endif
+#endif /* HAVE_POLL */
struct apr_pollset_t {
1.9 +2 -118 apr/poll/unix/pollacc.c
Index: pollacc.c
===================================================================
RCS file: /home/cvs/apr/poll/unix/pollacc.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- pollacc.c 7 Jan 2003 00:52:56 -0000 1.8
+++ pollacc.c 17 Nov 2003 00:32:36 -0000 1.9
@@ -53,133 +53,17 @@
*/
#include "apr.h"
-#include "apr_poll.h"
#include "apr_arch_networkio.h"
#include "apr_arch_file_io.h"
-#if HAVE_POLL_H
-#include <poll.h>
-#endif
-#if HAVE_SYS_POLL_H
-#include <sys/poll.h>
-#endif
-APR_DECLARE(apr_status_t) apr_poll_setup(apr_pollfd_t **new, apr_int32_t
num, apr_pool_t *cont)
-{
- (*new) = (apr_pollfd_t *)apr_pcalloc(cont, sizeof(apr_pollfd_t) * (num +
1));
- if ((*new) == NULL) {
- return APR_ENOMEM;
- }
- (*new)[num].desc_type = APR_POLL_LASTDESC;
- (*new)[0].p = cont;
- return APR_SUCCESS;
-}
-
-static apr_pollfd_t *find_poll_sock(apr_pollfd_t *aprset, apr_socket_t *sock)
-{
- apr_pollfd_t *curr = aprset;
-
- while (curr->desc.s != sock) {
- if (curr->desc_type == APR_POLL_LASTDESC) {
- return NULL;
- }
- curr++;
- }
-
- return curr;
-}
-
-APR_DECLARE(apr_status_t) apr_poll_socket_add(apr_pollfd_t *aprset,
- apr_socket_t *sock, apr_int16_t event)
-{
- apr_pollfd_t *curr = aprset;
-
- while (curr->desc_type != APR_NO_DESC) {
- if (curr->desc_type == APR_POLL_LASTDESC) {
- return APR_ENOMEM;
- }
- curr++;
- }
- curr->desc.s = sock;
- curr->desc_type = APR_POLL_SOCKET;
- curr->reqevents = event;
-
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_poll_revents_get(apr_int16_t *event,
apr_socket_t *sock, apr_pollfd_t *aprset)
-{
- apr_pollfd_t *curr = find_poll_sock(aprset, sock);
- if (curr == NULL) {
- return APR_NOTFOUND;
- }
-
- (*event) = curr->rtnevents;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_poll_socket_mask(apr_pollfd_t *aprset,
- apr_socket_t *sock, apr_int16_t events)
-{
- apr_pollfd_t *curr = find_poll_sock(aprset, sock);
- if (curr == NULL) {
- return APR_NOTFOUND;
- }
-
- if (curr->reqevents & events) {
- curr->reqevents ^= events;
- }
-
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_poll_socket_remove(apr_pollfd_t *aprset,
apr_socket_t *sock)
-{
- apr_pollfd_t *match = NULL;
- apr_pollfd_t *curr;
-
- for (curr = aprset; (curr->desc_type != APR_POLL_LASTDESC) &&
- (curr->desc_type != APR_NO_DESC); curr++) {
- if (curr->desc.s == sock) {
- match = curr;
- }
- }
- if (match == NULL) {
- return APR_NOTFOUND;
- }
-
- /* Remove this entry by swapping the last entry into its place.
- * This ensures that the non-APR_NO_DESC entries are all at the
- * start of the array, so that apr_poll() doesn't have to worry
- * about invalid entries in the middle of the pollset.
- */
- curr--;
- if (curr != match) {
- *match = *curr;
- }
- curr->desc_type = APR_NO_DESC;
-
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_poll_socket_clear(apr_pollfd_t *aprset,
apr_int16_t events)
-{
- apr_pollfd_t *curr = aprset;
-
- while (curr->desc_type != APR_POLL_LASTDESC) {
- if (curr->reqevents & events) {
- curr->reqevents &= ~events;
- }
- curr++;
- }
- return APR_SUCCESS;
-}
#if APR_FILES_AS_SOCKETS
/* I'm not sure if this needs to return an apr_status_t or not, but
* for right now, we'll leave it this way, and change it later if
* necessary.
*/
-APR_DECLARE(apr_status_t) apr_socket_from_file(apr_socket_t **newsock,
apr_file_t *file)
+APR_DECLARE(apr_status_t) apr_socket_from_file(apr_socket_t **newsock,
+ apr_file_t *file)
{
(*newsock) = apr_pcalloc(file->pool, sizeof(**newsock));
(*newsock)->socketdes = file->filedes;