* configure.in: Look for sched.h and sched_yield.
authorKen Raeburn <raeburn@mit.edu>
Sat, 7 Aug 2004 15:52:52 +0000 (15:52 +0000)
committerKen Raeburn <raeburn@mit.edu>
Sat, 7 Aug 2004 15:52:52 +0000 (15:52 +0000)
* k5-thread.h: Only include sched.h if it's available.
(MAYBE_SCHED_YIELD): Only use sched_yield if sched.h and sched_yield are
available; if weak references are supported and sched_yield isn't available by
default, check for it at run time.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16645 dc483132-0cff-0310-8789-dd5450dbe970

src/include/ChangeLog
src/include/configure.in
src/include/k5-thread.h

index 74894bb21b34818f8064ed7801153da8f39094c5..ed7a97f913ff2c4ea99e7cc1b8f07c510f6d9240 100644 (file)
@@ -1,3 +1,11 @@
+2004-08-07  Ken Raeburn  <raeburn@mit.edu>
+
+       * configure.in: Look for sched.h and sched_yield.
+       * k5-thread.h: Only include sched.h if it's available.
+       (MAYBE_SCHED_YIELD): Only use sched_yield if sched.h and
+       sched_yield are available; if weak references are supported and
+       sched_yield isn't available by default, check for it at run time.
+
 2004-08-05  Ken Raeburn  <raeburn@mit.edu>
 
        * k5-thread.h [HAVE_PTHREAD]: Include sched.h if
index 8f6999dbdd51df52e1fa3cf0e582c0372662a247..ea81a880f8f7957706cea67604d6ac003938af00 100644 (file)
@@ -9,10 +9,10 @@ AC_PROG_INSTALL
 AC_PROG_AWK
 AC_PROG_LEX
 AC_C_CONST
-AC_CHECK_FUNCS(strdup setvbuf inet_ntoa inet_aton seteuid setresuid setreuid setegid setresgid setregid setsid flock fchmod chmod strftime strptime geteuid setenv unsetenv getenv gethostbyname2 getifaddrs getpwnam_r getpwuid_r gmtime_r localtime_r pthread_mutex_lock)
+AC_CHECK_FUNCS(strdup setvbuf inet_ntoa inet_aton seteuid setresuid setreuid setegid setresgid setregid setsid flock fchmod chmod strftime strptime geteuid setenv unsetenv getenv gethostbyname2 getifaddrs getpwnam_r getpwuid_r gmtime_r localtime_r pthread_mutex_lock sched_yield)
 AC_CHECK_FUNCS( mkstemp)
 AC_HEADER_STDARG
-AC_CHECK_HEADERS(unistd.h paths.h regex.h regexp.h regexpr.h fcntl.h memory.h ifaddrs.h sys/filio.h)
+AC_CHECK_HEADERS(unistd.h paths.h regex.h regexp.h regexpr.h fcntl.h memory.h ifaddrs.h sys/filio.h sched.h)
 dnl
 dnl Check what the return types for gethostbyname_r and getservbyname_r are.
 dnl
index f9c39ef370581c90c2ca10f767ab40a36cf79bff..d693fea7916ba45e2802aa3ba238f9ebb8a52ffc 100644 (file)
@@ -418,9 +418,14 @@ typedef struct {
 #define k5_pthread_assert_unlocked(M)  (0)
 #define k5_pthread_assert_locked(M)    (0)
 
-#ifdef DEBUG_THREADS_SLOW
+#if defined(DEBUG_THREADS_SLOW) && HAVE_SCHED_H && (HAVE_SCHED_YIELD || HAVE_PRAGMA_WEAK_REF)
 # include <sched.h>
-# define MAYBE_SCHED_YIELD()   ((void)sched_yield())
+# if !HAVE_SCHED_YIELD
+#  pragma weak sched_yield
+#  define MAYBE_SCHED_YIELD()  ((void)((&sched_yield != NULL) ? sched_yield() : 0))
+# else
+#  define MAYBE_SCHED_YIELD()  ((void)sched_yield())
+# endif
 #else
 # define MAYBE_SCHED_YIELD()   ((void)0)
 #endif