summaryrefslogtreecommitdiff
path: root/pjlib/include/pj/config.h
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-02-07 13:11:39 +0000
committerBenny Prijono <bennylp@teluu.com>2008-02-07 13:11:39 +0000
commit56886ef4b648760667743506f4f7bed9830798e8 (patch)
tree33d43a16fe1cf5c26afae53de0dc0bf8e8478bba /pjlib/include/pj/config.h
parenta50cf4e4adc531db5edd98ec99bb358b397c8557 (diff)
Ticket #470, #471, and #472: Compile error when semaphore.h is not present, Compilation error if pthread_mutexattr_set_type() is not present, and Problem with setting up FD_SETSIZE
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1783 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib/include/pj/config.h')
-rw-r--r--pjlib/include/pj/config.h40
1 files changed, 29 insertions, 11 deletions
diff --git a/pjlib/include/pj/config.h b/pjlib/include/pj/config.h
index d620d4b7..fc08ed74 100644
--- a/pjlib/include/pj/config.h
+++ b/pjlib/include/pj/config.h
@@ -485,13 +485,6 @@
* underlying I/O queue impelementation, but still, developers should be
* aware of this constant, to make sure that the program will not break when
* the underlying implementation changes.
- *
- * For implementation based on select(), the value here will be used as the
- * maximum number of socket handles passed to select() (i.e. FD_SETSIZE will
- * be set to this value).
- *
- * Default: if FD_SETSIZE is defined and the value is greather than 256,
- * then it will be used. Otherwise 256 (64 for WinCE).
*/
#ifndef PJ_IOQUEUE_MAX_HANDLES
# if defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0
@@ -538,16 +531,41 @@
/**
+ * Determine if FD_SETSIZE is changeable/set-able. If so, then we will
+ * set it to PJ_IOQUEUE_MAX_HANDLES.
+ */
+/* This is awful, as we should actually check for __GLIBC__ rather than
+ * __GNUC__. But alas! Libc headers are not included yet at this stage.
+ */
+#ifdef __GNUC__
+# define PJ_FD_SETSIZE_SETABLE 0
+#else
+# define PJ_FD_SETSIZE_SETABLE 1
+#endif
+
+/**
* Overrides FD_SETSIZE so it is consistent throughout the library.
- * OS specific configuration header (compat/os_*) might have declared
- * FD_SETSIZE, thus we only set if it hasn't been declared.
+ * We only do this if we detected that FD_SETSIZE is changeable.
*
* Default: #PJ_IOQUEUE_MAX_HANDLES
*/
-#ifndef FD_SETSIZE
-# define FD_SETSIZE PJ_IOQUEUE_MAX_HANDLES
+#if PJ_FD_SETSIZE_SETABLE
+ /* Only override FD_SETSIZE if the value has not been set */
+# ifndef FD_SETSIZE
+# define FD_SETSIZE PJ_IOQUEUE_MAX_HANDLES
+# endif
+#else
+ /* When FD_SETSIZE is not changeable, check if PJ_IOQUEUE_MAX_HANDLES
+ * is lower than FD_SETSIZE value.
+ */
+# ifdef FD_SETSIZE
+# if PJ_IOQUEUE_MAX_HANDLES > FD_SETSIZE
+# error "PJ_IOQUEUE_MAX_HANDLES is greater than FD_SETSIZE"
+# endif
+# endif
#endif
+
/**
* Has semaphore functionality?
*