From: Howard Chu Date: Sat, 12 Oct 2002 01:21:21 +0000 (+0000) Subject: Prefer thr_yield over sched_yield for Solaris X-Git-Tag: NO_SLAP_OP_BLOCKS~889 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=82eed24c3defbd564ccc3c603a563ca4099ebe57;p=openldap Prefer thr_yield over sched_yield for Solaris --- diff --git a/configure.in b/configure.in index 7743bebee4..0ec757fdc4 100644 --- a/configure.in +++ b/configure.in @@ -1484,11 +1484,12 @@ dnl [ol_cv_pthread_lpthread_lexc]) dnl All POSIX Thread (final) implementations should have dnl sched_yield instead of pthread yield. - dnl check for both - AC_CHECK_FUNCS(sched_yield pthread_yield) + dnl check for both, and thr_yield for Solaris + AC_CHECK_FUNCS(sched_yield pthread_yield thr_yield) if test $ac_cv_func_sched_yield = no -a \ - $ac_cv_func_pthread_yield = no ; then + $ac_cv_func_pthread_yield = no -a \ + $ac_cv_func_thr_yield = no ; then dnl Digital UNIX has sched_yield() in -lrt AC_CHECK_LIB(rt, sched_yield, [LTHREAD_LIBS="$LTHREAD_LIBS -lrt" @@ -1497,12 +1498,6 @@ dnl [ol_cv_pthread_lpthread_lexc]) ac_cv_func_sched_yield=yes], [ac_cv_func_sched_yield=no]) fi - if test $ac_cv_func_sched_yield = no -a \ - $ac_cv_func_pthread_yield = no ; then - dnl Solaris has sched_yield() stub in -lposix4 - dnl but we'll use thr_yield instead. - AC_CHECK_FUNCS(thr_yield) - fi if test $ac_cv_func_sched_yield = no -a \ $ac_cv_func_pthread_yield = no -a \ "$ac_cv_func_thr_yield" = no ; then diff --git a/libraries/libldap_r/thr_posix.c b/libraries/libldap_r/thr_posix.c index dfeb48f63f..5ddc03a871 100644 --- a/libraries/libldap_r/thr_posix.c +++ b/libraries/libldap_r/thr_posix.c @@ -179,16 +179,16 @@ ldap_pvt_thread_kill( ldap_pvt_thread_t thread, int signo ) int ldap_pvt_thread_yield( void ) { -#if HAVE_PTHREADS == 10 +#if HAVE_THR_YIELD + return thr_yield(); + +#elif HAVE_PTHREADS == 10 return sched_yield(); #elif defined(_POSIX_THREAD_IS_GNU_PTH) sched_yield(); return 0; -#elif HAVE_THR_YIELD - return thr_yield(); - #elif HAVE_PTHREADS == 6 pthread_yield(NULL); return 0;