[asterisk-commits] russell: branch russell/poll_compat r182213 - in /team/russell/poll_compat: ....

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Mar 16 11:12:55 CDT 2009


Author: russell
Date: Mon Mar 16 11:12:51 2009
New Revision: 182213

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=182213
Log:
Commit progress on poll_compat situation cleanup

Modified:
    team/russell/poll_compat/apps/app_mp3.c
    team/russell/poll_compat/apps/app_nbscat.c
    team/russell/poll_compat/channels/chan_skinny.c
    team/russell/poll_compat/configure
    team/russell/poll_compat/configure.ac
    team/russell/poll_compat/include/asterisk/autoconfig.h.in
    team/russell/poll_compat/include/asterisk/channel.h
    team/russell/poll_compat/include/asterisk/io.h
    team/russell/poll_compat/include/asterisk/poll-compat.h
    team/russell/poll_compat/main/Makefile
    team/russell/poll_compat/main/asterisk.c
    team/russell/poll_compat/main/channel.c
    team/russell/poll_compat/main/io.c
    team/russell/poll_compat/main/manager.c
    team/russell/poll_compat/main/poll.c
    team/russell/poll_compat/main/utils.c
    team/russell/poll_compat/res/res_agi.c

Modified: team/russell/poll_compat/apps/app_mp3.c
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/apps/app_mp3.c?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/apps/app_mp3.c (original)
+++ team/russell/poll_compat/apps/app_mp3.c Mon Mar 16 11:12:51 2009
@@ -131,7 +131,7 @@
 	struct pollfd fds[1];
 	fds[0].fd = fd;
 	fds[0].events = POLLIN;
