Revision
16263
Author
mikej
Date
2010-01-12 12:31:13 -0600 (Tue, 12 Jan 2010)

Log Message

attempt to properly check if we can use CPU_SET with sched_setaffinity because some older libc had gnu extensions in the definitions of CPU_SET which we do not allow (FSBUILD-226)

Modified Paths

Added Paths

Diff

Modified: freeswitch/trunk/acinclude.m4 (16262 => 16263)


--- freeswitch/trunk/acinclude.m4	2010-01-12 17:20:16 UTC (rev 16262)
+++ freeswitch/trunk/acinclude.m4	2010-01-12 18:31:13 UTC (rev 16263)
@@ -8,6 +8,7 @@
 m4_include([build/config/ax_check_java.m4])
 m4_include([build/config/erlang.m4])
 m4_include([build/config/odbc.m4])
+m4_include([build/config/sched_setaffinity.m4])
 m4_include([libs/apr/build/apr_common.m4])
 m4_include([libs/sofia-sip/m4/sac-pkg-config.m4])
 m4_include([libs/sofia-sip/m4/sac-openssl.m4])

Added: freeswitch/trunk/build/config/sched_setaffinity.m4 (0 => 16263)


--- freeswitch/trunk/build/config/sched_setaffinity.m4	                        (rev 0)
+++ freeswitch/trunk/build/config/sched_setaffinity.m4	2010-01-12 18:31:13 UTC (rev 16263)
@@ -0,0 +1,16 @@
+AC_DEFUN([AX_HAVE_CPU_SET], [
+#
+# Check for the Linux functions for controlling processor affinity.
+#
+# LINUX: sched_setaffinity
+AC_CHECK_FUNCS(sched_setaffinity sched_getaffinity)
+	if test "$ac_cv_func_sched_setaffinity" = "yes" ; then
+        AC_CACHE_CHECK([whether the CPU_SET and CPU_ZERO macros are defined],
+        ac_cv_cpu_set_defined,[
+        AC_TRY_COMPILE( [#include <sched.h>],[ cpu_set_t t; CPU_ZERO(&t); CPU_SET(1,&t); ],
+	        ac_cv_cpu_set_defined=yes,ac_cv_cpu_set_defined=no)])
+        if test "$ac_cv_cpu_set_defined" = "yes" ; then
+        	AC_DEFINE(HAVE_CPU_SET_MACROS,1,[Define if CPU_SET and CPU_ZERO defined])
+        fi
+	fi
+])
\ No newline at end of file

Modified: freeswitch/trunk/configure.in (16262 => 16263)


--- freeswitch/trunk/configure.in	2010-01-12 17:20:16 UTC (rev 16262)
+++ freeswitch/trunk/configure.in	2010-01-12 18:31:13 UTC (rev 16263)
@@ -431,9 +431,11 @@
 AC_TYPE_SIGNAL
 AC_FUNC_STRFTIME
 AC_CHECK_FUNCS([gethostname vasprintf mmap mlock mlockall usleep getifaddrs])
-AC_CHECK_FUNCS([sched_setscheduler sched_setaffinity setpriority setrlimit setgroups initgroups])
+AC_CHECK_FUNCS([sched_setscheduler setpriority setrlimit setgroups initgroups])
 AC_CHECK_FUNCS([wcsncmp setgroups asprintf setenv pselect gettimeofday localtime_r gmtime_r strcasecmp stricmp _stricmp])
 
+AX_HAVE_CPU_SET
+
 AC_CHECK_LIB(rt, clock_gettime, [AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Define if you have clock_gettime()])])
 AC_CHECK_LIB(rt, clock_nanosleep, [AC_DEFINE(HAVE_CLOCK_NANOSLEEP, 1, [Define if you have clock_nanosleep()])])
 AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket))

Modified: freeswitch/trunk/src/switch_time.c (16262 => 16263)


--- freeswitch/trunk/src/switch_time.c	2010-01-12 17:20:16 UTC (rev 16262)
+++ freeswitch/trunk/src/switch_time.c	2010-01-12 18:31:13 UTC (rev 16263)
@@ -537,7 +537,7 @@
 	switch_time_t ts = 0, last = 0;
 	int fwd_errs = 0, rev_errs = 0;
 
-#ifdef HAVE_SCHED_SETAFFINITY
+#ifdef HAVE_CPU_SET_MACROS
 	cpu_set_t set;
 	CPU_ZERO(&set);
 	CPU_SET(0, &set);