mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-20 22:59:34 -05:00
Replaced PREEMPTIVE_THREADS with HAVE_YIELDING_SELECT to clarify
the exact nature of the functionality being tested. -DNO_THREADS does NOT have a yield select, hence the macro is not defined. The slapd/daemon code has been changed to test both no threads and yielding select before using a timeout of NULL.
This commit is contained in:
parent
1eba97fc91
commit
04d91569e1
5 changed files with 298 additions and 316 deletions
|
|
@ -69,9 +69,6 @@
|
|||
/* define if you have PP */
|
||||
#undef HAVE_PP
|
||||
|
||||
/* define if you have a preemptive POSIX Threads implementation */
|
||||
#undef HAVE_PREEMPTIVE_PTHREADS
|
||||
|
||||
/* define if you have POSIX Threads */
|
||||
#undef HAVE_PTHREADS
|
||||
|
||||
|
|
@ -105,6 +102,9 @@
|
|||
/* define if you have XTPP */
|
||||
#undef HAVE_XTPP
|
||||
|
||||
/* define this if select() implicitly yields in thread environments */
|
||||
#undef HAVE_YIELDING_SELECT
|
||||
|
||||
/* define this for connectionless LDAP support */
|
||||
#undef LDAP_CONNECTIONLESS
|
||||
|
||||
|
|
@ -147,9 +147,6 @@
|
|||
/* define this if you want no thread support */
|
||||
#undef NO_THREADS
|
||||
|
||||
/* define this if the thread package is preemptive */
|
||||
#undef PREEMPTIVE_THREADS
|
||||
|
||||
/* define this for ACL Group support */
|
||||
#undef SLAPD_ACLGROUPS
|
||||
|
||||
|
|
|
|||
40
configure.in
40
configure.in
|
|
@ -42,7 +42,7 @@ OL_ARG_WITH(kerberos,[ --with-kerberos use Kerberos],
|
|||
auto, [auto k5 k4 afs yes no])
|
||||
OL_ARG_WITH(threads,[ --with-threads use threads],
|
||||
auto, [auto posix mach lwp yes no manual] )
|
||||
OL_ARG_WITH(preemptive,[ --with-preemptive thread implementation is preemptive],
|
||||
OL_ARG_WITH(yielding_select,[ --with-yielding-select with implicitly yielding select],
|
||||
auto, [auto yes no manual] )
|
||||
|
||||
dnl Server options
|
||||
|
|
@ -415,8 +415,8 @@ if test $ol_with_threads = auto -o $ol_with_threads = posix ; then
|
|||
AC_CHECK_LIB(pthread, pthread_join, [
|
||||
ol_link_threads=posix
|
||||
LTHREAD_LIBS="$LTHREAD_LIBS -lpthread -lexc"
|
||||
if test $ol_with_preemptive = auto ; then
|
||||
ol_with_preemptive=yes
|
||||
if test $ol_with_yielding_select = auto ; then
|
||||
ol_with_yielding_select=yes
|
||||
fi
|
||||
],,[-lexc])
|
||||
LIBS="$save_LIBS"
|
||||
|
|
@ -428,8 +428,8 @@ if test $ol_with_threads = auto -o $ol_with_threads = posix ; then
|
|||
AC_CHECK_LIB(pthreads, pthread_join, [
|
||||
ol_link_threads=posix
|
||||
LTHREAD_LIBS="$LTHREAD_LIBS -lpthreads -lmach -lexc -lc_r"
|
||||
if test $ol_with_preemptive = auto ; then
|
||||
ol_with_preemptive=yes
|
||||
if test $ol_with_yielding_select = auto ; then
|
||||
ol_with_yielding_select=yes
|
||||
fi
|
||||
],,[-lmach -lexc -lc_r])
|
||||
LIBS="$save_LIBS"
|
||||
|
|
@ -504,9 +504,9 @@ if test $ol_with_threads = auto -o $ol_with_threads = posix ; then
|
|||
thr_setconcurrency \
|
||||
)
|
||||
|
||||
dnl Check PREEMPTIVE Implementation
|
||||
if test $ol_with_preemptive = auto ; then
|
||||
AC_MSG_CHECKING([for preemptive Pthread implementation])
|
||||
dnl Check if select causes an yield
|
||||
if test $ol_with_yielding_select = auto ; then
|
||||
AC_MSG_CHECKING([if select yields])
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
|
|
@ -560,13 +560,12 @@ int argc; char **argv;
|
|||
#endif
|
||||
exit(0);
|
||||
}
|
||||
], [ol_pthread_preemptive=yes], [ol_pthread_preemptive=no], [
|
||||
AC_MSG_ERROR([crossing compiling: use --with-preemptive=yes|no|manual])])
|
||||
AC_MSG_RESULT($ol_pthread_preemptive)
|
||||
], [ol_pthread_select_yields=yes], [ol_pthread_select_yields=no], [
|
||||
AC_MSG_ERROR([crossing compiling: use --with-yielding_select=yes|no|manual])])
|
||||
AC_MSG_RESULT($ol_pthread_select_yields)
|
||||
|
||||
if test $ol_pthread_preemptive = yes ; then
|
||||
AC_DEFINE(HAVE_PREEMPTIVE_PTHREADS)
|
||||
ol_with_preemptive=yes
|
||||
if test $ol_pthread_select_yields = yes ; then
|
||||
ol_with_yielding_select=yes
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
@ -648,8 +647,8 @@ if test $ol_with_threads = auto -o $ol_with_threads = lwp ; then
|
|||
LTHREAD_LIBS="$LTHREAD_LIBS -lthread"
|
||||
ol_link_threads=thr
|
||||
|
||||
if test $ol_with_preemptive = auto ; then
|
||||
ol_with_preemptive=yes
|
||||
if test $ol_with_yielding_select = auto ; then
|
||||
ol_with_yielding_select=yes
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
|
@ -664,15 +663,15 @@ if test $ol_with_threads = auto -o $ol_with_threads = lwp ; then
|
|||
LTHREAD_LIBS="$LTHREAD_LIBS -llwp"
|
||||
ol_link_threads=lwp
|
||||
|
||||
if test $ol_with_preemptive = auto ; then
|
||||
ol_with_preemptive=no
|
||||
if test $ol_with_yielding_select = auto ; then
|
||||
ol_with_yielding_select=no
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $ol_with_preemptive = yes ; then
|
||||
AC_DEFINE(PREEMPTIVE_THREADS,1)
|
||||
if test $ol_with_yielding_select = yes ; then
|
||||
AC_DEFINE(HAVE_YIELDING_SELECT,1)
|
||||
fi
|
||||
|
||||
if test $ol_with_threads = manual ; then
|
||||
|
|
@ -731,7 +730,6 @@ if test $ol_link_threads = no ; then
|
|||
fi
|
||||
|
||||
AC_DEFINE(NO_THREADS,1)
|
||||
AC_DEFINE(PREEMPTIVE_THREADS,1)
|
||||
LTHREAD_LIBS=""
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -200,11 +200,6 @@ LDAP_BEGIN_DECL
|
|||
#define NO_THREADS 1
|
||||
#endif
|
||||
|
||||
#ifndef PREEMPTIVE_THREADS
|
||||
/* treat no threads as preemptive */
|
||||
#define PREEMPTIVE_THREADS 1
|
||||
#endif
|
||||
|
||||
typedef void *(*VFP)();
|
||||
|
||||
/* thread attributes and thread type */
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ slapd_daemon(
|
|||
|
||||
Debug( LDAP_DEBUG_CONNS, "before select active_threads %d\n",
|
||||
active_threads, 0, 0 );
|
||||
#ifdef PREEMPTIVE_THREADS
|
||||
#if defined( HAVE_YIELDING_SELECT ) || defined( NO_THREADS )
|
||||
tvp = NULL;
|
||||
#else
|
||||
tvp = active_threads ? &zero : NULL;
|
||||
|
|
|
|||
Loading…
Reference in a new issue