-	res = poll(fds, 1, timeout);
+	res = ast_poll(fds, 1, timeout);
 	if (res < 1) {
 		ast_log(LOG_NOTICE, "Poll timed out/errored out with %d\n", res);
 		return -1;

Modified: team/russell/poll_compat/apps/app_nbscat.c
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/apps/app_nbscat.c?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/apps/app_nbscat.c (original)
+++ team/russell/poll_compat/apps/app_nbscat.c Mon Mar 16 11:12:51 2009
@@ -123,7 +123,7 @@
 	struct pollfd fds[1];
 	fds[0].fd = fd;
 	fds[0].events = POLLIN;
-	res = poll(fds, 1, 2000);
+	res = ast_poll(fds, 1, 2000);
 	if (res < 1) {
 		ast_log(LOG_NOTICE, "Selected timed out/errored out with %d\n", res);
 		return -1;

Modified: team/russell/poll_compat/channels/chan_skinny.c
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/channels/chan_skinny.c?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/channels/chan_skinny.c (original)
+++ team/russell/poll_compat/channels/chan_skinny.c Mon Mar 16 11:12:51 2009
@@ -4441,7 +4441,7 @@
  	fds[0].fd = s->fd;
 	fds[0].events = POLLIN;
 	fds[0].revents = 0;
-	res = poll(fds, 1, (keep_alive * 1100)); /* If nothing has happen, client is dead */
+	res = ast_poll(fds, 1, (keep_alive * 1100)); /* If nothing has happen, client is dead */
 						 /* we add 10% to the keep_alive to deal */
 						 /* with network delays, etc */
 	if (res < 0) {

Modified: team/russell/poll_compat/configure.ac
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/configure.ac?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/configure.ac (original)
+++ team/russell/poll_compat/configure.ac Mon Mar 16 11:12:51 2009
@@ -24,6 +24,9 @@
      ac_default_prefix=/usr/local
      CPPFLAGS=-I/usr/local/include
      LDFLAGS=-L/usr/local/lib
+     ;;
+     darwin*)
+     AC_DEFINE([AST_POLL_COMPAT], 1, [Define to 1 if internal poll should be used.])
      ;;
      *)
      ac_default_prefix=/usr
@@ -225,6 +228,10 @@
 AC_HEADER_STDC
 AC_HEADER_SYS_WAIT
 AC_CHECK_HEADERS([arpa/inet.h fcntl.h inttypes.h libintl.h limits.h locale.h malloc.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h strings.h sys/file.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h syslog.h termios.h unistd.h utime.h arpa/nameser.h sys/io.h])
+
+AC_CHECK_HEADER([sys/poll.h],
+     AC_DEFINE([AST_POLL_COMPAT], 1, [Define to 1 if internal poll should be used.]),
+	 [])
 
 AC_SYS_LARGEFILE
 

Modified: team/russell/poll_compat/include/asterisk/autoconfig.h.in
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/include/asterisk/autoconfig.h.in?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/include/asterisk/autoconfig.h.in (original)
+++ team/russell/poll_compat/include/asterisk/autoconfig.h.in Mon Mar 16 11:12:51 2009
@@ -6,6 +6,9 @@
 #include "asterisk/buildopts.h"
 
 
+
+/* Define to 1 if internal poll should be used. */
+#undef AST_POLL_COMPAT
 
 /* Define to 1 if the `closedir' function returns void instead of `int'. */
 #undef CLOSEDIR_VOID

Modified: team/russell/poll_compat/include/asterisk/channel.h
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/include/asterisk/channel.h?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/include/asterisk/channel.h (original)
+++ team/russell/poll_compat/include/asterisk/channel.h Mon Mar 16 11:12:51 2009
@@ -90,11 +90,8 @@
 #include "asterisk/abstract_jb.h"
 
 #include <unistd.h>
-#ifdef POLLCOMPAT 
+
 #include "asterisk/poll-compat.h"
-#else
-#include <sys/poll.h>
-#endif
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {

Modified: team/russell/poll_compat/include/asterisk/io.h
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/include/asterisk/io.h?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/include/asterisk/io.h (original)
+++ team/russell/poll_compat/include/asterisk/io.h Mon Mar 16 11:12:51 2009
@@ -23,11 +23,7 @@
 #ifndef _ASTERISK_IO_H
 #define _ASTERISK_IO_H
 
-#ifdef POLLCOMPAT
 #include "asterisk/poll-compat.h"
-#else
-#include <sys/poll.h>		/* For POLL* constants */
-#endif
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {

Modified: team/russell/poll_compat/include/asterisk/poll-compat.h
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/include/asterisk/poll-compat.h?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/include/asterisk/poll-compat.h (original)
+++ team/russell/poll_compat/include/asterisk/poll-compat.h Mon Mar 16 11:12:51 2009
@@ -76,8 +76,16 @@
 	original.
 \*---------------------------------------------------------------------------*/
 
-#ifndef _POLL_EMUL_H_
-#define _POLL_EMUL_H_
+#ifndef __AST_POLL_COMPAT_H
+#define __AST_POLL_COMPAT_H
+
+#ifndef AST_POLL_COMPAT
+
+#include <sys/poll.h>
+
+#define ast_poll(a, b, c) poll(a, b, c)
+
+#else /* AST_POLL_COMPAT */
 
 #define POLLIN		0x01
 #define POLLPRI		0x02
@@ -86,26 +94,24 @@
 #define POLLHUP		0x10
 #define POLLNVAL	0x20
 
-struct pollfd
-{
+struct pollfd {
     int     fd;
     short   events;
     short   revents;
 };
 
 #ifdef __cplusplus
-extern "C"
-{
+extern "C" {
 #endif
 
-#if (__STDC__ > 0) || defined(__cplusplus)
-extern int poll (struct pollfd *pArray, unsigned long n_fds, int timeout);
-#else
-extern int poll();
-#endif
+#define ast_poll(a, b, c) ast_internal_poll(a, b, c)
+
+int ast_internal_poll(struct pollfd *pArray, unsigned long n_fds, int timeout);
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* _POLL_EMUL_H_ */
+#endif /* AST_POLL_COMPAT */
+
+#endif /* __AST_POLL_COMPAT_H */

Modified: team/russell/poll_compat/main/Makefile
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/main/Makefile?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/main/Makefile (original)
+++ team/russell/poll_compat/main/Makefile Mon Mar 16 11:12:51 2009
@@ -27,7 +27,7 @@
 	netsock.o slinfactory.o ast_expr2.o ast_expr2f.o \
 	cryptostub.o sha1.o http.o fixedjitterbuf.o abstract_jb.o \
 	strcompat.o threadstorage.o dial.o astobj2.o global_datastores.o \
-	audiohook.o
+	audiohook.o poll.o
 
 # we need to link in the objects statically, not as a library, because
 # otherwise modules will not have them available if none of the static
@@ -37,16 +37,6 @@
 # At the moment say.o is an optional component which can be overridden
 # by a module.
 OBJS+=say.o
-
-ifneq ($(findstring darwin,$(OSARCH)),)
-  OBJS+=poll.o
-  ASTCFLAGS+=-DPOLLCOMPAT
-else
-  ifeq ($(wildcard /usr/include/sys/poll.h),)
-    OBJS+=poll.o
-    ASTCFLAGS+=-DPOLLCOMPAT
-  endif
-endif
 
 ifneq ($(findstring $(OSARCH), linux-gnu uclinux linux-uclibc linux-gnueabi ),)
   ifneq ($(findstring LOADABLE_MODULES,$(MENUSELECT_CFLAGS)),)

Modified: team/russell/poll_compat/main/asterisk.c
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/main/asterisk.c?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/main/asterisk.c (original)
+++ team/russell/poll_compat/main/asterisk.c Mon Mar 16 11:12:51 2009
@@ -123,6 +123,7 @@
 #include "asterisk/linkedlists.h"
 #include "asterisk/devicestate.h"
 #include "asterisk/module.h"
+#include "asterisk/poll-compat.h"
 
 #include "asterisk/doxyref.h"		/* Doxygen documentation */
 
@@ -955,7 +956,7 @@
 		fds[1].events = POLLIN;
 		fds[1].revents = 0;
 
-		res = poll(fds, 2, -1);
+		res = ast_poll(fds, 2, -1);
 		if (res < 0) {
 			if (errno != EINTR)
 				ast_log(LOG_WARNING, "poll returned < 0: %s\n", strerror(errno));
@@ -1006,7 +1007,7 @@
 			return NULL;
 		fds[0].fd = ast_socket;
 		fds[0].events = POLLIN;
-		s = poll(fds, 1, -1);
+		s = ast_poll(fds, 1, -1);
 		pthread_testcancel();
 		if (s < 0) {
 			if (errno != EINTR)
@@ -1784,7 +1785,7 @@
 			fds[1].events = POLLIN;
 			max++;
 		}
-		res = poll(fds, max, -1);
+		res = ast_poll(fds, max, -1);
 		if (res < 0) {
 			if (sig_flags.need_quit)
 				break;
@@ -2379,7 +2380,7 @@
 		fds.fd = ast_consock;
 		fds.events = POLLIN;
 		fds.revents = 0;
-		while (poll(&fds, 1, 500) > 0) {
+		while (ast_poll(&fds, 1, 500) > 0) {
 			char buf[512] = "", *curline = buf, *nextline;
 			int not_written = 1;
 
@@ -2668,7 +2669,7 @@
 	for (;;) {
 		struct pollfd p = { sig_alert_pipe[0], POLLIN, 0 };
 		int a;
-		poll(&p, 1, -1);
+		ast_poll(&p, 1, -1);
 		if (sig_flags.need_reload) {
 			sig_flags.need_reload = 0;
 			ast_module_reload(NULL);

Modified: team/russell/poll_compat/main/channel.c
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/main/channel.c?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/main/channel.c (original)
+++ team/russell/poll_compat/main/channel.c Mon Mar 16 11:12:51 2009
@@ -1754,12 +1754,12 @@
 			int kbrms = rms;
 			if (kbrms > 600000)
 				kbrms = 600000;
-			res = poll(pfds, max, kbrms);
+			res = ast_poll(pfds, max, kbrms);
 			if (!res)
 				rms -= kbrms;
 		} while (!res && (rms > 0));
 	} else {
-		res = poll(pfds, max, rms);
+		res = ast_poll(pfds, max, rms);
 	}
 	for (x=0; x<n; x++)
 		ast_clear_flag(c[x], AST_FLAG_BLOCKING);

Modified: team/russell/poll_compat/main/io.c
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/main/io.c?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/main/io.c (original)
+++ team/russell/poll_compat/main/io.c Mon Mar 16 11:12:51 2009
@@ -263,7 +263,7 @@
 	int x;
 	int origcnt;
 	DEBUG(ast_log(LOG_DEBUG, "ast_io_wait()\n"));
-	res = poll(ioc->fds, ioc->fdcnt, howlong);
+	res = ast_poll(ioc->fds, ioc->fdcnt, howlong);
 	if (res > 0) {
 		/*
 		 * At least one event

Modified: team/russell/poll_compat/main/manager.c
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/main/manager.c?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/main/manager.c (original)
+++ team/russell/poll_compat/main/manager.c Mon Mar 16 11:12:51 2009
@@ -2287,7 +2287,7 @@
 		s->waiting_thread = pthread_self();
 		ast_mutex_unlock(&s->__lock);
 
-		res = poll(fds, 1, -1);
+		res = ast_poll(fds, 1, -1);
 
 		ast_mutex_lock(&s->__lock);
 		s->waiting_thread = AST_PTHREADT_NULL;
@@ -2431,7 +2431,7 @@
 		pfds[0].events = POLLIN;
 		/* Wait for something to happen, but timeout every few seconds so
 		   we can ditch any old manager sessions */
-		if (poll(pfds, 1, 5000) < 1)
+		if (ast_poll(pfds, 1, 5000) < 1)
 			continue;
 		as = accept(asock, (struct sockaddr *)&sin, &sinlen);
 		if (as < 0) {

Modified: team/russell/poll_compat/main/poll.c
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/main/poll.c?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/main/poll.c (original)
+++ team/russell/poll_compat/main/poll.c Mon Mar 16 11:12:51 2009
@@ -71,6 +71,8 @@
 				 Includes
 \*---------------------------------------------------------------------------*/
 
+#include "asterisk.h"
+
 #include <unistd.h>			     /* standard Unix definitions */
 #include <sys/types.h>                       /* system types */
 #include <sys/time.h>                        /* time definitions */
@@ -79,6 +81,8 @@
 
 #include "asterisk/poll-compat.h"                            /* this package */
 
+#ifdef AST_POLL_COMPAT
+
 /*---------------------------------------------------------------------------*\
 				  Macros
 \*---------------------------------------------------------------------------*/
@@ -87,7 +91,6 @@
 #define MAX(a,b)	((a) > (b) ? (a) : (b))
 #endif
 
-
 /*---------------------------------------------------------------------------*\
 			     Private Functions
 \*---------------------------------------------------------------------------*/
@@ -209,7 +212,7 @@
 
     return pResult;
 }
-
+
 static void map_select_results
 #if __STDC__ > 0
 			 (struct pollfd *pArray,
@@ -251,22 +254,12 @@
 
     return;
 }
-
+
 /*---------------------------------------------------------------------------*\
 			     Public Functions
 \*---------------------------------------------------------------------------*/
 
-int poll
-
-#if __STDC__ > 0
-	(struct pollfd *pArray, unsigned long n_fds, int timeout)
-#else
-	(pArray, n_fds, timeout)
-	 struct	       pollfd *pArray;
-	 unsigned long n_fds;
-	 int	       timeout;
-#endif
-
+int ast_internal_poll(struct pollfd *pArray, unsigned long n_fds, int timeout)
 {
     fd_set  read_descs;                          /* input file descs */
     fd_set  write_descs;                         /* output file descs */
@@ -304,3 +297,5 @@
 
     return ready_descriptors;
 }
+
+#endif /* AST_POLL_COMPAT */

Modified: team/russell/poll_compat/main/utils.c
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/main/utils.c?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/main/utils.c (original)
+++ team/russell/poll_compat/main/utils.c Mon Mar 16 11:12:51 2009
@@ -916,7 +916,7 @@
 	memset(pfd, 0, sizeof(pfd));
 	pfd[0].fd = fd;
 	pfd[0].events = POLLIN|POLLPRI;
-	return poll(pfd, 1, ms);
+	return ast_poll(pfd, 1, ms);
 }
 
 int ast_carefulwrite(int fd, char *s, int len, int timeoutms) 
@@ -932,7 +932,7 @@
 		};
 
 		/* poll() until the fd is writable without blocking */
-		while ((res = poll(&pfd, 1, timeoutms - elapsed)) <= 0) {
+		while ((res = ast_poll(&pfd, 1, timeoutms - elapsed)) <= 0) {
 			if (res == 0) {
 				/* timed out. */
 				ast_log(LOG_NOTICE, "Timed out trying to write\n");

Modified: team/russell/poll_compat/res/res_agi.c
URL: http://svn.digium.com/svn-view/asterisk/team/russell/poll_compat/res/res_agi.c?view=diff&rev=182213&r1=182212&r2=182213
==============================================================================
--- team/russell/poll_compat/res/res_agi.c (original)
+++ team/russell/poll_compat/res/res_agi.c Mon Mar 16 11:12:51 2009
@@ -221,7 +221,7 @@
 
 	pfds[0].fd = s;
 	pfds[0].events = POLLOUT;
-	while ((res = poll(pfds, 1, MAX_AGI_CONNECT)) != 1) {
+	while ((res = ast_poll(pfds, 1, MAX_AGI_CONNECT)) != 1) {
 		if (errno != EINTR) {
 			if (!res) {
 				ast_log(LOG_WARNING, "FastAGI connection to '%s' timed out after MAX_AGI_CONNECT (%d) milliseconds.\n",
@@ -2269,7 +2269,7 @@
 		}
 		pthread_testcancel();
 		/* Wait for 60 seconds, without engaging in a busy loop. */
-		poll(NULL, 0, 60000);
+		ast_poll(NULL, 0, 60000);
 	}
 	return NULL;
 }




More information about the asterisk-commits mailing list