diff options
author | Ken Raeburn <raeburn@mit.edu> | 2004-08-07 15:52:52 +0000 |
---|---|---|
committer | Ken Raeburn <raeburn@mit.edu> | 2004-08-07 15:52:52 +0000 |
commit | 952ae42cdb5120d7b9410edc4f46f2e624176df4 (patch) | |
tree | 81b0d33895b1998c9c2aebede70f03f586183864 /src/include/k5-thread.h | |
parent | 6612f28ddb3cef35556df382636d131d1e4edb87 (diff) | |
download | krb5-952ae42cdb5120d7b9410edc4f46f2e624176df4.tar.gz krb5-952ae42cdb5120d7b9410edc4f46f2e624176df4.tar.xz krb5-952ae42cdb5120d7b9410edc4f46f2e624176df4.zip |
* 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.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16645 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/include/k5-thread.h')
-rw-r--r-- | src/include/k5-thread.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/include/k5-thread.h b/src/include/k5-thread.h index f9c39ef37..d693fea79 100644 --- a/src/include/k5-thread.h +++ b/src/include/k5-thread.h @@ -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 |