]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Remove unthreaded support
authorWitold Kręcicki <wpk@isc.org>
Wed, 6 Jun 2018 09:39:50 +0000 (11:39 +0200)
committerWitold Kręcicki <wpk@isc.org>
Mon, 6 Aug 2018 07:53:00 +0000 (09:53 +0200)
45 files changed:
aclocal.m4
bin/dig/dig.c
bin/named/main.c
bin/named/server.c
bin/tests/optional/rwlock_test.c
configure
configure.in
contrib/dlz/drivers/dlz_bdb_driver.c
contrib/dlz/drivers/dlz_bdbhpt_driver.c
contrib/dlz/drivers/dlz_ldap_driver.c
contrib/dlz/drivers/dlz_odbc_driver.c
contrib/dlz/drivers/dlz_postgres_driver.c
contrib/dlz/modules/bdbhpt/dlz_bdbhpt_dynamic.c
lib/dns/dst_api.c
lib/dns/geoip.c
lib/dns/name.c
lib/dns/resolver.c
lib/dns/tests/dnstest.c
lib/dns/tests/name_test.c
lib/dns/tests/rbt_test.c
lib/dns/update.c
lib/dns/zone.c
lib/irs/context.c
lib/isc/include/isc/platform.h.in
lib/isc/include/isc/refcount.h
lib/isc/include/isc/rwlock.h
lib/isc/include/isc/task.h
lib/isc/refcount.c
lib/isc/rwlock.c
lib/isc/task.c
lib/isc/tests/isctest.c
lib/isc/tests/socket_test.c
lib/isc/tests/task_test.c
lib/isc/tests/timer_test.c
lib/isc/timer.c
lib/isc/unix/app.c
lib/isc/unix/socket.c
lib/isc/unix/time.c
lib/isc/win32/include/isc/platform.h.in
lib/isc/win32/socket.c
lib/isc/x86_32/include/isc/atomic.h
lib/isc/x86_64/include/isc/atomic.h
lib/isc/xoshiro128starstar.c
lib/ns/client.c
lib/ns/tests/nstest.c

index cd81b695a8274f7e5b7d0fe1636147771e4d58c9..004ffb477175f03fe98c7ce96109d09e4de360df 100644 (file)
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
 
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -12,9 +12,9 @@
 # PARTICULAR PURPOSE.
 
 m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
-# pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
-# serial 12 (pkg-config-0.29.2)
-
+dnl pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
+dnl serial 11 (pkg-config-0.29.1)
+dnl
 dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
 dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
 dnl
@@ -55,7 +55,7 @@ dnl
 dnl See the "Since" comment for each macro you use to see what version
 dnl of the macros you require.
 m4_defun([PKG_PREREQ],
-[m4_define([PKG_MACROS_VERSION], [0.29.2])
+[m4_define([PKG_MACROS_VERSION], [0.29.1])
 m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
     [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
 ])dnl PKG_PREREQ
@@ -156,7 +156,7 @@ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
 AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
 
 pkg_failed=no
-AC_MSG_CHECKING([for $2])
+AC_MSG_CHECKING([for $1])
 
 _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
 _PKG_CONFIG([$1][_LIBS], [libs], [$2])
@@ -166,11 +166,11 @@ and $1[]_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.])
 
 if test $pkg_failed = yes; then
-        AC_MSG_RESULT([no])
+       AC_MSG_RESULT([no])
         _PKG_SHORT_ERRORS_SUPPORTED
         if test $_pkg_short_errors_supported = yes; then
                $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
-        else
+        else 
                $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
@@ -187,7 +187,7 @@ installed software in a non-standard prefix.
 _PKG_TEXT])[]dnl
         ])
 elif test $pkg_failed = untried; then
-        AC_MSG_RESULT([no])
+       AC_MSG_RESULT([no])
        m4_default([$4], [AC_MSG_FAILURE(
 [The pkg-config script could not be found or is too old.  Make sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
index 26da77758d2ac0a9cedefe01e92fbebd4cc2f041..4fd7aa183de50becc37c6fa30c0f9a6ab51cc9fa 100644 (file)
@@ -260,7 +260,7 @@ received(unsigned int bytes, isc_sockaddr_t *from, dig_query_t *query) {
                        printf(";; Query time: %ld msec\n", (long) diff / 1000);
                printf(";; SERVER: %s(%s)\n", fromtext, query->servname);
                time(&tnow);
-#if defined(ISC_PLATFORM_USETHREADS) && !defined(WIN32)
+#if !defined(WIN32)
                (void)localtime_r(&tnow, &tmnow);
 #else
                tmnow  = *localtime(&tnow);
index 3e6e8efc11cb95295c79a4b5edaac31c00daa399..2a794f552a2b22117a738644adcf46581e11be8d 100644 (file)
@@ -718,11 +718,7 @@ parse_command_line(int argc, char *argv[]) {
                        printf("linked to zlib version: %s\n",
                               zlibVersion());
 #endif
-#ifdef ISC_PLATFORM_USETHREADS
                        printf("threads support is enabled\n");
-#else
-                       printf("threads support is disabled\n");
-#endif
                        exit(0);
                case 'x':
                        /* Obsolete. No longer in use. Ignore. */
@@ -774,7 +770,6 @@ create_managers(void) {
 
        INSIST(named_g_cpus_detected > 0);
 
-#ifdef ISC_PLATFORM_USETHREADS
        if (named_g_cpus == 0)
                named_g_cpus = named_g_cpus_detected;
        isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
@@ -783,9 +778,6 @@ create_managers(void) {
                      named_g_cpus_detected,
                      named_g_cpus_detected == 1 ? "" : "s",
                      named_g_cpus, named_g_cpus == 1 ? "" : "s");
-#else
-       named_g_cpus = 1;
-#endif
 #ifdef WIN32
        named_g_udpdisp = 1;
 #else
@@ -798,12 +790,10 @@ create_managers(void) {
        if (named_g_udpdisp > named_g_cpus)
                named_g_udpdisp = named_g_cpus;
 #endif
-#ifdef ISC_PLATFORM_USETHREADS
        isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
                      NAMED_LOGMODULE_SERVER, ISC_LOG_INFO,
                      "using %u UDP listener%s per interface",
                      named_g_udpdisp, named_g_udpdisp == 1 ? "" : "s");
-#endif
 
        result = isc_taskmgr_create(named_g_mctx, named_g_cpus, 0,
                                    &named_g_taskmgr);
@@ -915,12 +905,10 @@ setup(void) {
                isc_mem_free(named_g_mctx, instance);
 #endif /* HAVE_LIBSCF */
 
-#ifdef ISC_PLATFORM_USETHREADS
        /*
         * Check for the number of cpu's before named_os_chroot().
         */
        named_g_cpus_detected = isc_os_ncpus();
-#endif
 
        named_os_chroot(named_g_chrootdir);
 
index 9ab3654ea3c1904241734f1d1af03c75790b4c08..ede2f30f20d963236646146f9855239b1ffdd9af 100644 (file)
@@ -11208,7 +11208,6 @@ named_server_status(named_server_t *server, isc_buffer_t **text) {
        }
        CHECK(putstr(text, line));
 
-#ifdef ISC_PLATFORM_USETHREADS
        snprintf(line, sizeof(line), "CPUs found: %u\n", named_g_cpus_detected);
        CHECK(putstr(text, line));
 
@@ -11218,10 +11217,6 @@ named_server_status(named_server_t *server, isc_buffer_t **text) {
        snprintf(line, sizeof(line), "UDP listeners per interface: %u\n",
                 named_g_udpdisp);
        CHECK(putstr(text, line));
-#else
-       snprintf(line, sizeof(line), "CPUs found: N/A (threads disabled)\n");
-       CHECK(putstr(text, line));
-#endif
 
        snprintf(line, sizeof(line), "number of zones: %u (%u automatic)\n",
                     zonecount, automatic);
index a540e3cd50572f5e73669ffb5e273b392ee9d24e..c6686737dde904d37c4b60223e25bd6f7943e279 100644 (file)
@@ -25,8 +25,6 @@
 #define sleep(x)       Sleep(1000 * x)
 #endif
 
-#ifdef ISC_PLATFORM_USETHREADS
-
 isc_rwlock_t lock;
 
 static isc_threadresult_t
@@ -130,15 +128,3 @@ main(int argc, char *argv[]) {
 
        return (0);
 }
-
-#else
-
-int
-main(int argc, char *argv[]) {
-       UNUSED(argc);
-       UNUSED(argv);
-       fprintf(stderr, "This test requires threads.\n");
-       return(1);
-}
-
-#endif
index 7aa991692e242d6893c85df579066b208320ac7c..17fdd9dccf2270c8ccf547f29d5f8e1bc00b3614 100755 (executable)
--- a/configure
+++ b/configure
@@ -809,7 +809,6 @@ INSTALL_LIBRARY
 ISC_THREAD_DIR
 THREADOPTSRCS
 THREADOPTOBJS
-ISC_PLATFORM_USETHREADS
 ALWAYS_DEFINES
 CHECK_DSA
 GEOIPLINKOBJS
@@ -908,6 +907,7 @@ infodir
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -1072,6 +1072,7 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1324,6 +1325,15 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1461,7 +1471,7 @@ fi
 for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
                datadir sysconfdir sharedstatedir localstatedir includedir \
                oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir
+               libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1614,6 +1624,7 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -12093,11 +12104,6 @@ $as_echo "#define ENABLE_AFL 1" >>confdefs.h
 
 fi
 
-case "$enable_afl" in
-yes)
-       LIBS="$LIBS -lpthread"
-       ;;
-esac
 
 #
 # Make very sure that these are the first files processed by
@@ -15541,8 +15547,274 @@ done
 
 
        case "$host" in
-       *solaris-*)
-               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lrt" >&5
+       *-freebsd*)
+               CC="$CC -pthread"
+               CCOPT="$CCOPT -pthread"
+               CCNOOPT="$CCNOOPT -pthread"
+               STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
+               ;;
+       *-openbsd*)
+               CC="$CC -pthread"
+               CCOPT="$CCOPT -pthread"
+               CCNOOPT="$CCNOOPT -pthread"
+               ;;
+       *-solaris*)
+               LIBS="$LIBS -lthread"
+               ;;
+       *-ibm-aix*)
+               STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
+               ;;
+       esac
+else
+       case $host in
+       *-dec-osf*)
+               CC="$CC -pthread"
+               CCOPT="$CCOPT -pthread"
+               CCNOOPT="$CCNOOPT -pthread"
+               ;;
+       *-solaris*)
+               CC="$CC -mt"
+               CCOPT="$CCOPT -mt"
+               CCNOOPT="$CCNOOPT -mt"
+               ;;
+       *-ibm-aix*)
+               STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
+               ;;
+       *-sco-sysv*uw*|*-*-sysv*UnixWare*)
+               CC="$CC -Kthread"
+               CCOPT="$CCOPT -Kthread"
+               CCNOOPT="$CCNOOPT -Kthread"
+               ;;
+       *-*-sysv*OpenUNIX*)
+               CC="$CC -Kpthread"
+               CCOPT="$CCOPT -Kpthread"
+               CCNOOPT="$CCNOOPT -Kpthread"
+               ;;
+       esac
+fi
+ALWAYS_DEFINES="-D_REENTRANT"
+THREADOPTOBJS='${THREADOPTOBJS}'
+THREADOPTSRCS='${THREADOPTSRCS}'
+thread_dir=pthreads
+#
+# We'd like to use sigwait() too
+#
+ac_fn_c_check_func "$LINENO" "sigwait" "ac_cv_func_sigwait"
+if test "x$ac_cv_func_sigwait" = xyes; then :
+  $as_echo "#define HAVE_SIGWAIT 1" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigwait in -lc" >&5
+$as_echo_n "checking for sigwait in -lc... " >&6; }
+if ${ac_cv_lib_c_sigwait+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sigwait ();
+int
+main ()
+{
+return sigwait ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_c_sigwait=yes
+else
+  ac_cv_lib_c_sigwait=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_sigwait" >&5
+$as_echo "$ac_cv_lib_c_sigwait" >&6; }
+if test "x$ac_cv_lib_c_sigwait" = xyes; then :
+  $as_echo "#define HAVE_SIGWAIT 1" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigwait in -lpthread" >&5
+$as_echo_n "checking for sigwait in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread_sigwait+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sigwait ();
+int
+main ()
+{
+return sigwait ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_pthread_sigwait=yes
+else
+  ac_cv_lib_pthread_sigwait=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_sigwait" >&5
+$as_echo "$ac_cv_lib_pthread_sigwait" >&6; }
+if test "x$ac_cv_lib_pthread_sigwait" = xyes; then :
+  $as_echo "#define HAVE_SIGWAIT 1" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _Psigwait in -lpthread" >&5
+$as_echo_n "checking for _Psigwait in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread__Psigwait+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char _Psigwait ();
+int
+main ()
+{
+return _Psigwait ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_pthread__Psigwait=yes
+else
+  ac_cv_lib_pthread__Psigwait=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread__Psigwait" >&5
+$as_echo "$ac_cv_lib_pthread__Psigwait" >&6; }
+if test "x$ac_cv_lib_pthread__Psigwait" = xyes; then :
+  $as_echo "#define HAVE_SIGWAIT 1" >>confdefs.h
+
+fi
+
+fi
+
+fi
+
+fi
+
+
+ac_fn_c_check_func "$LINENO" "pthread_attr_getstacksize" "ac_cv_func_pthread_attr_getstacksize"
+if test "x$ac_cv_func_pthread_attr_getstacksize" = xyes; then :
+  $as_echo "#define HAVE_PTHREAD_ATTR_GETSTACKSIZE 1" >>confdefs.h
+
+fi
+
+
+ac_fn_c_check_func "$LINENO" "pthread_attr_setstacksize" "ac_cv_func_pthread_attr_setstacksize"
+if test "x$ac_cv_func_pthread_attr_setstacksize" = xyes; then :
+  $as_echo "#define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1" >>confdefs.h
+
+fi
+
+
+
+# Check whether --with-locktype was given.
+if test "${with_locktype+set}" = set; then :
+  withval=$with_locktype; locktype="$withval"
+else
+  locktype="adaptive"
+fi
+
+
+case "$locktype" in
+       adaptive)
+               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_MUTEX_ADAPTIVE_NP" >&5
+$as_echo_n "checking for PTHREAD_MUTEX_ADAPTIVE_NP... " >&6; }
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+                 #ifndef _GNU_SOURCE
+                 #define _GNU_SOURCE
+                 #endif
+                 #include <pthread.h>
+
+int
+main ()
+{
+
+                 return (PTHREAD_MUTEX_ADAPTIVE_NP);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: using adaptive lock type" >&5
+$as_echo "using adaptive lock type" >&6; }
+
+$as_echo "#define HAVE_PTHREAD_MUTEX_ADAPTIVE_NP 1" >>confdefs.h
+
+else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: using standard lock type" >&5
+$as_echo "using standard lock type" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+               ;;
+       standard)
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: using standard lock type" >&5
+$as_echo "using standard lock type" >&6; }
+               ;;
+       *)
+               as_fn_error $? "You must specify \"adaptive\" or \"standard\" for --with-locktype." "$LINENO" 5
+               ;;
+esac
+
+for ac_header in sched.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sched.h" "ac_cv_header_sched_h" "$ac_includes_default"
+if test "x$ac_cv_header_sched_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SCHED_H 1
+_ACEOF
+
+fi
+
+done
+
+
+case "$host" in
+*solaris-*)
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lrt" >&5
 $as_echo_n "checking for sched_yield in -lrt... " >&6; }
 if ${ac_cv_lib_rt_sched_yield+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15587,10 +15859,10 @@ _ACEOF
 
 fi
 
-               ;;
-       esac
+       ;;
+esac
 
-       for ac_func in sched_yield pthread_yield pthread_yield_np
+for ac_func in sched_yield pthread_yield pthread_yield_np
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 done
 
 
+#
+# Additional OS-specific issues related to pthreads and sigwait.
+#
+case "$host" in
        #
-       # Additional OS-specific issues related to pthreads and sigwait.
+       # One more place to look for sigwait.
        #
-       case "$host" in
-               #
-               # One more place to look for sigwait.
-               #
-               *-freebsd*)
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigwait in -lc_r" >&5
+       *-freebsd*)
+               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigwait in -lc_r" >&5
 $as_echo_n "checking for sigwait in -lc_r... " >&6; }
 if ${ac_cv_lib_c_r_sigwait+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15652,60 +15924,60 @@ if test "x$ac_cv_lib_c_r_sigwait" = xyes; then :
 
 fi
 
-                       case $host in
-                       *-freebsd5.[012]|*-freebsd5.[012].*);;
-                       *-freebsd5.[3456789]|*-freebsd5.[3456789].*)
-                               $as_echo "#define NEED_PTHREAD_SCOPE_SYSTEM 1" >>confdefs.h
-
-                               ;;
-                       *-freebsd6.*)
-                               $as_echo "#define NEED_PTHREAD_SCOPE_SYSTEM 1" >>confdefs.h
+               case $host in
+               *-freebsd5.[012]|*-freebsd5.[012].*);;
+               *-freebsd5.[3456789]|*-freebsd5.[3456789].*)
+                       $as_echo "#define NEED_PTHREAD_SCOPE_SYSTEM 1" >>confdefs.h
 
-                               ;;
-                       esac
                        ;;
-               #
-               # BSDI 3.0 through 4.0.1 needs pthread_init() to be
-               # called before certain pthreads calls.  This is deprecated
-               # in BSD/OS 4.1.
-               #
-               *-bsdi3.*|*-bsdi4.0*)
-                       $as_echo "#define NEED_PTHREAD_INIT 1" >>confdefs.h
+               *-freebsd6.*)
+                       $as_echo "#define NEED_PTHREAD_SCOPE_SYSTEM 1" >>confdefs.h
 
                        ;;
-               #
-               # LinuxThreads requires some changes to the way we
-               # deal with signals.
-               #
-               *-linux*)
-                       $as_echo "#define HAVE_LINUXTHREADS 1" >>confdefs.h
+               esac
+               ;;
+       #
+       # BSDI 3.0 through 4.0.1 needs pthread_init() to be
+       # called before certain pthreads calls.  This is deprecated
+       # in BSD/OS 4.1.
+       #
+       *-bsdi3.*|*-bsdi4.0*)
+               $as_echo "#define NEED_PTHREAD_INIT 1" >>confdefs.h
 
-                       ;;
-               #
-               # Ensure the right sigwait() semantics on Solaris and make
-               # sure we call pthread_setconcurrency.
-               #
-               *-solaris*)
-                       $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+               ;;
+       #
+       # LinuxThreads requires some changes to the way we
+       # deal with signals.
+       #
+       *-linux*)
+               $as_echo "#define HAVE_LINUXTHREADS 1" >>confdefs.h
+
+               ;;
+       #
+       # Ensure the right sigwait() semantics on Solaris and make
+       # sure we call pthread_setconcurrency.
+       #
+       *-solaris*)
+               $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
 
-                       ac_fn_c_check_func "$LINENO" "pthread_setconcurrency" "ac_cv_func_pthread_setconcurrency"
+               ac_fn_c_check_func "$LINENO" "pthread_setconcurrency" "ac_cv_func_pthread_setconcurrency"
 if test "x$ac_cv_func_pthread_setconcurrency" = xyes; then :
   $as_echo "#define CALL_PTHREAD_SETCONCURRENCY 1" >>confdefs.h
 
 fi
 
-                       ;;
-               #
-               # UnixWare does things its own way.
-               #
-               *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
-                       $as_echo "#define HAVE_UNIXWARE_SIGWAIT 1" >>confdefs.h
+               ;;
+       #
+       # UnixWare does things its own way.
+       #
+       *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
+               $as_echo "#define HAVE_UNIXWARE_SIGWAIT 1" >>confdefs.h
 
-                       ;;
-       esac
+               ;;
+esac
 
-       # Look for functions relating to thread naming
-       for ac_func in pthread_setname_np pthread_set_name_np
+# Look for functions relating to thread naming
+for ac_func in pthread_setname_np pthread_set_name_np
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -15717,7 +15989,7 @@ _ACEOF
 fi
 done
 
-       for ac_header in pthread_np.h
+for ac_header in pthread_np.h
 do :
   ac_fn_c_check_header_compile "$LINENO" "pthread_np.h" "ac_cv_header_pthread_np_h" "#include <pthread.h>
 "
 done
 
 
-       #
-       # Look for sysconf to allow detection of the number of processors.
-       #
-       ac_fn_c_check_func "$LINENO" "sysconf" "ac_cv_func_sysconf"
+#
+# Look for sysconf to allow detection of the number of processors.
+#
+ac_fn_c_check_func "$LINENO" "sysconf" "ac_cv_func_sysconf"
 if test "x$ac_cv_func_sysconf" = xyes; then :
   $as_echo "#define HAVE_SYSCONF 1" >>confdefs.h
 
 fi
 
 
-else
-       ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS"
-       thread_dir=nothreads
-       THREADOPTOBJS=""
-       THREADOPTSRCS=""
-       ALWAYS_DEFINES=""
-fi
-
-
 
 
 
@@ -17385,23 +17648,6 @@ if test "x$ac_cv_func_getc_unlocked" = xyes; then :
 fi
 
 
-#
-# Indicate what the final decision was regarding threads.
-#
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build with threads" >&5
-$as_echo_n "checking whether to build with threads... " >&6; }
-if $use_threads; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-#
-# End of pthreads stuff.
-#
-
 #
 # Large File
 #
 #
 # CPU relax (for spin locks)
 #
-if $use_threads
-then
-       case "$host" in
-       i[3456]86-*)
-               # x86_32
-               { $as_echo "$as_me:${as_lineno-$LINENO}: checking if asm(\"rep; nop\"); works" >&5
+case "$host" in
+i[3456]86-*)
+       # x86_32
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if asm(\"rep; nop\"); works" >&5
 $as_echo_n "checking if asm(\"rep; nop\"); works... " >&6; }
-               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -20212,18 +20456,18 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-                ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"
+        ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-               ;;
-       x86_64-*|amd64-*)
-               # x86_64
-               { $as_echo "$as_me:${as_lineno-$LINENO}: checking if asm(\"rep; nop\"); works" >&5
+       ;;
+x86_64-*|amd64-*)
+       # x86_64
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if asm(\"rep; nop\"); works" >&5
 $as_echo_n "checking if asm(\"rep; nop\"); works... " >&6; }
-               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -20237,18 +20481,18 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-                ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"
+        ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-               ;;
-       ia64-*)
-               # ia64
-               { $as_echo "$as_me:${as_lineno-$LINENO}: checking if asm(\"hint @pause\"); works" >&5
+       ;;
+ia64-*)
+       # ia64
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if asm(\"hint @pause\"); works" >&5
 $as_echo_n "checking if asm(\"hint @pause\"); works... " >&6; }
-               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -20262,28 +20506,28 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-                ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"hint @pause\")"
+        ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"hint @pause\")"
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-               ;;
-       sparc-*)
-               # sparc
-               { $as_echo "$as_me:${as_lineno-$LINENO}: checking if cpu_relax(); or __cpu_relax(); works" >&5
+       ;;
+sparc-*)
+       # sparc
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if cpu_relax(); or __cpu_relax(); works" >&5
 $as_echo_n "checking if cpu_relax(); or __cpu_relax(); works... " >&6; }
-               ac_fn_c_check_func "$LINENO" "cpu_relax" "ac_cv_func_cpu_relax"
+       ac_fn_c_check_func "$LINENO" "cpu_relax" "ac_cv_func_cpu_relax"
 if test "x$ac_cv_func_cpu_relax" = xyes; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-                ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP cpu_relax()"
+        ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP cpu_relax()"
 else
   ac_fn_c_check_func "$LINENO" "__cpu_relax" "ac_cv_func___cpu_relax"
 if test "x$ac_cv_func___cpu_relax" = xyes; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-                  ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP __cpu_relax()"
+          ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP __cpu_relax()"
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -20291,9 +20535,8 @@ fi
 
 fi
 
-               ;;
-       esac
-fi
+       ;;
+esac
 
 
 
@@ -20606,9 +20849,6 @@ DNSTAPOBJS=
 DNSTAPTARGETS=
 DNSTAP_PB_C_H=
 if test "x$use_dnstap" != "xno"; then
-       if ! $use_threads; then
-               as_fn_error $? "Dnstap requires threads." "$LINENO" 5
-       fi
 
 # Check whether --with-protobuf-c was given.
 if test "${with_protobuf_c+set}" = set; then :
@@ -21747,8 +21987,8 @@ case $with_libidn2 in #(
   yes) :
 
 pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libidn2" >&5
-$as_echo_n "checking for libidn2... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBIDN2" >&5
+$as_echo_n "checking for LIBIDN2... " >&6; }
 
 if test -n "$LIBIDN2_CFLAGS"; then
     pkg_cv_LIBIDN2_CFLAGS="$LIBIDN2_CFLAGS"
@@ -21788,7 +22028,7 @@ fi
 
 
 if test $pkg_failed = yes; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -21815,7 +22055,7 @@ Alternatively, you may set the environment variables LIBIDN2_CFLAGS
 and LIBIDN2_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details." "$LINENO" 5
 elif test $pkg_failed = untried; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
        { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -21955,8 +22195,8 @@ case $with_cmocka in #(
   yes) :
 
 pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cmocka" >&5
-$as_echo_n "checking for cmocka... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CMOCKA" >&5
+$as_echo_n "checking for CMOCKA... " >&6; }
 
 if test -n "$CMOCKA_CFLAGS"; then
     pkg_cv_CMOCKA_CFLAGS="$CMOCKA_CFLAGS"
@@ -21996,7 +22236,7 @@ fi
 
 
 if test $pkg_failed = yes; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -22023,7 +22263,7 @@ Alternatively, you may set the environment variables CMOCKA_CFLAGS
 and CMOCKA_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details." "$LINENO" 5
 elif test $pkg_failed = untried; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
        { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -22296,9 +22536,6 @@ fi
 
 case "$use_tuning" in
        large)
-               if ! $use_threads; then
-                       as_fn_error $? "Large-system tuning requires threads." "$LINENO" 5
-               fi
 
 $as_echo "#define TUNE_LARGE 1" >>confdefs.h
 
@@ -26058,11 +26295,8 @@ report() {
     echo "Configuration summary:"
     echo "-------------------------------------------------------------------------------"
     echo "Optional features enabled:"
-    if $use_threads; then
-       echo "    Multiprocessing support (--enable-threads)"
-       if test "yes" = "$enable_full_report" -o "standard" = "$locktype"; then
-           echo "        Mutex lock type: $locktype"
-       fi
+    if test "yes" = "$enable_full_report" -o "standard" = "$locktype"; then
+       echo "        Mutex lock type: $locktype"
     fi
     test "large" = "$use_tuning" && echo "    Large-system tuning (--with-tuning)"
     test "no" = "$use_dnstap" || \
@@ -26127,7 +26361,6 @@ report() {
     echo "-------------------------------------------------------------------------------"
 
     echo "Features disabled or unavailable on this platform:"
-    $use_threads || echo "    Multiprocessing support (--enable-threads)"
     test "no" = "$enable_ipv6" -o "no" = "$found_ipv6" && \
            echo "    IPv6 support (--enable-ipv6)"
     test "large" = "$use_tuning" || echo "    Large-system tuning (--with-tuning)"
index 0b92cfa2a89a6188469279f484483f9f4fa581f4..11044889f2fd7831c523e36985eff6427262e07f 100644 (file)
@@ -105,11 +105,6 @@ AC_ARG_ENABLE(afl,
                                [default=no]]),
              [AC_DEFINE([ENABLE_AFL], [1],
                         [Define to enable American Fuzzy Lop test harness])])
-case "$enable_afl" in
-yes)
-       LIBS="$LIBS -lpthread"
-       ;;
-esac
 
 #
 # Make very sure that these are the first files processed by
@@ -1005,83 +1000,175 @@ then
        AC_CHECK_HEADERS(sched.h)
 
        case "$host" in
-       *solaris-*)
-               AC_CHECK_LIB(rt, sched_yield)
+       *-freebsd*)
+               CC="$CC -pthread"
+               CCOPT="$CCOPT -pthread"
+               CCNOOPT="$CCNOOPT -pthread"
+               STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
+               ;;
+       *-openbsd*)
+               CC="$CC -pthread"
+               CCOPT="$CCOPT -pthread"
+               CCNOOPT="$CCNOOPT -pthread"
+               ;;
+       *-solaris*)
+               LIBS="$LIBS -lthread"
+               ;;
+       *-ibm-aix*)
+               STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
+               ;;
+       esac
+else
+       case $host in
+       *-dec-osf*)
+               CC="$CC -pthread"
+               CCOPT="$CCOPT -pthread"
+               CCNOOPT="$CCNOOPT -pthread"
+               ;;
+       *-solaris*)
+               CC="$CC -mt"
+               CCOPT="$CCOPT -mt"
+               CCNOOPT="$CCNOOPT -mt"
+               ;;
+       *-ibm-aix*)
+               STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
+               ;;
+       *-sco-sysv*uw*|*-*-sysv*UnixWare*)
+               CC="$CC -Kthread"
+               CCOPT="$CCOPT -Kthread"
+               CCNOOPT="$CCNOOPT -Kthread"
+               ;;
+       *-*-sysv*OpenUNIX*)
+               CC="$CC -Kpthread"
+               CCOPT="$CCOPT -Kpthread"
+               CCNOOPT="$CCNOOPT -Kpthread"
                ;;
        esac
+fi
+ALWAYS_DEFINES="-D_REENTRANT"
+THREADOPTOBJS='${THREADOPTOBJS}'
+THREADOPTSRCS='${THREADOPTSRCS}'
+thread_dir=pthreads
+#
+# We'd like to use sigwait() too
+#
+AC_CHECK_FUNC(sigwait,
+             AC_DEFINE(HAVE_SIGWAIT),
+             AC_CHECK_LIB(c, sigwait,
+             AC_DEFINE(HAVE_SIGWAIT),
+             AC_CHECK_LIB(pthread, sigwait,
+                          AC_DEFINE(HAVE_SIGWAIT),
+                          AC_CHECK_LIB(pthread, _Psigwait,
+                                       AC_DEFINE(HAVE_SIGWAIT),))))
+
+AC_CHECK_FUNC(pthread_attr_getstacksize,
+             AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),)
+
+AC_CHECK_FUNC(pthread_attr_setstacksize,
+             AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),)
+
+AC_ARG_WITH(locktype,
+           AS_HELP_STRING([--with-locktype=ARG],
+                          [Specify mutex lock type
+                               (adaptive or standard)]),
+           locktype="$withval", locktype="adaptive")
+
+case "$locktype" in
+       adaptive)
+               AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP])
+
+               AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+                 #ifndef _GNU_SOURCE
+                 #define _GNU_SOURCE
+                 #endif
+                 #include <pthread.h>
+               ]], [[
+                 return (PTHREAD_MUTEX_ADAPTIVE_NP);
+               ]])],
+               [ AC_MSG_RESULT(using adaptive lock type)
+                 AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], 1,
+                           [Support for PTHREAD_MUTEX_ADAPTIVE_NP]) ],
+               [ AC_MSG_RESULT(using standard lock type) ])
+               ;;
+       standard)
+               AC_MSG_RESULT(using standard lock type)
+               ;;
+       *)
+               AC_MSG_ERROR([You must specify "adaptive" or "standard" for --with-locktype.])
+               ;;
+esac
 
-       AC_CHECK_FUNCS(sched_yield pthread_yield pthread_yield_np)
+AC_CHECK_HEADERS(sched.h)
 
+case "$host" in
+*solaris-*)
+       AC_CHECK_LIB(rt, sched_yield)
+       ;;
+esac
+
+AC_CHECK_FUNCS(sched_yield pthread_yield pthread_yield_np)
+
+#
+# Additional OS-specific issues related to pthreads and sigwait.
+#
+case "$host" in
        #
-       # Additional OS-specific issues related to pthreads and sigwait.
+       # One more place to look for sigwait.
        #
-       case "$host" in
-               #
-               # One more place to look for sigwait.
-               #
-               *-freebsd*)
-                       AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),)
-                       case $host in
-                       *-freebsd5.[[012]]|*-freebsd5.[[012]].*);;
-                       *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*)
-                               AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
-                               ;;
-                       *-freebsd6.*)
-                               AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
-                               ;;
-                       esac
-                       ;;
-               #
-               # BSDI 3.0 through 4.0.1 needs pthread_init() to be
-               # called before certain pthreads calls.  This is deprecated
-               # in BSD/OS 4.1.
-               #
-               *-bsdi3.*|*-bsdi4.0*)
-                       AC_DEFINE(NEED_PTHREAD_INIT)
-                       ;;
-               #
-               # LinuxThreads requires some changes to the way we
-               # deal with signals.
-               #
-               *-linux*)
-                       AC_DEFINE(HAVE_LINUXTHREADS)
-                       ;;
-               #
-               # Ensure the right sigwait() semantics on Solaris and make
-               # sure we call pthread_setconcurrency.
-               #
-               *-solaris*)
-                       AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
-                       AC_CHECK_FUNC(pthread_setconcurrency,
-                                     AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY))
+       *-freebsd*)
+               AC_CHECK_LIB(c_r, sigwait, AC_DEFINE(HAVE_SIGWAIT),)
+               case $host in
+               *-freebsd5.[[012]]|*-freebsd5.[[012]].*);;
+               *-freebsd5.[[3456789]]|*-freebsd5.[[3456789]].*)
+                       AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
                        ;;
-               #
-               # UnixWare does things its own way.
-               #
-               *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
-                       AC_DEFINE(HAVE_UNIXWARE_SIGWAIT)
+               *-freebsd6.*)
+                       AC_DEFINE(NEED_PTHREAD_SCOPE_SYSTEM)
                        ;;
-       esac
-
-       # Look for functions relating to thread naming
-       AC_CHECK_FUNCS(pthread_setname_np pthread_set_name_np)
-       AC_CHECK_HEADERS([pthread_np.h], [], [], [#include <pthread.h>])
-
+               esac
+               ;;
+       #
+       # BSDI 3.0 through 4.0.1 needs pthread_init() to be
+       # called before certain pthreads calls.  This is deprecated
+       # in BSD/OS 4.1.
+       #
+       *-bsdi3.*|*-bsdi4.0*)
+               AC_DEFINE(NEED_PTHREAD_INIT)
+               ;;
        #
-       # Look for sysconf to allow detection of the number of processors.
+       # LinuxThreads requires some changes to the way we
+       # deal with signals.
        #
-       AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),)
+       *-linux*)
+               AC_DEFINE(HAVE_LINUXTHREADS)
+               ;;
+       #
+       # Ensure the right sigwait() semantics on Solaris and make
+       # sure we call pthread_setconcurrency.
+       #
+       *-solaris*)
+               AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
+               AC_CHECK_FUNC(pthread_setconcurrency,
+                             AC_DEFINE(CALL_PTHREAD_SETCONCURRENCY))
+               ;;
+       #
+       # UnixWare does things its own way.
+       #
+       *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
+               AC_DEFINE(HAVE_UNIXWARE_SIGWAIT)
+               ;;
+esac
 
-else
-       ISC_PLATFORM_USETHREADS="#undef ISC_PLATFORM_USETHREADS"
-       thread_dir=nothreads
-       THREADOPTOBJS=""
-       THREADOPTSRCS=""
-       ALWAYS_DEFINES=""
-fi
+# Look for functions relating to thread naming
+AC_CHECK_FUNCS(pthread_setname_np pthread_set_name_np)
+AC_CHECK_HEADERS([pthread_np.h], [], [], [#include <pthread.h>])
+
+#
+# Look for sysconf to allow detection of the number of processors.
+#
+AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF),)
 
 AC_SUBST(ALWAYS_DEFINES)
-AC_SUBST(ISC_PLATFORM_USETHREADS)
 AC_SUBST(THREADOPTOBJS)
 AC_SUBST(THREADOPTSRCS)
 ISC_THREAD_DIR=$thread_dir
@@ -1862,20 +1949,6 @@ AC_CHECK_LIB(scf, smf_enable_instance)
 AC_CHECK_FUNC(flockfile, AC_DEFINE(HAVE_FLOCKFILE),)
 AC_CHECK_FUNC(getc_unlocked, AC_DEFINE(HAVE_GETCUNLOCKED),)
 
-# 
-# Indicate what the final decision was regarding threads.
-#
-AC_MSG_CHECKING(whether to build with threads)
-if $use_threads; then
-       AC_MSG_RESULT(yes)
-else
-       AC_MSG_RESULT(no)
-fi
-
-# 
-# End of pthreads stuff.
-#
-
 #
 # Large File
 #
@@ -3393,52 +3466,49 @@ fi
 #
 # CPU relax (for spin locks)
 #
-if $use_threads
-then
-       case "$host" in
-       [i[3456]86-*])
-               # x86_32
-               AC_MSG_CHECKING([if asm("rep; nop"); works])
-               AC_TRY_COMPILE(,[asm("rep; nop");],
-               [AC_MSG_RESULT(yes)
-                ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"],
-               [AC_MSG_RESULT(no)],
-               [AC_MSG_RESULT([cross compile, assume yes])
-                ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"])
-               ;;
-       x86_64-*|amd64-*)
-               # x86_64
-               AC_MSG_CHECKING([if asm("rep; nop"); works])
-               AC_TRY_COMPILE(,[asm("rep; nop");],
-               [AC_MSG_RESULT(yes)
-                ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"],
-               [AC_MSG_RESULT(no)],
-               [AC_MSG_RESULT([cross compile, assume yes])
-                ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"])
-               ;;
-       ia64-*)
-               # ia64
-               AC_MSG_CHECKING([if asm("hint @pause"); works])
-               AC_TRY_COMPILE(,[asm("hint @pause");],
-               [AC_MSG_RESULT(yes)
-                ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"hint @pause\")"],
-               [AC_MSG_RESULT(no)],
-               [AC_MSG_RESULT([cross compile, assume yes])
-                ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"hint @pause\")"])
-               ;;
-       sparc-*)
-               # sparc
-               AC_MSG_CHECKING([if cpu_relax(); or __cpu_relax(); works])
-               AC_CHECK_FUNC(cpu_relax,
-               [AC_MSG_RESULT(yes)
-                ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP cpu_relax()"],
-                [AC_CHECK_FUNC(__cpu_relax,
-                 [AC_MSG_RESULT(yes)
-                  ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP __cpu_relax()"],
-                  [AC_MSG_RESULT(no)])])
-               ;;
-       esac
-fi
+case "$host" in
+[i[3456]86-*])
+       # x86_32
+       AC_MSG_CHECKING([if asm("rep; nop"); works])
+       AC_TRY_COMPILE(,[asm("rep; nop");],
+       [AC_MSG_RESULT(yes)
+        ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"],
+       [AC_MSG_RESULT(no)],
+       [AC_MSG_RESULT([cross compile, assume yes])
+        ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"])
+       ;;
+x86_64-*|amd64-*)
+       # x86_64
+       AC_MSG_CHECKING([if asm("rep; nop"); works])
+       AC_TRY_COMPILE(,[asm("rep; nop");],
+       [AC_MSG_RESULT(yes)
+        ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"],
+       [AC_MSG_RESULT(no)],
+       [AC_MSG_RESULT([cross compile, assume yes])
+        ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"rep; nop\")"])
+       ;;
+ia64-*)
+       # ia64
+       AC_MSG_CHECKING([if asm("hint @pause"); works])
+       AC_TRY_COMPILE(,[asm("hint @pause");],
+       [AC_MSG_RESULT(yes)
+        ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"hint @pause\")"],
+       [AC_MSG_RESULT(no)],
+       [AC_MSG_RESULT([cross compile, assume yes])
+        ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP asm(\"hint @pause\")"])
+       ;;
+sparc-*)
+       # sparc
+       AC_MSG_CHECKING([if cpu_relax(); or __cpu_relax(); works])
+       AC_CHECK_FUNC(cpu_relax,
+       [AC_MSG_RESULT(yes)
+        ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP cpu_relax()"],
+        [AC_CHECK_FUNC(__cpu_relax,
+         [AC_MSG_RESULT(yes)
+          ISC_PLATFORM_BUSYWAITNOP="#define ISC_PLATFORM_BUSYWAITNOP __cpu_relax()"],
+          [AC_MSG_RESULT(no)])])
+       ;;
+esac
 
 AC_SUBST(ISC_PLATFORM_BUSYWAITNOP)
 
@@ -3573,9 +3643,6 @@ DNSTAPOBJS=
 DNSTAPTARGETS=
 DNSTAP_PB_C_H=
 if test "x$use_dnstap" != "xno"; then
-       if ! $use_threads; then
-               AC_MSG_ERROR([Dnstap requires threads.])
-       fi
        AC_ARG_WITH([protobuf-c],
                    AS_HELP_STRING([--with-protobuf-c=path],
                                   [Path where protobuf-c is installed, for dnstap]), [
@@ -3947,9 +4014,6 @@ AC_ARG_WITH(tuning,
 
 case "$use_tuning" in
        large)
-               if ! $use_threads; then
-                       AC_MSG_ERROR([Large-system tuning requires threads.])
-               fi
                AC_DEFINE(TUNE_LARGE, 1, [Define to use large-system tuning.])
                AC_MSG_RESULT(using large-system tuning)
                ;;
@@ -4569,11 +4633,8 @@ report() {
     echo "Configuration summary:"
     echo "-------------------------------------------------------------------------------"
     echo "Optional features enabled:"
-    if $use_threads; then
-       echo "    Multiprocessing support (--enable-threads)"
-       if test "yes" = "$enable_full_report" -o "standard" = "$locktype"; then
-           echo "        Mutex lock type: $locktype"
-       fi
+    if test "yes" = "$enable_full_report" -o "standard" = "$locktype"; then
+       echo "        Mutex lock type: $locktype"
     fi
     test "large" = "$use_tuning" && echo "    Large-system tuning (--with-tuning)"
     test "no" = "$use_dnstap" || \
@@ -4638,7 +4699,6 @@ report() {
     echo "-------------------------------------------------------------------------------"
 
     echo "Features disabled or unavailable on this platform:"
-    $use_threads || echo "    Multiprocessing support (--enable-threads)"
     test "no" = "$enable_ipv6" -o "no" = "$found_ipv6" && \
            echo "    IPv6 support (--enable-ipv6)"
     test "large" = "$use_tuning" || echo "    Large-system tuning (--with-tuning)"
index 7fd283e4c03e78f9ba9c98a4cb1079cbbed3cf91..c9c5bd2706e5650c6bb5bda8e06f9fed1bb93b08 100644 (file)
 static dns_sdlzimplementation_t *dlz_bdb = NULL;
 
 /* should the bdb driver use threads. */
-#ifdef ISC_PLATFORM_USETHREADS
 #define bdb_threads DB_THREAD
-#else
-#define bdb_threads 0
-#endif
 
 /* BDB database names */
 #define dlz_data "dns_data"
index 420be6302670486e689ed8346513f00ba76b3ecc..09f0082912c9de445e51ee854b0777648edc0fac 100644 (file)
 static dns_sdlzimplementation_t *dlz_bdbhpt = NULL;
 
 /* should the bdb driver use threads. */
-#ifdef ISC_PLATFORM_USETHREADS
 #define bdbhpt_threads DB_THREAD
-#else
-#define bdbhpt_threads 0
-#endif
 
 /* bdbhpt database names */
 #define dlz_data "dns_data"
index c03b1c8ab0cab4e8e4c68a3ddec86aa2e61e7ec3..d203dfe50f9ffaee3feb1d072fb39c5e122e71f8 100644 (file)
@@ -93,11 +93,7 @@ static dns_sdlzimplementation_t *dlz_ldap = NULL;
  */
 
 typedef struct {
-#ifdef ISC_PLATFORM_USETHREADS
        db_list_t    *db; /*%< handle to a list of DB */
-#else
-       dbinstance_t *db; /*%< handle to db */
-#endif
        int method;     /*%< security authentication method */
        char *user;     /*%< who is authenticating */
        char *cred;     /*%< password for simple authentication method */
@@ -243,9 +239,6 @@ dlz_ldap_connect(ldap_instance_t *dbi, dbinstance_t *dbc) {
        return (result);
 }
 
-#ifdef ISC_PLATFORM_USETHREADS
-
-
 /*%
  * Properly cleans up a list of database instances.
  * This function is only used when the driver is compiled for
@@ -315,7 +308,6 @@ ldap_find_avail_conn(db_list_t *dblist) {
                      count);
        return (NULL);
 }
-#endif /* ISC_PLATFORM_USETHREADS */
 
 static isc_result_t
 ldap_process_results(LDAP *dbc, LDAPMessage *msg, char ** attrs,
@@ -568,22 +560,10 @@ ldap_get_results(const char *zone, const char *record,
        int entries;
 
        /* get db instance / connection */
-#ifdef ISC_PLATFORM_USETHREADS
-
        /* find an available DBI from the list */
        dbi = ldap_find_avail_conn((db_list_t *)
                                   ((ldap_instance_t *)dbdata)->db);
 
-#else /* ISC_PLATFORM_USETHREADS */
-
-       /*
-        * only 1 DBI - no need to lock instance lock either
-        * only 1 thread in the whole process, no possible contention.
-        */
-       dbi =  (dbinstance_t *) ((ldap_instance_t *)dbdata)->db;
-
-#endif /* ISC_PLATFORM_USETHREADS */
-
        /* if DBI is null, can't do anything else */
        if (dbi == NULL)
                return (ISC_R_FAILURE);
@@ -844,13 +824,9 @@ ldap_get_results(const char *zone, const char *record,
        if (dbi->client != NULL)
                isc_mem_free(named_g_mctx, dbi->client);
 
-#ifdef ISC_PLATFORM_USETHREADS
-
        /* release the lock so another thread can use this dbi */
        isc_mutex_unlock(&dbi->instance_lock);
 
-#endif /* ISC_PLATFORM_USETHREADS */
-
         /* release query string */
        if (querystring  != NULL)
                isc_mem_free(named_g_mctx, querystring );
@@ -938,30 +914,19 @@ dlz_ldap_create(const char *dlzname, unsigned int argc, char *argv[],
        dbinstance_t *dbi = NULL;
        int protocol;
        int method;
-
-#ifdef ISC_PLATFORM_USETHREADS
-       /* if multi-threaded, we need a few extra variables. */
        int dbcount;
        char *endp;
 /* db_list_t *dblist = NULL; */
        int i;
 
-#endif /* ISC_PLATFORM_USETHREADS */
 
        UNUSED(dlzname);
        UNUSED(driverarg);
 
-#ifdef ISC_PLATFORM_USETHREADS
        /* if debugging, let user know we are multithreaded. */
        isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
                      DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(1),
                      "LDAP driver running multithreaded");
-#else /* ISC_PLATFORM_USETHREADS */
-       /* if debugging, let user know we are single threaded. */
-       isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                     DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(1),
-                     "LDAP driver running single threaded");
-#endif /* ISC_PLATFORM_USETHREADS */
 
        if (argc < 9) {
                isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
@@ -1009,9 +974,6 @@ dlz_ldap_create(const char *dlzname, unsigned int argc, char *argv[],
                return (ISC_R_FAILURE);
        }
 
-       /* multithreaded build can have multiple DB connections */
-#ifdef ISC_PLATFORM_USETHREADS
-
        /* check how many db connections we should create */
        dbcount = strtol(argv[1], &endp, 10);
        if (*endp != '\0' || dbcount < 0) {
@@ -1021,7 +983,6 @@ dlz_ldap_create(const char *dlzname, unsigned int argc, char *argv[],
                              "must be positive.");
                return (ISC_R_FAILURE);
        }
-#endif
 
        /* check that LDAP URL parameters make sense */
        switch(argc) {
@@ -1077,7 +1038,6 @@ dlz_ldap_create(const char *dlzname, unsigned int argc, char *argv[],
                goto cleanup;
        }
 
-#ifdef ISC_PLATFORM_USETHREADS
        /* allocate memory for database connection list */
        ldap_inst->db = isc_mem_get(named_g_mctx, sizeof(db_list_t));
        if (ldap_inst->db == NULL) {
@@ -1094,8 +1054,6 @@ dlz_ldap_create(const char *dlzname, unsigned int argc, char *argv[],
         */
        for (i = 0; i < dbcount; i++) {
 
-#endif /* ISC_PLATFORM_USETHREADS */
-
                /* how many queries were passed in from config file? */
                switch(argc) {
                case 9:
@@ -1137,18 +1095,9 @@ dlz_ldap_create(const char *dlzname, unsigned int argc, char *argv[],
                        goto cleanup;
                }
 
-#ifdef ISC_PLATFORM_USETHREADS
-               /* when multithreaded, build a list of DBI's */
                ISC_LINK_INIT(dbi, link);
                ISC_LIST_APPEND(*(ldap_inst->db), dbi, link);
-#else
-               /*
-                * when single threaded, hold onto the one connection
-                * instance.
-                */
-               ldap_inst->db = dbi;
 
-#endif
                /* attempt to connect */
                result = dlz_ldap_connect(ldap_inst, dbi);
 
@@ -1165,18 +1114,11 @@ dlz_ldap_create(const char *dlzname, unsigned int argc, char *argv[],
                         * allocate memory
                         */
                case ISC_R_NOMEMORY:
-#ifdef ISC_PLATFORM_USETHREADS
                        isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
                                      DNS_LOGMODULE_DLZ, ISC_LOG_ERROR,
                                      "LDAP driver could not allocate memory "
                                      "for connection number %u",
                                      i+1);
-#else
-                       isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                                     DNS_LOGMODULE_DLZ, ISC_LOG_ERROR,
-                                     "LDAP driver could not allocate memory "
-                                     "for connection");
-#endif
                        goto cleanup;
                        break;
                        /*
@@ -1193,18 +1135,11 @@ dlz_ldap_create(const char *dlzname, unsigned int argc, char *argv[],
                        break;
                        /* failure means couldn't connect to ldap server */
                case ISC_R_FAILURE:
-#ifdef ISC_PLATFORM_USETHREADS
                        isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
                                      DNS_LOGMODULE_DLZ, ISC_LOG_ERROR,
                                      "LDAP driver could not "
                                      "bind connection number %u to server.",
                                      i+1);
-#else
-                       isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                                     DNS_LOGMODULE_DLZ, ISC_LOG_ERROR,
-                                     "LDAP driver could not "
-                                     "bind connection to server.");
-#endif
                        goto cleanup;
                        break;
                        /*
@@ -1220,15 +1155,10 @@ dlz_ldap_create(const char *dlzname, unsigned int argc, char *argv[],
                        break;
                } /* end switch(result) */
 
-
-#ifdef ISC_PLATFORM_USETHREADS
-
                /* set DBI = null for next loop through. */
                dbi = NULL;
        }       /* end for loop */
 
-#endif /* ISC_PLATFORM_USETHREADS */
-
 
        /* set dbdata to the ldap_instance we created. */
        *dbdata = ldap_inst;
@@ -1247,20 +1177,10 @@ dlz_ldap_destroy(void *driverarg, void *dbdata) {
        UNUSED(driverarg);
 
        if (dbdata != NULL) {
-#ifdef ISC_PLATFORM_USETHREADS
                /* cleanup the list of DBI's */
                ldap_destroy_dblist((db_list_t *)
                                    ((ldap_instance_t *)dbdata)->db);
 
-#else /* ISC_PLATFORM_USETHREADS */
-               if (((ldap_instance_t *)dbdata)->db->dbconn != NULL)
-                       ldap_unbind_s((LDAP *)
-                                     ((ldap_instance_t *)dbdata)->db->dbconn);
-
-               /* destroy single DB instance */
-               destroy_sqldbinstance(((ldap_instance_t *)dbdata)->db);
-#endif /* ISC_PLATFORM_USETHREADS */
-
                if (((ldap_instance_t *)dbdata)->hosts != NULL)
                        isc_mem_free(named_g_mctx,
                                     ((ldap_instance_t *)dbdata)->hosts);
index 2f1dba9aa16a2ba37ed3bdfa3a590d552f56da19..2acd4049dee847273c716bd7969557fb69266252 100644 (file)
@@ -99,17 +99,7 @@ typedef struct{
  */
 
 typedef struct {
-
-#ifdef ISC_PLATFORM_USETHREADS
-
     db_list_t    *db;       /* handle to a list of DB */
-
-#else
-
-    dbinstance_t *db;       /* handle to db */
-
-#endif
-
     SQLHENV      sql_env;  /* handle to SQL environment */
     SQLCHAR      *dsn;
     SQLCHAR      *user;
@@ -136,9 +126,6 @@ safeLen(void *a) {
 
 static void
 destroy_odbc_instance(odbc_instance_t *odbc_inst) {
-
-#ifdef ISC_PLATFORM_USETHREADS
-
        dbinstance_t *ndbi = NULL;
        dbinstance_t *dbi = NULL;
 
@@ -180,34 +167,6 @@ destroy_odbc_instance(odbc_instance_t *odbc_inst) {
        /* release memory for the list structure */
        isc_mem_put(named_g_mctx, odbc_inst->db, sizeof(db_list_t));
 
-#else /* ISC_PLATFORM_USETHREADS */
-
-       /* free statement handle */
-       if (((odbc_db_t *) (odbc_inst->db->dbconn))->stmnt != NULL) {
-               SQLFreeHandle(SQL_HANDLE_STMT,
-                             ((odbc_db_t *) (odbc_inst->db->dbconn))->stmnt);
-               ((odbc_db_t *) (odbc_inst->db->dbconn))->stmnt = NULL;
-       }
-
-       /* disconnect from database, free connection handle */
-       if (((odbc_db_t *) (odbc_inst->db->dbconn))->dbc != NULL) {
-               SQLDisconnect(((odbc_db_t *) (odbc_inst->db->dbconn))->dbc);
-               SQLFreeHandle(SQL_HANDLE_DBC,
-                             ((odbc_db_t *) (odbc_inst->db->dbconn))->dbc);
-               ((odbc_db_t *) (odbc_inst->db->dbconn))->dbc = NULL;
-       }
-       /*      free mem for the odbc_db_t structure held in db */
-       if (((odbc_db_t *) odbc_inst->db->dbconn) != NULL) {
-               isc_mem_free(named_g_mctx, odbc_inst->db->dbconn);
-               odbc_inst->db->dbconn = NULL;
-       }
-
-       if (odbc_inst->db != NULL)
-               destroy_sqldbinstance(odbc_inst->db);
-
-#endif /* ISC_PLATFORM_USETHREADS */
-
-
        /* free sql environment */
        if (odbc_inst->sql_env != NULL)
                SQLFreeHandle(SQL_HANDLE_ENV, odbc_inst->sql_env);
@@ -327,8 +286,6 @@ odbc_connect(odbc_instance_t *dbi, odbc_db_t **dbc) {
  * multithreaded operation.
  */
 
-#ifdef ISC_PLATFORM_USETHREADS
-
 static dbinstance_t *
 odbc_find_avail_conn(db_list_t *dblist)
 {
@@ -362,8 +319,6 @@ odbc_find_avail_conn(db_list_t *dblist)
        return NULL;
 }
 
-#endif /* ISC_PLATFORM_USETHREADS */
-
 /*% Allocates memory for a new string, and then constructs the new
  * string by "escaping" the input string.  The new string is
  * safe to be used in queries.  This is necessary because we cannot
@@ -482,21 +437,10 @@ odbc_get_resultset(const char *zone, const char *record,
        REQUIRE(*r_dbi == NULL);
 
        /* get db instance / connection */
-#ifdef ISC_PLATFORM_USETHREADS
 
        /* find an available DBI from the list */
        dbi = odbc_find_avail_conn(((odbc_instance_t *) dbdata)->db);
 
-#else /* ISC_PLATFORM_USETHREADS */
-
-       /*
-        * only 1 DBI - no need to lock instance lock either
-        * only 1 thread in the whole process, no possible contention.
-        */
-       dbi =  (dbinstance_t *) ((odbc_instance_t *) dbdata)->db;
-
-#endif /* ISC_PLATFORM_USETHREADS */
-
        /* if DBI is null, can't do anything else */
        if (dbi == NULL) {
                result = ISC_R_FAILURE;
@@ -698,14 +642,10 @@ odbc_get_resultset(const char *zone, const char *record,
        if (dbi->client != NULL)
                isc_mem_free(named_g_mctx, dbi->client);
 
-#ifdef ISC_PLATFORM_USETHREADS
-
        /* if we are done using this dbi, release the lock */
        if (result != ISC_R_SUCCESS)
                isc_mutex_unlock(&dbi->instance_lock);
 
-#endif /* ISC_PLATFORM_USETHREADS */
-
        /* release query string */
        if (querystring  != NULL)
                isc_mem_free(named_g_mctx, querystring );
@@ -937,13 +877,9 @@ odbc_process_rs(dns_sdlzlookup_t *lookup, dbinstance_t *dbi)
        /* close cursor */
        SQLCloseCursor(((odbc_db_t *) (dbi->dbconn))->stmnt);
 
-#ifdef ISC_PLATFORM_USETHREADS
-
        /* free lock on dbi so someone else can use it. */
        isc_mutex_unlock(&dbi->instance_lock);
 
-#endif
-
        return result;
 }
 
@@ -980,11 +916,8 @@ odbc_findzone(void *driverarg, void *dbdata, const char *name,
                /* get rid of result set, we are done with it. */
                SQLCloseCursor(((odbc_db_t *) (dbi->dbconn))->stmnt);
 
-#ifdef ISC_PLATFORM_USETHREADS
-
                /* free lock on dbi so someone else can use it. */
                isc_mutex_unlock(&dbi->instance_lock);
-#endif
        }
 
        return result;
@@ -1032,11 +965,8 @@ odbc_allowzonexfr(void *driverarg, void *dbdata, const char *name,
                /* get rid of result set, we are done with it. */
                SQLCloseCursor(((odbc_db_t *) (dbi->dbconn))->stmnt);
 
-#ifdef ISC_PLATFORM_USETHREADS
-
                /* free lock on dbi so someone else can use it. */
                isc_mutex_unlock(&dbi->instance_lock);
-#endif
 
        }
 
@@ -1167,13 +1097,9 @@ odbc_allnodes(const char *zone, void *driverarg, void *dbdata,
        /* close cursor */
        SQLCloseCursor(((odbc_db_t *) (dbi->dbconn))->stmnt);
 
-#ifdef ISC_PLATFORM_USETHREADS
-
        /* free lock on dbi so someone else can use it. */
        isc_mutex_unlock(&dbi->instance_lock);
 
-#endif
-
        return result;
 }
 
@@ -1252,29 +1178,17 @@ odbc_create(const char *dlzname, unsigned int argc, char *argv[],
        odbc_instance_t *odbc_inst = NULL;
        dbinstance_t *db = NULL;
        SQLRETURN sqlRes;
-
-#ifdef ISC_PLATFORM_USETHREADS
-       /* if multi-threaded, we need a few extra variables. */
        int dbcount;
        int i;
        char *endp;
 
-#endif /* ISC_PLATFORM_USETHREADS */
-
        UNUSED(dlzname);
        UNUSED(driverarg);
 
-#ifdef ISC_PLATFORM_USETHREADS
        /* if debugging, let user know we are multithreaded. */
        isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
                      DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(1),
                      "Odbc driver running multithreaded");
-#else /* ISC_PLATFORM_USETHREADS */
-       /* if debugging, let user know we are single threaded. */
-       isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                     DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(1),
-                     "Odbc driver running single threaded");
-#endif /* ISC_PLATFORM_USETHREADS */
 
        /* verify we have at least 5 arg's passed to the driver */
        if (argc < 5) {
@@ -1295,8 +1209,6 @@ odbc_create(const char *dlzname, unsigned int argc, char *argv[],
        }
 
        /* multithreaded build can have multiple DB connections */
-#ifdef ISC_PLATFORM_USETHREADS
-
        /* check how many db connections we should create */
        dbcount = strtol(argv[1], &endp, 10);
        if (*endp != '\0' || dbcount < 0) {
@@ -1307,8 +1219,6 @@ odbc_create(const char *dlzname, unsigned int argc, char *argv[],
                return (ISC_R_FAILURE);
        }
 
-#endif /* ISC_PLATFORM_USETHREADS */
-
        /* allocate memory for odbc instance */
        odbc_inst = isc_mem_get(named_g_mctx, sizeof(odbc_instance_t));
        if (odbc_inst == NULL)
@@ -1361,8 +1271,6 @@ odbc_create(const char *dlzname, unsigned int argc, char *argv[],
                }
        }
 
-#ifdef ISC_PLATFORM_USETHREADS
-
        /* allocate memory for database connection list */
        odbc_inst->db = isc_mem_get(named_g_mctx, sizeof(db_list_t));
        if (odbc_inst->db == NULL) {
@@ -1378,8 +1286,6 @@ odbc_create(const char *dlzname, unsigned int argc, char *argv[],
        /* append each new DBI to the end of the list */
        for (i=0; i < dbcount; i++) {
 
-#endif /* ISC_PLATFORM_USETHREADS */
-
                /* how many queries were passed in from config file? */
                switch(argc) {
                case 5:
@@ -1416,20 +1322,14 @@ odbc_create(const char *dlzname, unsigned int argc, char *argv[],
                        goto cleanup;
                }
 
-#ifdef ISC_PLATFORM_USETHREADS
-
                /* when multithreaded, build a list of DBI's */
                ISC_LINK_INIT(db, link);
                ISC_LIST_APPEND(*odbc_inst->db, db, link);
 
-#endif
-
                result = odbc_connect(odbc_inst, (odbc_db_t **) &(db->dbconn));
 
                if (result != ISC_R_SUCCESS) {
 
-#ifdef ISC_PLATFORM_USETHREADS
-
                        /*
                         * if multi threaded, let user know which
                         * connection failed.  user could be
@@ -1442,28 +1342,14 @@ odbc_create(const char *dlzname, unsigned int argc, char *argv[],
                                      "Odbc driver failed to create database "
                                      "connection number %u after 3 attempts",
                                      i+1);
-#else
-                       isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                                     DNS_LOGMODULE_DLZ, ISC_LOG_ERROR,
-                                     "Odbc driver failed to create database "
-                                     "connection after 3 attempts");
-#endif
                        goto cleanup;
                }
 
-#ifdef ISC_PLATFORM_USETHREADS
-
                /* set DB = null for next loop through. */
                db = NULL;
 
        }       /* end for loop */
 
-#else
-       /* tell odbc_inst about the db connection we just created. */
-       odbc_inst->db = db;
-
-#endif
-
        /* set dbdata to the odbc_instance we created. */
        *dbdata = odbc_inst;
 
index 349e96c1c16b6fb8515b7123b1a18d9592ae17e8..b50771fd6bb072ffa3582c22e0838f224eed2041 100644 (file)
@@ -149,8 +149,6 @@ postgres_makesafe(char *to, const char *from, size_t length)
        return target - to;
 }
 
-#ifdef ISC_PLATFORM_USETHREADS
-
 /*%
  * Properly cleans up a list of database instances.
  * This function is only used when the driver is compiled for
@@ -225,8 +223,6 @@ postgres_find_avail_conn(db_list_t *dblist)
        return NULL;
 }
 
-#endif /* ISC_PLATFORM_USETHREADS */
-
 /*%
  * Allocates memory for a new string, and then constructs the new
  * string by "escaping" the input string.  The new string is
@@ -298,21 +294,10 @@ postgres_get_resultset(const char *zone, const char *record,
 #endif
 
        /* get db instance / connection */
-#ifdef ISC_PLATFORM_USETHREADS
 
        /* find an available DBI from the list */
        dbi = postgres_find_avail_conn((db_list_t *) dbdata);
 
-#else /* ISC_PLATFORM_USETHREADS */
-
-       /*
-        * only 1 DBI - no need to lock instance lock either
-        * only 1 thread in the whole process, no possible contention.
-        */
-       dbi =  (dbinstance_t *) dbdata;
-
-#endif /* ISC_PLATFORM_USETHREADS */
-
 #if 0
        /* temporary logging message */
        isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
@@ -599,8 +584,6 @@ postgres_get_resultset(const char *zone, const char *record,
        if (dbi->client != NULL)
                isc_mem_free(named_g_mctx, dbi->client);
 
-#ifdef ISC_PLATFORM_USETHREADS
-
 #if 0
        /* temporary logging message */
        isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
@@ -611,8 +594,6 @@ postgres_get_resultset(const char *zone, const char *record,
        /* release the lock so another thread can use this dbi */
        isc_mutex_unlock(&dbi->instance_lock);
 
-#endif /* ISC_PLATFORM_USETHREADS */
-
        /* release query string */
        if (querystring  != NULL)
                isc_mem_free(named_g_mctx, querystring );
@@ -1058,15 +1039,12 @@ postgres_create(const char *dlzname, unsigned int argc, char *argv[],
        dbinstance_t *dbi = NULL;
        unsigned int j;
 
-#ifdef ISC_PLATFORM_USETHREADS
        /* if multi-threaded, we need a few extra variables. */
        int dbcount;
        db_list_t *dblist = NULL;
        int i;
        char *endp;
 
-#endif /* ISC_PLATFORM_USETHREADS */
-
        UNUSED(driverarg);
        UNUSED(dlzname);
 
@@ -1074,17 +1052,10 @@ postgres_create(const char *dlzname, unsigned int argc, char *argv[],
        srand( (unsigned)time( NULL ) );
 
 
-#ifdef ISC_PLATFORM_USETHREADS
        /* if debugging, let user know we are multithreaded. */
        isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
                      DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(1),
                      "Postgres driver running multithreaded");
-#else /* ISC_PLATFORM_USETHREADS */
-       /* if debugging, let user know we are single threaded. */
-       isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                     DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(1),
-                     "Postgres driver running single threaded");
-#endif /* ISC_PLATFORM_USETHREADS */
 
        /* verify we have at least 5 arg's passed to the driver */
        if (argc < 5) {
@@ -1105,7 +1076,6 @@ postgres_create(const char *dlzname, unsigned int argc, char *argv[],
        }
 
        /* multithreaded build can have multiple DB connections */
-#ifdef ISC_PLATFORM_USETHREADS
 
        /* check how many db connections we should create */
        dbcount = strtol(argv[1], &endp, 10);
@@ -1131,8 +1101,6 @@ postgres_create(const char *dlzname, unsigned int argc, char *argv[],
         */
        for (i=0; i < dbcount; i++) {
 
-#endif /* ISC_PLATFORM_USETHREADS */
-
                /* how many queries were passed in from config file? */
                switch(argc) {
                case 5:
@@ -1174,14 +1142,10 @@ postgres_create(const char *dlzname, unsigned int argc, char *argv[],
                        goto cleanup;
                }
 
-#ifdef ISC_PLATFORM_USETHREADS
-
                /* when multithreaded, build a list of DBI's */
                ISC_LINK_INIT(dbi, link);
                ISC_LIST_APPEND(*dblist, dbi, link);
 
-#endif
-
                /* create and set db connection */
                dbi->dbconn = PQconnectdb(argv[2]);
                /*
@@ -1204,8 +1168,6 @@ postgres_create(const char *dlzname, unsigned int argc, char *argv[],
                        PQreset((PGconn *) dbi->dbconn);
 
 
-#ifdef ISC_PLATFORM_USETHREADS
-
                /*
                 * if multi threaded, let user know which connection
                 * failed.  user could be attempting to create 10 db
@@ -1229,30 +1191,11 @@ postgres_create(const char *dlzname, unsigned int argc, char *argv[],
                /* set dbdata to the list we created. */
        *dbdata = dblist;
 
-#else /* ISC_PLATFORM_USETHREADS */
-       /* if single threaded, just let user know we couldn't connect. */
-       if (PQstatus((PGconn *) dbi->dbconn) != CONNECTION_OK) {
-               isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-                             DNS_LOGMODULE_DLZ, ISC_LOG_ERROR,
-                             "Postgres driver failed to create database "
-                             "connection after 4 attempts");
-               goto cleanup;
-       }
-
-       /*
-        * single threaded build can only use 1 db connection, return
-        * it via dbdata
-        */
-       *dbdata = dbi;
-
-#endif /* ISC_PLATFORM_USETHREADS */
-
        /* hey, we got through all of that ok, return success. */
        return(ISC_R_SUCCESS);
 
  cleanup:
 
-#ifdef ISC_PLATFORM_USETHREADS
        /*
         * if multithreaded, we could fail because only 1 connection
         * couldn't be made.  We should cleanup the other successful
@@ -1260,11 +1203,6 @@ postgres_create(const char *dlzname, unsigned int argc, char *argv[],
         */
        postgres_destroy_dblist(dblist);
 
-#else /* ISC_PLATFORM_USETHREADS */
-       if (dbi != NULL)
-               destroy_sqldbinstance(dbi);
-
-#endif /* ISC_PLATFORM_USETHREADS */
        return(ISC_R_FAILURE);
 }
 
@@ -1277,29 +1215,9 @@ postgres_create(const char *dlzname, unsigned int argc, char *argv[],
 static void
 postgres_destroy(void *driverarg, void *dbdata)
 {
-
-#ifdef ISC_PLATFORM_USETHREADS
-
        UNUSED(driverarg);
        /* cleanup the list of DBI's */
        postgres_destroy_dblist((db_list_t *) dbdata);
-
-#else /* ISC_PLATFORM_USETHREADS */
-
-       dbinstance_t *dbi;
-
-       UNUSED(driverarg);
-
-       dbi = (dbinstance_t *) dbdata;
-
-       /* release DB connection */
-       if (dbi->dbconn != NULL)
-               PQfinish((PGconn *) dbi->dbconn);
-
-       /* destroy single DB instance */
-       destroy_sqldbinstance(dbi);
-
-#endif /* ISC_PLATFORM_USETHREADS */
 }
 
 /* pointers to all our runtime methods. */
index 5ac2c5da7f4f17fbd5dbb5009e6127b006690750..3d58ef76053b5e8e411d82f3a78cc7795bdd4370 100644 (file)
 #include "dlz_minimal.h"
 
 /* should the bdb driver use threads. */
-#ifdef ISC_PLATFORM_USETHREADS
 #define bdbhpt_threads DB_THREAD
-#else
-#define bdbhpt_threads 0
-#endif
 
 /* bdbhpt database names */
 #define dlz_data   "dns_data"
index 2c6e476d6bcb127f205e709dcf4e5dba1a183254..800afb3dd8aaef19de63058d0ac570da8935539e 100644 (file)
@@ -1560,11 +1560,7 @@ issymmetric(const dst_key_t *key) {
 static void
 printtime(const dst_key_t *key, int type, const char *tag, FILE *stream) {
        isc_result_t result;
-#ifdef ISC_PLATFORM_USETHREADS
        char output[26]; /* Minimum buffer as per ctime_r() specification. */
-#else
-       const char *output;
-#endif
        isc_stdtime_t when;
        time_t t;
        char utc[sizeof("YYYYMMDDHHSSMM")];
@@ -1577,7 +1573,6 @@ printtime(const dst_key_t *key, int type, const char *tag, FILE *stream) {
 
        /* time_t and isc_stdtime_t might be different sizes */
        t = when;
-#ifdef ISC_PLATFORM_USETHREADS
 #ifdef WIN32
        if (ctime_s(output, sizeof(output), &t) != 0)
                goto error;
@@ -1585,9 +1580,6 @@ printtime(const dst_key_t *key, int type, const char *tag, FILE *stream) {
        if (ctime_r(&t, output) == NULL)
                goto error;
 #endif
-#else
-       output = ctime(&t);
-#endif
 
        isc_buffer_init(&b, utc, sizeof(utc));
        result = dns_time32_totext(when, &b);
index e619b3187912715d214974f5b87f6c5e212f941b..fb08d7413986d28380a0964d5711388fc4c29918 100644 (file)
@@ -75,7 +75,6 @@ typedef struct geoip_state {
        isc_mem_t *mctx;
 } geoip_state_t;
 
-#ifdef ISC_PLATFORM_USETHREADS
 static isc_mutex_t key_mutex;
 static isc_boolean_t state_key_initialized = ISC_FALSE;
 static isc_thread_key_t state_key;
@@ -130,9 +129,6 @@ state_key_init(void) {
 
        return (result);
 }
-#else
-static geoip_state_t saved_state;
-#endif
 
 static void
 clean_state(geoip_state_t *state) {
@@ -162,7 +158,6 @@ set_state(unsigned int family, isc_uint32_t ipnum, const geoipv6_t *ipnum6,
          GeoIPRegion *region, char *name, const char *text, int id)
 {
        geoip_state_t *state = NULL;
-#ifdef ISC_PLATFORM_USETHREADS
        isc_result_t result;
 
        result = state_key_init();
@@ -186,10 +181,6 @@ set_state(unsigned int family, isc_uint32_t ipnum, const geoipv6_t *ipnum6,
                isc_mem_attach(state_mctx, &state->mctx);
        } else
                clean_state(state);
-#else
-       state = &saved_state;
-       clean_state(state);
-#endif
 
        if (family == AF_INET) {
                state->ipnum = ipnum;
@@ -215,7 +206,6 @@ get_state_for(unsigned int family, isc_uint32_t ipnum,
 {
        geoip_state_t *state;
 
-#ifdef ISC_PLATFORM_USETHREADS
        isc_result_t result;
 
        result = state_key_init();
@@ -225,9 +215,6 @@ get_state_for(unsigned int family, isc_uint32_t ipnum,
        state = (geoip_state_t *) isc_thread_key_getspecific(state_key);
        if (state == NULL)
                return (NULL);
-#else
-       state = &saved_state;
-#endif
 
        if (state->family == family &&
            ((state->family == AF_INET && state->ipnum == ipnum) ||
@@ -827,10 +814,8 @@ void
 dns_geoip_shutdown(void) {
 #ifdef HAVE_GEOIP
        GeoIP_cleanup();
-#ifdef ISC_PLATFORM_USETHREADS
        if (state_mctx != NULL)
                isc_mem_detach(&state_mctx);
-#endif
 #else
        return;
 #endif
index bd2973b96ffad597d0ff33bc2a30289bd317d864..bad2866c3f73d4f9d480f81fc11f8e4118c3e662 100644 (file)
@@ -163,15 +163,11 @@ LIBDNS_EXTERNAL_DATA const dns_name_t *dns_wildcardname = &wild;
 /*
  * dns_name_t to text post-conversion procedure.
  */
-#ifdef ISC_PLATFORM_USETHREADS
 static int thread_key_initialized = 0;
 static isc_mutex_t thread_key_mutex;
 static isc_mem_t *thread_key_mctx = NULL;
 static isc_thread_key_t totext_filter_proc_key;
 static isc_once_t once = ISC_ONCE_INIT;
-#else
-static dns_name_totextfilter_t totext_filter_proc = NULL;
-#endif
 
 static void
 set_offsets(const dns_name_t *name, unsigned char *offsets,
@@ -1275,7 +1271,6 @@ dns_name_fromtext(dns_name_t *name, isc_buffer_t *source,
        return (ISC_R_SUCCESS);
 }
 
-#ifdef ISC_PLATFORM_USETHREADS
 static void
 free_specific(void *arg) {
        dns_name_totextfilter_t *mem = arg;
@@ -1322,7 +1317,6 @@ totext_filter_proc_key_init(void) {
        }
        return (result);
 }
-#endif
 
 isc_result_t
 dns_name_totext(const dns_name_t *name, isc_boolean_t omit_final_dot,
@@ -1352,11 +1346,9 @@ dns_name_totext2(const dns_name_t *name, unsigned int options,
        unsigned int labels;
        isc_boolean_t saw_root = ISC_FALSE;
        unsigned int oused = target->used;
-#ifdef ISC_PLATFORM_USETHREADS
        dns_name_totextfilter_t *mem;
        dns_name_totextfilter_t totext_filter_proc = NULL;
        isc_result_t result;
-#endif
        isc_boolean_t omit_final_dot =
                ISC_TF(options & DNS_NAME_OMITFINALDOT);
 
@@ -1367,11 +1359,9 @@ dns_name_totext2(const dns_name_t *name, unsigned int options,
        REQUIRE(VALID_NAME(name));
        REQUIRE(ISC_BUFFER_VALID(target));
 
-#ifdef ISC_PLATFORM_USETHREADS
        result = totext_filter_proc_key_init();
        if (result != ISC_R_SUCCESS)
                return (result);
-#endif
        ndata = name->ndata;
        nlen = name->length;
        labels = name->labels;
@@ -1511,11 +1501,9 @@ dns_name_totext2(const dns_name_t *name, unsigned int options,
        }
        isc_buffer_add(target, tlen - trem);
 
-#ifdef ISC_PLATFORM_USETHREADS
        mem = isc_thread_key_getspecific(totext_filter_proc_key);
        if (mem != NULL)
                totext_filter_proc = *mem;
-#endif
        if (totext_filter_proc != NULL)
                return ((*totext_filter_proc)(target, oused));
 
@@ -2337,7 +2325,6 @@ dns_name_print(const dns_name_t *name, FILE *stream) {
 
 isc_result_t
 dns_name_settotextfilter(dns_name_totextfilter_t proc) {
-#ifdef ISC_PLATFORM_USETHREADS
        isc_result_t result;
        dns_name_totextfilter_t *mem;
        int res;
@@ -2373,10 +2360,6 @@ dns_name_settotextfilter(dns_name_totextfilter_t proc) {
                result = ISC_R_UNEXPECTED;
        }
        return (result);
-#else
-       totext_filter_proc = proc;
-       return (ISC_R_SUCCESS);
-#endif
 }
 
 void
@@ -2526,7 +2509,6 @@ dns_name_copy(const dns_name_t *source, dns_name_t *dest, isc_buffer_t *target)
 
 void
 dns_name_destroy(void) {
-#ifdef ISC_PLATFORM_USETHREADS
        RUNTIME_CHECK(isc_once_do(&once, thread_key_mutex_init)
                                  == ISC_R_SUCCESS);
 
@@ -2538,7 +2520,6 @@ dns_name_destroy(void) {
        }
        UNLOCK(&thread_key_mutex);
 
-#endif
 }
 
 /*
index 55fd1eeccca773df22dc9fdefd252426553febfc..1ee3bd739630657e5760413f3ad63eb08c5be027 100644 (file)
@@ -9843,7 +9843,6 @@ dns_resolver_create(dns_view_t *view,
                }
                res->buckets[i].mctx = NULL;
                snprintf(name, sizeof(name), "res%u", i);
-#ifdef ISC_PLATFORM_USETHREADS
                /*
                 * Use a separate memory context for each bucket to reduce
                 * contention among multiple threads.  Do this only when
@@ -9856,9 +9855,6 @@ dns_resolver_create(dns_view_t *view,
                        goto cleanup_buckets;
                }
                isc_mem_setname(res->buckets[i].mctx, name, NULL);
-#else
-               isc_mem_attach(view->mctx, &res->buckets[i].mctx);
-#endif
                isc_task_setname(res->buckets[i].task, name, res);
                ISC_LIST_INIT(res->buckets[i].fctxs);
                res->buckets[i].exiting = ISC_FALSE;
index 4e8693a72d8834c58e5e28555f219d2691c3c622..ef5d35d4103a2042cbe6b05b511d6802bc1ecc41 100644 (file)
@@ -90,11 +90,7 @@ cleanup_managers(void) {
 static isc_result_t
 create_managers(void) {
        isc_result_t result;
-#ifdef ISC_PLATFORM_USETHREADS
        ncpus = isc_os_ncpus();
-#else
-       ncpus = 1;
-#endif
 
        CHECK(isc_taskmgr_create(mctx, ncpus, 0, &taskmgr));
        CHECK(isc_timermgr_create(mctx, &timermgr));
index f5104bd68f921647537950aae9df59e9527aa4c9..66eead01466d76c4030202757f663231d078a640 100644 (file)
@@ -646,7 +646,6 @@ ATF_TC_BODY(getlabelsequence, tc) {
        }
 }
 
-#ifdef ISC_PLATFORM_USETHREADS
 #ifdef DNS_BENCHMARK_TESTS
 
 /*
@@ -742,7 +741,6 @@ ATF_TC_BODY(benchmark, tc) {
 }
 
 #endif /* DNS_BENCHMARK_TESTS */
-#endif /* ISC_PLATFORM_USETHREADS */
 
 /*
  * Main
@@ -760,11 +758,9 @@ ATF_TP_ADD_TCS(tp) {
        ATF_TP_ADD_TC(tp, countlabels);
        ATF_TP_ADD_TC(tp, getlabel);
        ATF_TP_ADD_TC(tp, getlabelsequence);
-#ifdef ISC_PLATFORM_USETHREADS
 #ifdef DNS_BENCHMARK_TESTS
        ATF_TP_ADD_TC(tp, benchmark);
 #endif /* DNS_BENCHMARK_TESTS */
-#endif /* ISC_PLATFORM_USETHREADS */
 
        return (atf_no_error());
 }
index 3eb135acf6e0bb2eba0d1402482496c5e97392ce..2008c698f8589b4fd92f676ce4431031e67e7ab3 100644 (file)
@@ -1262,7 +1262,6 @@ ATF_TC_BODY(rbt_nodechain, tc) {
        dns_test_end();
 }
 
-#ifdef ISC_PLATFORM_USETHREADS
 #ifdef DNS_BENCHMARK_TESTS
 
 /*
@@ -1390,7 +1389,6 @@ ATF_TC_BODY(benchmark, tc) {
 }
 
 #endif /* DNS_BENCHMARK_TESTS */
-#endif /* ISC_PLATFORM_USETHREADS */
 
 /*
  * Main
@@ -1408,11 +1406,9 @@ ATF_TP_ADD_TCS(tp) {
        ATF_TP_ADD_TC(tp, rbt_addname);
        ATF_TP_ADD_TC(tp, rbt_deletename);
        ATF_TP_ADD_TC(tp, rbt_nodechain);
-#ifdef ISC_PLATFORM_USETHREADS
 #ifdef DNS_BENCHMARK_TESTS
        ATF_TP_ADD_TC(tp, benchmark);
 #endif /* DNS_BENCHMARK_TESTS */
-#endif /* ISC_PLATFORM_USETHREADS */
 
        return (atf_no_error());
 }
index cb703bdbe0c685e6bd7b88854c1afbc1a83a37f9..6401a8ac710afacecc3bbca55a1ba437bd29c73a 100644 (file)
@@ -2053,7 +2053,7 @@ static isc_stdtime_t
 epoch_to_yyyymmdd(time_t when) {
        struct tm *tm;
 
-#if defined(ISC_PLATFORM_USETHREADS) && !defined(WIN32)
+#if !defined(WIN32)
        struct tm tm0;
        tm = localtime_r(&when, &tm0);
 #else
index 2ce2f766b258fbd6dd932b26d7f2e930ca4952a1..fa49baa623e855ade4d10ca7427f239062e3c0ac 100644 (file)
@@ -10151,9 +10151,6 @@ dns_zone_markdirty(dns_zone_t *zone) {
                        if (result != ISC_R_SUCCESS) {
                                UNLOCK_ZONE(zone);
                                secure = NULL;
-#ifdef ISC_PLATFORM_USETHREADS
-                               isc_thread_yield();
-#endif
                                goto again;
                        }
 
@@ -10419,9 +10416,6 @@ dump_done(void *arg, isc_result_t result) {
                        if (result != ISC_R_SUCCESS) {
                                UNLOCK_ZONE(zone);
                                secure = NULL;
-#if ISC_PLATFORM_USETHREADS
-                               isc_thread_yield();
-#endif
                                goto again;
                        }
                }
@@ -14938,9 +14932,6 @@ dns_zone_replacedb(dns_zone_t *zone, dns_db_t *db, isc_boolean_t dump) {
                if (result != ISC_R_SUCCESS) {
                        UNLOCK_ZONE(zone);
                        secure = NULL;
-#if ISC_PLATFORM_USETHREADS
-                       isc_thread_yield();
-#endif
                        goto again;
                }
        }
@@ -15174,9 +15165,6 @@ zone_xfrdone(dns_zone_t *zone, isc_result_t result) {
                if (result != ISC_R_SUCCESS) {
                        UNLOCK_ZONE(zone);
                        secure = NULL;
-#if ISC_PLATFORM_USETHREADS
-                       isc_thread_yield();
-#endif
                        goto again;
                }
        }
@@ -15439,9 +15427,6 @@ zone_loaddone(void *arg, isc_result_t result) {
                if (result != ISC_R_SUCCESS) {
                        UNLOCK_ZONE(zone);
                        secure = NULL;
-#if ISC_PLATFORM_USETHREADS
-                       isc_thread_yield();
-#endif
                        goto again;
                }
        }
@@ -18484,9 +18469,6 @@ dns_zone_dlzpostload(dns_zone_t *zone, dns_db_t *db)
                if (result != ISC_R_SUCCESS) {
                        UNLOCK_ZONE(zone);
                        secure = NULL;
-#if ISC_PLATFORM_USETHREADS
-                       isc_thread_yield();
-#endif
                        goto again;
                }
        }
index 7d3fbd3743d1fb8c804ad77e1af5ee7905aba53e..bac9f1b8f7375519f61e1cffbc35cd58f6b6ee10 100644 (file)
 #define DNS_CONF "/etc/dns.conf"
 #endif
 
-#ifndef ISC_PLATFORM_USETHREADS
-irs_context_t *irs_g_context = NULL;
-#else
 static isc_boolean_t thread_key_initialized = ISC_FALSE;
 static isc_mutex_t thread_key_mutex;
 static isc_thread_key_t irs_context_key;
 static isc_once_t once = ISC_ONCE_INIT;
-#endif
 
 
 struct irs_context {
@@ -126,7 +122,6 @@ ctxs_init(isc_mem_t **mctxp, isc_appctx_t **actxp,
        return (result);
 }
 
-#ifdef ISC_PLATFORM_USETHREADS
 static void
 free_specific_context(void *arg) {
        irs_context_t *context = arg;
@@ -164,7 +159,6 @@ thread_key_init(void) {
 
        return (result);
 }
-#endif /* ISC_PLATFORM_USETHREADS */
 
 isc_result_t
 irs_context_get(irs_context_t **contextp) {
@@ -173,15 +167,6 @@ irs_context_get(irs_context_t **contextp) {
 
        REQUIRE(contextp != NULL && *contextp == NULL);
 
-#ifndef ISC_PLATFORM_USETHREADS
-       if (irs_g_context == NULL) {
-               result = irs_context_create(&irs_g_context);
-               if (result != ISC_R_SUCCESS)
-                       return (result);
-       }
-
-       context = irs_g_context;
-#else
        result = thread_key_init();
        if (result != ISC_R_SUCCESS)
                return (result);
@@ -197,7 +182,6 @@ irs_context_get(irs_context_t **contextp) {
                        return (result);
                }
        }
-#endif /* ISC_PLATFORM_USETHREADS */
 
        *contextp = context;
 
@@ -326,11 +310,7 @@ irs_context_destroy(irs_context_t **contextp) {
 
        *contextp = NULL;
 
-#ifndef ISC_PLATFORM_USETHREADS
-       irs_g_context = NULL;
-#else
        (void)isc_thread_key_setspecific(irs_context_key, NULL);
-#endif
 }
 
 isc_mem_t *
index f542bd0115ff8f27571b1a864ca9822ca557d602..caedd247010f1d612305d82edfed88087527c20c 100644 (file)
  *** Miscellaneous.
  ***/
 
-/*
- * Defined if we are using threads.
- */
-@ISC_PLATFORM_USETHREADS@
-
 /*
  * Defined if unistd.h does not cause fd_set to be delared.
  */
index 8b77f2e457f81d162de5dfa5572364c6b97d7429..9090ce61cb5902827a57065015636868beba2e6e 100644 (file)
@@ -92,7 +92,6 @@ ISC_LANG_BEGINDECLS
 /*
  * Sample implementations
  */
-#ifdef ISC_PLATFORM_USETHREADS
 #if (defined(ISC_PLATFORM_HAVESTDATOMIC) && defined(ATOMIC_INT_LOCK_FREE)) || defined(ISC_PLATFORM_HAVEXADD)
 #define ISC_REFCOUNT_HAVEATOMIC 1
 #if (defined(ISC_PLATFORM_HAVESTDATOMIC) && defined(ATOMIC_INT_LOCK_FREE))
@@ -251,44 +250,6 @@ typedef struct isc_refcount {
        } while (0)
 
 #endif /* (defined(ISC_PLATFORM_HAVESTDATOMIC) && defined(ATOMIC_INT_LOCK_FREE)) || defined(ISC_PLATFORM_HAVEXADD) */
-#else  /* ISC_PLATFORM_USETHREADS */
-
-typedef struct isc_refcount {
-       int refs;
-} isc_refcount_t;
-
-#define isc_refcount_destroy(rp) ISC_REQUIRE((rp)->refs == 0)
-#define isc_refcount_current(rp) ((unsigned int)((rp)->refs))
-
-#define isc_refcount_increment0(rp, tp)                                        \
-       do {                                                            \
-               unsigned int *_tmp = (unsigned int *)(tp);              \
-               int _n = ++(rp)->refs;                                  \
-               if (_tmp != NULL)                                       \
-                       *_tmp = _n;                                     \
-       } while (0)
-
-#define isc_refcount_increment(rp, tp)                                 \
-       do {                                                            \
-               unsigned int *_tmp = (unsigned int *)(tp);              \
-               int _n;                                                 \
-               ISC_REQUIRE((rp)->refs > 0);                            \
-               _n = ++(rp)->refs;                                      \
-               if (_tmp != NULL)                                       \
-                       *_tmp = _n;                                     \
-       } while (0)
-
-#define isc_refcount_decrement(rp, tp)                                 \
-       do {                                                            \
-               unsigned int *_tmp = (unsigned int *)(tp);              \
-               int _n;                                                 \
-               ISC_REQUIRE((rp)->refs > 0);                            \
-               _n = --(rp)->refs;                                      \
-               if (_tmp != NULL)                                       \
-                       *_tmp = _n;                                     \
-       } while (0)
-
-#endif /* ISC_PLATFORM_USETHREADS */
 
 isc_result_t
 isc_refcount_init(isc_refcount_t *ref, unsigned int n);
index c47b8d062e8354fb95d93c2a3c32a20657faf46d..6c8cd8fa564d6ccbf0c989c20438b4735ce65647 100644 (file)
@@ -33,7 +33,6 @@ typedef enum {
        isc_rwlocktype_write
 } isc_rwlocktype_t;
 
-#ifdef ISC_PLATFORM_USETHREADS
 #if (defined(ISC_PLATFORM_HAVESTDATOMIC) && defined(ATOMIC_INT_LOCK_FREE)) || (defined(ISC_PLATFORM_HAVEXADD) && defined(ISC_PLATFORM_HAVECMPXCHG))
 #define ISC_RWLOCK_USEATOMIC 1
 #if (defined(ISC_PLATFORM_HAVESTDATOMIC) && defined(ATOMIC_INT_LOCK_FREE))
@@ -107,14 +106,6 @@ struct isc_rwlock {
        isc_rwlocktype_t        original;
 #endif  /* ISC_RWLOCK_USEATOMIC */
 };
-#else /* ISC_PLATFORM_USETHREADS */
-struct isc_rwlock {
-       unsigned int            magic;
-       isc_rwlocktype_t        type;
-       unsigned int            active;
-};
-#endif /* ISC_PLATFORM_USETHREADS */
-
 
 isc_result_t
 isc_rwlock_init(isc_rwlock_t *rwl, unsigned int read_quota,
index 24b351db40866a24758b4b05cc7b186b394f42f2..a17b079bd2c09d64de4a663b71dd78713802437d 100644 (file)
@@ -824,19 +824,11 @@ isc__task_register(void);
  * These functions allow unit tests to manipulate the processing
  * of the task queue. They are not intended as part of the public API.
  */
-#if defined(ISC_PLATFORM_USETHREADS)
 void
 isc__taskmgr_pause(isc_taskmgr_t *taskmgr);
 
 void
 isc__taskmgr_resume(isc_taskmgr_t *taskmgr);
-#else
-isc_boolean_t
-isc__taskmgr_ready(isc_taskmgr_t *taskmgr);
-
-isc_result_t
-isc__taskmgr_dispatch(isc_taskmgr_t *taskmgr);
-#endif /* !ISC_PLATFORM_USETHREADS */
 
 ISC_LANG_ENDDECLS
 
index 033af7b4cd87326cf7d1f09c535832e7495c5085..0f9fc041e058a1e8df9d39491e91109d213a96ad 100644 (file)
@@ -24,7 +24,7 @@ isc_refcount_init(isc_refcount_t *ref, unsigned int n) {
        REQUIRE(ref != NULL);
 
        ref->refs = n;
-#if defined(ISC_PLATFORM_USETHREADS) && !defined(ISC_REFCOUNT_HAVEATOMIC)
+#if !defined(ISC_REFCOUNT_HAVEATOMIC)
        return (isc_mutex_init(&ref->lock));
 #else
        return (ISC_R_SUCCESS);
index 8c9455932f39724345db765993e9ac65d08bf3bc..65cb1d4572dd2fa58d884279800f2b6a5069336f 100644 (file)
@@ -27,8 +27,6 @@
 #define RWLOCK_MAGIC           ISC_MAGIC('R', 'W', 'L', 'k')
 #define VALID_RWLOCK(rwl)      ISC_MAGIC_VALID(rwl, RWLOCK_MAGIC)
 
-#ifdef ISC_PLATFORM_USETHREADS
-
 #ifndef RWLOCK_DEFAULT_READ_QUOTA
 #define RWLOCK_DEFAULT_READ_QUOTA 4
 #endif
@@ -890,91 +888,3 @@ isc_rwlock_unlock(isc_rwlock_t *rwl, isc_rwlocktype_t type) {
 }
 
 #endif /* ISC_RWLOCK_USEATOMIC */
-#else /* ISC_PLATFORM_USETHREADS */
-
-isc_result_t
-isc_rwlock_init(isc_rwlock_t *rwl, unsigned int read_quota,
-               unsigned int write_quota)
-{
-       REQUIRE(rwl != NULL);
-
-       UNUSED(read_quota);
-       UNUSED(write_quota);
-
-       rwl->type = isc_rwlocktype_read;
-       rwl->active = 0;
-       rwl->magic = RWLOCK_MAGIC;
-
-       return (ISC_R_SUCCESS);
-}
-
-isc_result_t
-isc_rwlock_lock(isc_rwlock_t *rwl, isc_rwlocktype_t type) {
-       REQUIRE(VALID_RWLOCK(rwl));
-
-       if (type == isc_rwlocktype_read) {
-               if (rwl->type != isc_rwlocktype_read && rwl->active != 0)
-                       return (ISC_R_LOCKBUSY);
-               rwl->type = isc_rwlocktype_read;
-               rwl->active++;
-       } else {
-               if (rwl->active != 0)
-                       return (ISC_R_LOCKBUSY);
-               rwl->type = isc_rwlocktype_write;
-               rwl->active = 1;
-       }
-       return (ISC_R_SUCCESS);
-}
-
-isc_result_t
-isc_rwlock_trylock(isc_rwlock_t *rwl, isc_rwlocktype_t type) {
-       return (isc_rwlock_lock(rwl, type));
-}
-
-isc_result_t
-isc_rwlock_tryupgrade(isc_rwlock_t *rwl) {
-       isc_result_t result = ISC_R_SUCCESS;
-
-       REQUIRE(VALID_RWLOCK(rwl));
-       REQUIRE(rwl->type == isc_rwlocktype_read);
-       REQUIRE(rwl->active != 0);
-
-       /* If we are the only reader then succeed. */
-       if (rwl->active == 1)
-               rwl->type = isc_rwlocktype_write;
-       else
-               result = ISC_R_LOCKBUSY;
-       return (result);
-}
-
-void
-isc_rwlock_downgrade(isc_rwlock_t *rwl) {
-
-       REQUIRE(VALID_RWLOCK(rwl));
-       REQUIRE(rwl->type == isc_rwlocktype_write);
-       REQUIRE(rwl->active == 1);
-
-       rwl->type = isc_rwlocktype_read;
-}
-
-isc_result_t
-isc_rwlock_unlock(isc_rwlock_t *rwl, isc_rwlocktype_t type) {
-       REQUIRE(VALID_RWLOCK(rwl));
-       REQUIRE(rwl->type == type);
-
-       UNUSED(type);
-
-       INSIST(rwl->active > 0);
-       rwl->active--;
-
-       return (ISC_R_SUCCESS);
-}
-
-void
-isc_rwlock_destroy(isc_rwlock_t *rwl) {
-       REQUIRE(rwl != NULL);
-       REQUIRE(rwl->active == 0);
-       rwl->magic = 0;
-}
-
-#endif /* ISC_PLATFORM_USETHREADS */
index 7669045a5a3e6804dfd08c677cefeffff8d98c77..eb7c99e9274fd97d09c921578d9b615bf47f1138 100644 (file)
  * is expected to have a separate manager; no "worker threads" are shared by
  * the application threads.
  */
-#ifdef ISC_PLATFORM_USETHREADS
-#define USE_WORKER_THREADS
-#else
-#define USE_SHARED_MANAGER
-#endif /* ISC_PLATFORM_USETHREADS */
-
 #ifdef ISC_TASK_TRACE
 #define XTRACE(m)              fprintf(stderr, "task %p thread %lu: %s\n", \
                                       task, isc_thread_self(), (m))
@@ -130,21 +124,17 @@ struct isc__taskmgr {
        isc_taskmgr_t                   common;
        isc_mem_t *                     mctx;
        isc_mutex_t                     lock;
-#ifdef ISC_PLATFORM_USETHREADS
        unsigned int                    workers;
        isc_thread_t *                  threads;
-#endif /* ISC_PLATFORM_USETHREADS */
        /* Locked by task manager lock. */
        unsigned int                    default_quantum;
        LIST(isc__task_t)               tasks;
        isc__tasklist_t                 ready_tasks;
        isc__tasklist_t                 ready_priority_tasks;
        isc_taskmgrmode_t               mode;
-#ifdef ISC_PLATFORM_USETHREADS
        isc_condition_t                 work_available;
        isc_condition_t                 exclusive_granted;
        isc_condition_t                 paused;
-#endif /* ISC_PLATFORM_USETHREADS */
        unsigned int                    tasks_running;
        unsigned int                    tasks_ready;
        isc_boolean_t                   pause_requested;
@@ -158,19 +148,12 @@ struct isc__taskmgr {
         */
        isc_mutex_t                     excl_lock;
        isc__task_t                     *excl;
-#ifdef USE_SHARED_MANAGER
-       unsigned int                    refs;
-#endif /* ISC_PLATFORM_USETHREADS */
 };
 
 #define DEFAULT_TASKMGR_QUANTUM                10
 #define DEFAULT_DEFAULT_QUANTUM                5
 #define FINISHED(m)                    ((m)->exiting && EMPTY((m)->tasks))
 
-#ifdef USE_SHARED_MANAGER
-static isc__taskmgr_t *taskmgr = NULL;
-#endif /* USE_SHARED_MANAGER */
-
 /*%
  * The following are intended for internal use (indicated by "isc__"
  * prefix) but are not declared as static, allowing direct access from
@@ -312,7 +295,6 @@ task_finished(isc__task_t *task) {
 
        LOCK(&manager->lock);
        UNLINK(manager->tasks, task, link);
-#ifdef USE_WORKER_THREADS
        if (FINISHED(manager)) {
                /*
                 * All tasks have completed and the
@@ -322,7 +304,6 @@ task_finished(isc__task_t *task) {
                 */
                BROADCAST(&manager->work_available);
        }
-#endif /* USE_WORKER_THREADS */
        UNLOCK(&manager->lock);
 
        DESTROYLOCK(&task->lock);
@@ -459,9 +440,7 @@ task_shutdown(isc__task_t *task) {
 static inline void
 task_ready(isc__task_t *task) {
        isc__taskmgr_t *manager = task->manager;
-#ifdef USE_WORKER_THREADS
        isc_boolean_t has_privilege = isc__task_privilege((isc_task_t *) task);
-#endif /* USE_WORKER_THREADS */
 
        REQUIRE(VALID_MANAGER(manager));
        REQUIRE(task->state == task_state_ready);
@@ -470,10 +449,8 @@ task_ready(isc__task_t *task) {
 
        LOCK(&manager->lock);
        push_readyq(manager, task);
-#ifdef USE_WORKER_THREADS
        if (manager->mode == isc_taskmgrmode_normal || has_privilege)
                SIGNAL(&manager->work_available);
-#endif /* USE_WORKER_THREADS */
        UNLOCK(&manager->lock);
 }
 
@@ -999,12 +976,10 @@ push_readyq(isc__taskmgr_t *manager, isc__task_t *task) {
 static void
 dispatch(isc__taskmgr_t *manager) {
        isc__task_t *task;
-#ifndef USE_WORKER_THREADS
        unsigned int total_dispatch_count = 0;
        isc__tasklist_t new_ready_tasks;
        isc__tasklist_t new_priority_tasks;
        unsigned int tasks_ready = 0;
-#endif /* USE_WORKER_THREADS */
 
        REQUIRE(VALID_MANAGER(manager));
 
@@ -1058,14 +1033,11 @@ dispatch(isc__taskmgr_t *manager) {
         * unlocks.  The while expression is always protected by the lock.
         */
 
-#ifndef USE_WORKER_THREADS
        ISC_LIST_INIT(new_ready_tasks);
        ISC_LIST_INIT(new_priority_tasks);
-#endif
        LOCK(&manager->lock);
 
        while (!FINISHED(manager)) {
-#ifdef USE_WORKER_THREADS
                /*
                 * For reasons similar to those given in the comment in
                 * isc_task_send() above, it is safe for us to dequeue
@@ -1087,11 +1059,6 @@ dispatch(isc__taskmgr_t *manager) {
                                                    ISC_MSGSET_TASK,
                                                    ISC_MSG_AWAKE, "awake"));
                }
-#else /* USE_WORKER_THREADS */
-               if (total_dispatch_count >= DEFAULT_TASKMGR_QUANTUM ||
-                   empty_readyq(manager))
-                       break;
-#endif /* USE_WORKER_THREADS */
                XTHREADTRACE(isc_msgcat_get(isc_msgcat, ISC_MSGSET_TASK,
                                            ISC_MSG_WORKING, "working"));
 
@@ -1142,9 +1109,6 @@ dispatch(isc__taskmgr_t *manager) {
                                                LOCK(&task->lock);
                                        }
                                        dispatch_count++;
-#ifndef USE_WORKER_THREADS
-                                       total_dispatch_count++;
-#endif /* USE_WORKER_THREADS */
                                }
 
                                if (task->references == 0 &&
@@ -1229,7 +1193,6 @@ dispatch(isc__taskmgr_t *manager) {
 
                        LOCK(&manager->lock);
                        manager->tasks_running--;
-#ifdef USE_WORKER_THREADS
                        if (manager->exclusive_requested &&
                            manager->tasks_running == 1) {
                                SIGNAL(&manager->exclusive_granted);
@@ -1237,7 +1200,6 @@ dispatch(isc__taskmgr_t *manager) {
                                   manager->tasks_running == 0) {
                                SIGNAL(&manager->paused);
                        }
-#endif /* USE_WORKER_THREADS */
                        if (requeue) {
                                /*
                                 * We know we're awake, so we don't have
@@ -1258,19 +1220,10 @@ dispatch(isc__taskmgr_t *manager) {
                                 * were usually nonempty, the 'optimization'
                                 * might even hurt rather than help.
                                 */
-#ifdef USE_WORKER_THREADS
                                push_readyq(manager, task);
-#else
-                               ENQUEUE(new_ready_tasks, task, ready_link);
-                               if ((task->flags & TASK_F_PRIVILEGED) != 0)
-                                       ENQUEUE(new_priority_tasks, task,
-                                               ready_priority_link);
-                               tasks_ready++;
-#endif
                        }
                }
 
-#ifdef USE_WORKER_THREADS
                /*
                 * If we are in privileged execution mode and there are no
                 * tasks remaining on the current ready queue, then
@@ -1282,22 +1235,11 @@ dispatch(isc__taskmgr_t *manager) {
                        if (!empty_readyq(manager))
                                BROADCAST(&manager->work_available);
                }
-#endif
        }
 
-#ifndef USE_WORKER_THREADS
-       ISC_LIST_APPENDLIST(manager->ready_tasks, new_ready_tasks, ready_link);
-       ISC_LIST_APPENDLIST(manager->ready_priority_tasks, new_priority_tasks,
-                           ready_priority_link);
-       manager->tasks_ready += tasks_ready;
-       if (empty_readyq(manager))
-               manager->mode = isc_taskmgrmode_normal;
-#endif
-
        UNLOCK(&manager->lock);
 }
 
-#ifdef USE_WORKER_THREADS
 static isc_threadresult_t
 #ifdef _WIN32
 WINAPI
@@ -1319,18 +1261,15 @@ run(void *uap) {
 
        return ((isc_threadresult_t)0);
 }
-#endif /* USE_WORKER_THREADS */
 
 static void
 manager_free(isc__taskmgr_t *manager) {
        isc_mem_t *mctx;
 
-#ifdef USE_WORKER_THREADS
        (void)isc_condition_destroy(&manager->exclusive_granted);
        (void)isc_condition_destroy(&manager->work_available);
        (void)isc_condition_destroy(&manager->paused);
        isc_mem_free(manager->mctx, manager->threads);
-#endif /* USE_WORKER_THREADS */
        DESTROYLOCK(&manager->lock);
        DESTROYLOCK(&manager->excl_lock);
        manager->common.impmagic = 0;
@@ -1338,10 +1277,6 @@ manager_free(isc__taskmgr_t *manager) {
        mctx = manager->mctx;
        isc_mem_put(mctx, manager, sizeof(*manager));
        isc_mem_detach(&mctx);
-
-#ifdef USE_SHARED_MANAGER
-       taskmgr = NULL;
-#endif /* USE_SHARED_MANAGER */
 }
 
 isc_result_t
@@ -1359,21 +1294,6 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
        REQUIRE(workers > 0);
        REQUIRE(managerp != NULL && *managerp == NULL);
 
-#ifndef USE_WORKER_THREADS
-       UNUSED(i);
-       UNUSED(started);
-#endif
-
-#ifdef USE_SHARED_MANAGER
-       if (taskmgr != NULL) {
-               if (taskmgr->refs == 0)
-                       return (ISC_R_SHUTTINGDOWN);
-               taskmgr->refs++;
-               *managerp = (isc_taskmgr_t *)taskmgr;
-               return (ISC_R_SUCCESS);
-       }
-#endif /* USE_SHARED_MANAGER */
-
        manager = isc_mem_get(mctx, sizeof(*manager));
        if (manager == NULL)
                return (ISC_R_NOMEMORY);
@@ -1391,7 +1311,6 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
                goto cleanup_mgr;
        }
 
-#ifdef USE_WORKER_THREADS
        manager->workers = 0;
        manager->threads = isc_mem_allocate(mctx,
                                            workers * sizeof(isc_thread_t));
@@ -1423,7 +1342,6 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
                result = ISC_R_UNEXPECTED;
                goto cleanup_exclusivegranted;
        }
-#endif /* USE_WORKER_THREADS */
        if (default_quantum == 0)
                default_quantum = DEFAULT_DEFAULT_QUANTUM;
        manager->default_quantum = default_quantum;
@@ -1439,7 +1357,6 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
 
        isc_mem_attach(mctx, &manager->mctx);
 
-#ifdef USE_WORKER_THREADS
        LOCK(&manager->lock);
        /*
         * Start workers.
@@ -1463,17 +1380,11 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
                return (ISC_R_NOTHREADS);
        }
        isc_thread_setconcurrency(workers);
-#endif /* USE_WORKER_THREADS */
-#ifdef USE_SHARED_MANAGER
-       manager->refs = 1;
-       taskmgr = manager;
-#endif /* USE_SHARED_MANAGER */
 
        *managerp = (isc_taskmgr_t *)manager;
 
        return (ISC_R_SUCCESS);
 
-#ifdef USE_WORKER_THREADS
  cleanup_exclusivegranted:
        (void)isc_condition_destroy(&manager->exclusive_granted);
  cleanup_workavailable:
@@ -1482,7 +1393,6 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
        isc_mem_free(mctx, manager->threads);
  cleanup_lock:
        DESTROYLOCK(&manager->lock);
-#endif
  cleanup_mgr:
        isc_mem_put(mctx, manager, sizeof(*manager));
        return (result);
@@ -1502,18 +1412,6 @@ isc__taskmgr_destroy(isc_taskmgr_t **managerp) {
        manager = (isc__taskmgr_t *)*managerp;
        REQUIRE(VALID_MANAGER(manager));
 
-#ifndef USE_WORKER_THREADS
-       UNUSED(i);
-#endif /* USE_WORKER_THREADS */
-
-#ifdef USE_SHARED_MANAGER
-       manager->refs--;
-       if (manager->refs > 0) {
-               *managerp = NULL;
-               return;
-       }
-#endif
-
        XTHREADTRACE("isc_taskmgr_destroy");
        /*
         * Only one non-worker thread may ever call this routine.
@@ -1565,7 +1463,6 @@ isc__taskmgr_destroy(isc_taskmgr_t **managerp) {
                        push_readyq(manager, task);
                UNLOCK(&task->lock);
        }
-#ifdef USE_WORKER_THREADS
        /*
         * Wake up any sleeping workers.  This ensures we get work done if
         * there's work left to do, and if there are already no tasks left
@@ -1579,28 +1476,6 @@ isc__taskmgr_destroy(isc_taskmgr_t **managerp) {
         */
        for (i = 0; i < manager->workers; i++)
                (void)isc_thread_join(manager->threads[i], NULL);
-#else /* USE_WORKER_THREADS */
-       /*
-        * Dispatch the shutdown events.
-        */
-       UNLOCK(&manager->lock);
-       while (isc__taskmgr_ready((isc_taskmgr_t *)manager))
-               (void)isc__taskmgr_dispatch((isc_taskmgr_t *)manager);
-       if (!ISC_LIST_EMPTY(manager->tasks)) {
-               isc__task_t *t;
-               isc_mem_printallactive(stderr);
-               for (t = ISC_LIST_HEAD(manager->tasks);
-                    t != NULL;
-                    t = ISC_LIST_NEXT(t, link))
-               {
-                       fprintf(stderr, "task: %p (%s)\n", t, t->name);
-               }
-       }
-       INSIST(ISC_LIST_EMPTY(manager->tasks));
-#ifdef USE_SHARED_MANAGER
-       taskmgr = NULL;
-#endif
-#endif /* USE_WORKER_THREADS */
 
        manager_free(manager);
 
@@ -1626,43 +1501,6 @@ isc__taskmgr_mode(isc_taskmgr_t *manager0) {
        return (mode);
 }
 
-#ifndef USE_WORKER_THREADS
-isc_boolean_t
-isc__taskmgr_ready(isc_taskmgr_t *manager0) {
-       isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0;
-       isc_boolean_t is_ready;
-
-#ifdef USE_SHARED_MANAGER
-       if (manager == NULL)
-               manager = taskmgr;
-#endif
-       if (manager == NULL)
-               return (ISC_FALSE);
-
-       LOCK(&manager->lock);
-       is_ready = !empty_readyq(manager);
-       UNLOCK(&manager->lock);
-
-       return (is_ready);
-}
-
-isc_result_t
-isc__taskmgr_dispatch(isc_taskmgr_t *manager0) {
-       isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0;
-
-#ifdef USE_SHARED_MANAGER
-       if (manager == NULL)
-               manager = taskmgr;
-#endif
-       if (manager == NULL)
-               return (ISC_R_NOTFOUND);
-
-       dispatch(manager);
-
-       return (ISC_R_SUCCESS);
-}
-
-#else
 void
 isc__taskmgr_pause(isc_taskmgr_t *manager0) {
        isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0;
@@ -1685,7 +1523,6 @@ isc__taskmgr_resume(isc_taskmgr_t *manager0) {
        }
        UNLOCK(&manager->lock);
 }
-#endif /* USE_WORKER_THREADS */
 
 void
 isc_taskmgr_setexcltask(isc_taskmgr_t *mgr0, isc_task_t *task0) {
@@ -1721,7 +1558,6 @@ isc_taskmgr_excltask(isc_taskmgr_t *mgr0, isc_task_t **taskp) {
 
 isc_result_t
 isc__task_beginexclusive(isc_task_t *task0) {
-#ifdef USE_WORKER_THREADS
        isc__task_t *task = (isc__task_t *)task0;
        isc__taskmgr_t *manager = task->manager;
 
@@ -1741,15 +1577,11 @@ isc__task_beginexclusive(isc_task_t *task0) {
                WAIT(&manager->exclusive_granted, &manager->lock);
        }
        UNLOCK(&manager->lock);
-#else
-       UNUSED(task0);
-#endif
        return (ISC_R_SUCCESS);
 }
 
 void
 isc__task_endexclusive(isc_task_t *task0) {
-#ifdef USE_WORKER_THREADS
        isc__task_t *task = (isc__task_t *)task0;
        isc__taskmgr_t *manager = task->manager;
 
@@ -1759,9 +1591,6 @@ isc__task_endexclusive(isc_task_t *task0) {
        manager->exclusive_requested = ISC_FALSE;
        BROADCAST(&manager->work_available);
        UNLOCK(&manager->lock);
-#else
-       UNUSED(task0);
-#endif
 }
 
 void
@@ -1831,7 +1660,6 @@ isc_taskmgr_renderxml(isc_taskmgr_t *mgr0, xmlTextWriterPtr writer) {
         * on which type is enabled.
         */
        TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "thread-model"));
-#ifdef ISC_PLATFORM_USETHREADS
        TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "type"));
        TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR "threaded"));
        TRY0(xmlTextWriterEndElement(writer)); /* type */
@@ -1839,15 +1667,6 @@ isc_taskmgr_renderxml(isc_taskmgr_t *mgr0, xmlTextWriterPtr writer) {
        TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "worker-threads"));
        TRY0(xmlTextWriterWriteFormatString(writer, "%d", mgr->workers));
        TRY0(xmlTextWriterEndElement(writer)); /* worker-threads */
-#else /* ISC_PLATFORM_USETHREADS */
-       TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "type"));
-       TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR "non-threaded"));
-       TRY0(xmlTextWriterEndElement(writer)); /* type */
-
-       TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "references"));
-       TRY0(xmlTextWriterWriteFormatString(writer, "%d", mgr->refs));
-       TRY0(xmlTextWriterEndElement(writer)); /* references */
-#endif /* ISC_PLATFORM_USETHREADS */
 
        TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "default-quantum"));
        TRY0(xmlTextWriterWriteFormatString(writer, "%d",
@@ -1940,7 +1759,6 @@ isc_taskmgr_renderjson(isc_taskmgr_t *mgr0, json_object *tasks) {
         * Write out the thread-model, and some details about each depending
         * on which type is enabled.
         */
-#ifdef ISC_PLATFORM_USETHREADS
        obj = json_object_new_string("threaded");
        CHECKMEM(obj);
        json_object_object_add(tasks, "thread-model", obj);
@@ -1948,15 +1766,6 @@ isc_taskmgr_renderjson(isc_taskmgr_t *mgr0, json_object *tasks) {
        obj = json_object_new_int(mgr->workers);
        CHECKMEM(obj);
        json_object_object_add(tasks, "worker-threads", obj);
-#else /* ISC_PLATFORM_USETHREADS */
-       obj = json_object_new_string("non-threaded");
-       CHECKMEM(obj);
-       json_object_object_add(tasks, "thread-model", obj);
-
-       obj = json_object_new_int(mgr->refs);
-       CHECKMEM(obj);
-       json_object_object_add(tasks, "references", obj);
-#endif /* ISC_PLATFORM_USETHREADS */
 
        obj = json_object_new_int(mgr->default_quantum);
        CHECKMEM(obj);
index 50d23b3df486f23e8ee53184aa79bfd3bd899257..c7839125bdcb6ffccbf78dfa67c285e47c5b2ae5 100644 (file)
@@ -70,11 +70,7 @@ create_managers(unsigned int workers) {
        char *p;
 
        if (workers == 0) {
-#ifdef ISC_PLATFORM_USETHREADS
                workers = isc_os_ncpus();
-#else
-               workers = 1;
-#endif
        }
 
        p = getenv("ISC_TASK_WORKERS");
@@ -123,11 +119,7 @@ isc_test_begin(FILE *logfile, isc_boolean_t start_managers,
                CHECK(isc_log_usechannel(logconfig, "stderr", NULL, NULL));
        }
 
-#ifdef ISC_PLATFORM_USETHREADS
        ncpus = isc_os_ncpus();
-#else
-       ncpus = 1;
-#endif
 
        if (start_managers) {
                CHECK(create_managers(workers));
index ac4994fc8ddd62815d90034c9db63cbb9ce90bbb..74f1de25c577dbb7203531343a890b112b88ccdd 100644 (file)
@@ -85,10 +85,6 @@ static isc_result_t
 waitfor(completion_t *completion) {
        int i = 0;
        while (!completion->done && i++ < 5000) {
-#ifndef ISC_PLATFORM_USETHREADS
-               while (isc__taskmgr_ready(taskmgr))
-                       isc__taskmgr_dispatch(taskmgr);
-#endif
                isc_test_nap(1000);
        }
        if (completion->done)
@@ -111,19 +107,6 @@ waitfor(completion_t *completion) {
 
 static void
 waitbody(void) {
-#ifndef ISC_PLATFORM_USETHREADS
-       struct timeval tv;
-       isc_socketwait_t *swait = NULL;
-
-       while (isc__taskmgr_ready(taskmgr))
-               isc__taskmgr_dispatch(taskmgr);
-       if (socketmgr != NULL) {
-               tv.tv_sec = 0;
-               tv.tv_usec = 1000 ;
-               if (isc__socketmgr_waitevents(socketmgr, &tv, &swait) > 0)
-                       isc__socketmgr_dispatch(socketmgr, swait);
-       } else
-#endif
                isc_test_nap(1000);
 }
 
index 49615f9b4a9d2d1c55c6d4c88a65f04f11360c67..2e140c2d9e6b8150f86e9240e11794e6c9a2a9c6 100644 (file)
@@ -41,9 +41,7 @@ int counter = 0;
 static int active[10];
 static isc_boolean_t done = ISC_FALSE;
 
-#ifdef ISC_PLATFORM_USETHREADS
 static isc_condition_t cv;
-#endif
 
 static void
 set(isc_task_t *task, isc_event_t *event) {
@@ -139,10 +137,6 @@ ATF_TC_BODY(all_events, tc) {
        isc_task_send(task, &event);
 
        while ((a == 0 || b == 0) && i++ < 5000) {
-#ifndef ISC_PLATFORM_USETHREADS
-               while (isc__taskmgr_ready(taskmgr))
-                       isc__taskmgr_dispatch(taskmgr);
-#endif
                isc_test_nap(1000);
        }
 
@@ -176,13 +170,11 @@ ATF_TC_BODY(privileged_events, tc) {
        result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
-#ifdef ISC_PLATFORM_USETHREADS
        /*
         * Pause the task manager so we can fill up the work queue
         * without things happening while we do it.
         */
        isc__taskmgr_pause(taskmgr);
-#endif
 
        result = isc_task_create(taskmgr, 0, &task1);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
@@ -240,16 +232,10 @@ ATF_TC_BODY(privileged_events, tc) {
        isc_taskmgr_setmode(taskmgr, isc_taskmgrmode_privileged);
        ATF_CHECK_EQ(isc_taskmgr_mode(taskmgr), isc_taskmgrmode_privileged);
 
-#ifdef ISC_PLATFORM_USETHREADS
        isc__taskmgr_resume(taskmgr);
-#endif
 
        /* We're waiting for *all* variables to be set */
        while ((a == 0 || b == 0 || c == 0 || d == 0 || e == 0) && i++ < 5000) {
-#ifndef ISC_PLATFORM_USETHREADS
-               while (isc__taskmgr_ready(taskmgr))
-                       isc__taskmgr_dispatch(taskmgr);
-#endif
                isc_test_nap(1000);
        }
 
@@ -305,13 +291,11 @@ ATF_TC_BODY(privilege_drop, tc) {
        result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
-#ifdef ISC_PLATFORM_USETHREADS
        /*
         * Pause the task manager so we can fill up the work queue
         * without things happening while we do it.
         */
        isc__taskmgr_pause(taskmgr);
-#endif
 
        result = isc_task_create(taskmgr, 0, &task1);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
@@ -369,17 +353,11 @@ ATF_TC_BODY(privilege_drop, tc) {
        isc_taskmgr_setmode(taskmgr, isc_taskmgrmode_privileged);
        ATF_CHECK_EQ(isc_taskmgr_mode(taskmgr), isc_taskmgrmode_privileged);
 
-#ifdef ISC_PLATFORM_USETHREADS
        isc__taskmgr_resume(taskmgr);
-#endif
 
        /* We're waiting for all variables to be set. */
        while ((a == -1 || b == -1 || c == -1 || d == -1 || e == -1) &&
               i++ < 5000) {
-#ifndef ISC_PLATFORM_USETHREADS
-               while (isc__taskmgr_ready(taskmgr))
-                       isc__taskmgr_dispatch(taskmgr);
-#endif
                isc_test_nap(1000);
        }
 
@@ -646,10 +624,6 @@ ATF_TC_BODY(task_exclusive, tc) {
        isc_test_end();
 }
 
-/*
- * The remainder of these tests require threads
- */
-#ifdef ISC_PLATFORM_USETHREADS
 /*
  * Max tasks test:
  * The task system can create and execute many tasks. Tests with 10000.
@@ -1447,7 +1421,6 @@ ATF_TC_HEAD(purgeevent_notpurge, tc) {
 ATF_TC_BODY(purgeevent_notpurge, tc) {
        try_purgeevent(ISC_FALSE);
 }
-#endif
 
 /*
  * Main
@@ -1459,8 +1432,6 @@ ATF_TP_ADD_TCS(tp) {
        ATF_TP_ADD_TC(tp, privilege_drop);
        ATF_TP_ADD_TC(tp, basic);
        ATF_TP_ADD_TC(tp, task_exclusive);
-
-#ifdef ISC_PLATFORM_USETHREADS
        ATF_TP_ADD_TC(tp, manytasks);
        ATF_TP_ADD_TC(tp, shutdown);
        ATF_TP_ADD_TC(tp, post_shutdown);
@@ -1468,8 +1439,6 @@ ATF_TP_ADD_TCS(tp) {
        ATF_TP_ADD_TC(tp, purgerange);
        ATF_TP_ADD_TC(tp, purgeevent);
        ATF_TP_ADD_TC(tp, purgeevent_notpurge);
-#endif
-
        return (atf_no_error());
 }
 
index 986cc110a89610f1d993739c7c80dd2c1eb0b287..54f80bf8687769e84fbeba1a53200c4e3a05849c 100644 (file)
 
 #include "isctest.h"
 
-/*
- * This entire test requires threads.
- */
-#ifdef ISC_PLATFORM_USETHREADS
-
 /*
  * Helper functions
  */
@@ -564,30 +559,15 @@ ATF_TC_BODY(purge, tc) {
 
        isc_test_end();
 }
-#else
-ATF_TC(untested);
-ATF_TC_HEAD(untested, tc) {
-       atf_tc_set_md_var(tc, "descr", "skipping nsec3 test");
-}
-ATF_TC_BODY(untested, tc) {
-       UNUSED(tc);
-       atf_tc_skip("DNSSEC not available");
-}
-#endif
 
 /*
  * Main
  */
 ATF_TP_ADD_TCS(tp) {
-#ifdef ISC_PLATFORM_USETHREADS
        ATF_TP_ADD_TC(tp, ticker);
        ATF_TP_ADD_TC(tp, once_life);
        ATF_TP_ADD_TC(tp, once_idle);
        ATF_TP_ADD_TC(tp, reset);
        ATF_TP_ADD_TC(tp, purge);
-#else
-       ATF_TP_ADD_TC(tp, untested);
-#endif
-
        return (atf_no_error());
 }
index e979b044b8c71e8eab5f07f34de082229a747b47..9977192ad746a50f6250d096313eff0efd1c2410 100644 (file)
 #include <openssl/err.h>
 #endif
 
-/* See task.c about the following definition: */
-#ifdef ISC_PLATFORM_USETHREADS
-#define USE_TIMER_THREAD
-#else
-#define USE_SHARED_MANAGER
-#endif /* ISC_PLATFORM_USETHREADS */
-
-#ifndef USE_TIMER_THREAD
-#include "timer_p.h"
-#endif /* USE_TIMER_THREAD */
-
 #ifdef ISC_TIMER_TRACE
 #define XTRACE(s)                      fprintf(stderr, "%s\n", (s))
 #define XTRACEID(s, t)                 fprintf(stderr, "%s %p\n", (s), (t))
@@ -101,13 +90,8 @@ struct isc__timermgr {
        LIST(isc__timer_t)              timers;
        unsigned int                    nscheduled;
        isc_time_t                      due;
-#ifdef USE_TIMER_THREAD
        isc_condition_t                 wakeup;
        isc_thread_t                    thread;
-#endif /* USE_TIMER_THREAD */
-#ifdef USE_SHARED_MANAGER
-       unsigned int                    refs;
-#endif /* USE_SHARED_MANAGER */
        isc_heap_t *                    heap;
 };
 
@@ -169,22 +153,13 @@ static struct isc__timermgrmethods {
        (void *)isc_timermgr_poke
 };
 
-#ifdef USE_SHARED_MANAGER
-/*!
- * If the manager is supposed to be shared, there can be only one.
- */
-static isc__timermgr_t *timermgr = NULL;
-#endif /* USE_SHARED_MANAGER */
-
 static inline isc_result_t
 schedule(isc__timer_t *timer, isc_time_t *now, isc_boolean_t signal_ok) {
        isc_result_t result;
        isc__timermgr_t *manager;
        isc_time_t due;
        int cmp;
-#ifdef USE_TIMER_THREAD
        isc_boolean_t timedwait;
-#endif
 
        /*!
         * Note: the caller must ensure locking.
@@ -192,20 +167,16 @@ schedule(isc__timer_t *timer, isc_time_t *now, isc_boolean_t signal_ok) {
 
        REQUIRE(timer->type != isc_timertype_inactive);
 
-#ifndef USE_TIMER_THREAD
        UNUSED(signal_ok);
-#endif /* USE_TIMER_THREAD */
 
        manager = timer->manager;
 
-#ifdef USE_TIMER_THREAD
        /*!
         * If the manager was timed wait, we may need to signal the
         * manager to force a wakeup.
         */
        timedwait = ISC_TF(manager->nscheduled > 0 &&
                           isc_time_seconds(&manager->due) != 0);
-#endif
 
        /*
         * Compute the new due time.
@@ -268,7 +239,6 @@ schedule(isc__timer_t *timer, isc_time_t *now, isc_boolean_t signal_ok) {
         * the current "next" timer.  We do this either by waking up the
         * run thread, or explicitly setting the value in the manager.
         */
-#ifdef USE_TIMER_THREAD
 
        /*
         * This is a temporary (probably) hack to fix a bug on tru64 5.1
@@ -301,20 +271,13 @@ schedule(isc__timer_t *timer, isc_time_t *now, isc_boolean_t signal_ok) {
                                      "signal (schedule)"));
                SIGNAL(&manager->wakeup);
        }
-#else /* USE_TIMER_THREAD */
-       if (timer->index == 1 &&
-           isc_time_compare(&timer->due, &manager->due) < 0)
-               manager->due = timer->due;
-#endif /* USE_TIMER_THREAD */
 
        return (ISC_R_SUCCESS);
 }
 
 static inline void
 deschedule(isc__timer_t *timer) {
-#ifdef USE_TIMER_THREAD
        isc_boolean_t need_wakeup = ISC_FALSE;
-#endif
        isc__timermgr_t *manager;
 
        /*
@@ -323,22 +286,18 @@ deschedule(isc__timer_t *timer) {
 
        manager = timer->manager;
        if (timer->index > 0) {
-#ifdef USE_TIMER_THREAD
                if (timer->index == 1)
                        need_wakeup = ISC_TRUE;
-#endif
                isc_heap_delete(manager->heap, timer->index);
                timer->index = 0;
                INSIST(manager->nscheduled > 0);
                manager->nscheduled--;
-#ifdef USE_TIMER_THREAD
                if (need_wakeup) {
                        XTRACE(isc_msgcat_get(isc_msgcat, ISC_MSGSET_TIMER,
                                              ISC_MSG_SIGNALDESCHED,
                                              "signal (deschedule)"));
                        SIGNAL(&manager->wakeup);
                }
-#endif /* USE_TIMER_THREAD */
        }
 }
 
@@ -775,7 +734,6 @@ dispatch(isc__timermgr_t *manager, isc_time_t *now) {
        }
 }
 
-#ifdef USE_TIMER_THREAD
 static isc_threadresult_t
 #ifdef _WIN32                  /* XXXDCL */
 WINAPI
@@ -820,7 +778,6 @@ run(void *uap) {
 
        return ((isc_threadresult_t)0);
 }
-#endif /* USE_TIMER_THREAD */
 
 static isc_boolean_t
 sooner(void *v1, void *v2) {
@@ -857,14 +814,6 @@ isc__timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp) {
 
        REQUIRE(managerp != NULL && *managerp == NULL);
 
-#ifdef USE_SHARED_MANAGER
-       if (timermgr != NULL) {
-               timermgr->refs++;
-               *managerp = (isc_timermgr_t *)timermgr;
-               return (ISC_R_SUCCESS);
-       }
-#endif /* USE_SHARED_MANAGER */
-
        manager = isc_mem_get(mctx, sizeof(*manager));
        if (manager == NULL)
                return (ISC_R_NOMEMORY);
@@ -891,7 +840,6 @@ isc__timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp) {
                return (result);
        }
        isc_mem_attach(mctx, &manager->mctx);
-#ifdef USE_TIMER_THREAD
        if (isc_condition_init(&manager->wakeup) != ISC_R_SUCCESS) {
                isc_mem_detach(&manager->mctx);
                DESTROYLOCK(&manager->lock);
@@ -917,11 +865,6 @@ isc__timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp) {
                return (ISC_R_UNEXPECTED);
        }
        isc_thread_setname(manager->thread, "isc-timer");
-#endif
-#ifdef USE_SHARED_MANAGER
-       manager->refs = 1;
-       timermgr = manager;
-#endif /* USE_SHARED_MANAGER */
 
        *managerp = (isc_timermgr_t *)manager;
 
@@ -930,15 +873,11 @@ isc__timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp) {
 
 void
 isc_timermgr_poke(isc_timermgr_t *manager0) {
-#ifdef USE_TIMER_THREAD
        isc__timermgr_t *manager = (isc__timermgr_t *)manager0;
 
        REQUIRE(VALID_MANAGER(manager));
 
        SIGNAL(&manager->wakeup);
-#else
-       UNUSED(manager0);
-#endif
 }
 
 void
@@ -956,32 +895,15 @@ isc__timermgr_destroy(isc_timermgr_t **managerp) {
 
        LOCK(&manager->lock);
 
-#ifdef USE_SHARED_MANAGER
-       manager->refs--;
-       if (manager->refs > 0) {
-               UNLOCK(&manager->lock);
-               *managerp = NULL;
-               return;
-       }
-       timermgr = NULL;
-#endif /* USE_SHARED_MANAGER */
-
-#ifndef USE_TIMER_THREAD
-       isc__timermgr_dispatch((isc_timermgr_t *)manager);
-#endif
-
        REQUIRE(EMPTY(manager->timers));
        manager->done = ISC_TRUE;
 
-#ifdef USE_TIMER_THREAD
        XTRACE(isc_msgcat_get(isc_msgcat, ISC_MSGSET_TIMER,
                              ISC_MSG_SIGNALDESTROY, "signal (destroy)"));
        SIGNAL(&manager->wakeup);
-#endif /* USE_TIMER_THREAD */
 
        UNLOCK(&manager->lock);
 
-#ifdef USE_TIMER_THREAD
        /*
         * Wait for thread to exit.
         */
@@ -990,14 +912,11 @@ isc__timermgr_destroy(isc_timermgr_t **managerp) {
                                 "isc_thread_join() %s",
                                 isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
                                                ISC_MSG_FAILED, "failed"));
-#endif /* USE_TIMER_THREAD */
 
        /*
         * Clean up.
         */
-#ifdef USE_TIMER_THREAD
        (void)isc_condition_destroy(&manager->wakeup);
-#endif /* USE_TIMER_THREAD */
        DESTROYLOCK(&manager->lock);
        isc_heap_destroy(&manager->heap);
        manager->common.impmagic = 0;
@@ -1008,41 +927,7 @@ isc__timermgr_destroy(isc_timermgr_t **managerp) {
 
        *managerp = NULL;
 
-#ifdef USE_SHARED_MANAGER
-       timermgr = NULL;
-#endif
-}
-
-#ifndef USE_TIMER_THREAD
-isc_result_t
-isc__timermgr_nextevent(isc_timermgr_t *manager0, isc_time_t *when) {
-       isc__timermgr_t *manager = (isc__timermgr_t *)manager0;
-
-#ifdef USE_SHARED_MANAGER
-       if (manager == NULL)
-               manager = timermgr;
-#endif
-       if (manager == NULL || manager->nscheduled == 0)
-               return (ISC_R_NOTFOUND);
-       *when = manager->due;
-       return (ISC_R_SUCCESS);
-}
-
-void
-isc__timermgr_dispatch(isc_timermgr_t *manager0) {
-       isc__timermgr_t *manager = (isc__timermgr_t *)manager0;
-       isc_time_t now;
-
-#ifdef USE_SHARED_MANAGER
-       if (manager == NULL)
-               manager = timermgr;
-#endif
-       if (manager == NULL)
-               return;
-       TIME_NOW(&now);
-       dispatch(manager, &now);
 }
-#endif /* USE_TIMER_THREAD */
 
 isc_result_t
 isc__timer_register(void) {
index 118729e9ab46322ef86e92512bdaeed5d4caadbf..68423849a093050d5c620188d9df6289e3b4be41 100644 (file)
@@ -40,9 +40,7 @@
 #include <isc/time.h>
 #include <isc/util.h>
 
-#ifdef ISC_PLATFORM_USETHREADS
 #include <pthread.h>
-#endif
 
 /*%
  * For BIND9 internal applications built with threads, we use a single app
  * For other cases (including BIND9 built without threads) an app context acts
  * as an event loop dispatching various events.
  */
-#ifndef ISC_PLATFORM_USETHREADS
-#include "../timer_p.h"
-#include "socket_p.h"
-#endif /* ISC_PLATFORM_USETHREADS */
-
-#ifdef ISC_PLATFORM_USETHREADS
 static pthread_t               blockedthread;
-#endif /* ISC_PLATFORM_USETHREADS */
 
 /*%
  * The following are intended for internal use (indicated by "isc__"
@@ -116,10 +107,8 @@ typedef struct isc__appctx {
        isc_taskmgr_t           *taskmgr;
        isc_socketmgr_t         *socketmgr;
        isc_timermgr_t          *timermgr;
-#ifdef ISC_PLATFORM_USETHREADS
        isc_mutex_t             readylock;
        isc_condition_t         ready;
-#endif /* ISC_PLATFORM_USETHREADS */
 } isc__appctx_t;
 
 static isc__appctx_t isc_g_appctx;
@@ -230,7 +219,6 @@ isc__app_ctxstart(isc_appctx_t *ctx0) {
        }
 #endif
 
-#ifdef ISC_PLATFORM_USETHREADS
 #ifdef HAVE_LINUXTHREADS
        main_thread = pthread_self();
 #endif /* HAVE_LINUXTHREADS */
@@ -243,14 +231,9 @@ isc__app_ctxstart(isc_appctx_t *ctx0) {
        if (result != ISC_R_SUCCESS)
                goto cleanup_rlock;
 
-       result = isc_mutex_init(&ctx->lock);
-       if (result != ISC_R_SUCCESS)
-               goto cleanup_rcond;
-#else /* ISC_PLATFORM_USETHREADS */
        result = isc_mutex_init(&ctx->lock);
        if (result != ISC_R_SUCCESS)
                goto cleanup;
-#endif /* ISC_PLATFORM_USETHREADS */
 
        ISC_LIST_INIT(ctx->on_run);
 
@@ -305,7 +288,6 @@ isc__app_ctxstart(isc_appctx_t *ctx0) {
                goto cleanup;
 #endif
 
-#ifdef ISC_PLATFORM_USETHREADS
        /*
         * Block SIGHUP, SIGINT, SIGTERM.
         *
@@ -334,44 +316,14 @@ isc__app_ctxstart(isc_appctx_t *ctx0) {
                result = ISC_R_UNEXPECTED;
                goto cleanup;
        }
-#else /* ISC_PLATFORM_USETHREADS */
-       /*
-        * Unblock SIGHUP, SIGINT, SIGTERM.
-        *
-        * If we're not using threads, we need to make sure that SIGHUP,
-        * SIGINT and SIGTERM are not inherited as blocked from the parent
-        * process.
-        */
-       if (sigemptyset(&sset) != 0 ||
-           sigaddset(&sset, SIGHUP) != 0 ||
-           sigaddset(&sset, SIGINT) != 0 ||
-           sigaddset(&sset, SIGTERM) != 0) {
-               isc__strerror(errno, strbuf, sizeof(strbuf));
-               UNEXPECTED_ERROR(__FILE__, __LINE__,
-                                "isc_app_start() sigsetops: %s", strbuf);
-               result = ISC_R_UNEXPECTED;
-               goto cleanup;
-       }
-       presult = sigprocmask(SIG_UNBLOCK, &sset, NULL);
-       if (presult != 0) {
-               isc__strerror(errno, strbuf, sizeof(strbuf));
-               UNEXPECTED_ERROR(__FILE__, __LINE__,
-                                "isc_app_start() sigprocmask: %s", strbuf);
-               result = ISC_R_UNEXPECTED;
-               goto cleanup;
-       }
-#endif /* ISC_PLATFORM_USETHREADS */
 
        return (ISC_R_SUCCESS);
 
  cleanup:
-#ifdef ISC_PLATFORM_USETHREADS
- cleanup_rcond:
        (void)isc_condition_destroy(&ctx->ready);
 
  cleanup_rlock:
        (void)isc_mutex_destroy(&ctx->readylock);
-#endif /* ISC_PLATFORM_USETHREADS */
        return (result);
 }
 
@@ -433,159 +385,17 @@ isc__app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task,
        return (result);
 }
 
-#ifndef ISC_PLATFORM_USETHREADS
-/*!
- * Event loop for nonthreaded programs.
- */
-static isc_result_t
-evloop(isc__appctx_t *ctx) {
-       isc_result_t result;
-
-       while (!ctx->want_shutdown) {
-               int n;
-               isc_time_t when, now;
-               struct timeval tv, *tvp;
-               isc_socketwait_t *swait;
-               isc_boolean_t readytasks;
-               isc_boolean_t call_timer_dispatch = ISC_FALSE;
-
-               /*
-                * Check the reload (or suspend) case first for exiting the
-                * loop as fast as possible in case:
-                *   - the direct call to isc__taskmgr_dispatch() in
-                *     isc__app_ctxrun() completes all the tasks so far,
-                *   - there is thus currently no active task, and
-                *   - there is a timer event
-                */
-               if (ctx->want_reload) {
-                       ctx->want_reload = ISC_FALSE;
-                       return (ISC_R_RELOAD);
-               }
-
-               readytasks = isc__taskmgr_ready(ctx->taskmgr);
-               if (readytasks) {
-                       tv.tv_sec = 0;
-                       tv.tv_usec = 0;
-                       tvp = &tv;
-                       call_timer_dispatch = ISC_TRUE;
-               } else {
-                       result = isc__timermgr_nextevent(ctx->timermgr, &when);
-                       if (result != ISC_R_SUCCESS)
-                               tvp = NULL;
-                       else {
-                               isc_uint64_t us;
-
-                               TIME_NOW(&now);
-                               us = isc_time_microdiff(&when, &now);
-                               if (us == 0)
-                                       call_timer_dispatch = ISC_TRUE;
-                               tv.tv_sec = us / 1000000;
-                               tv.tv_usec = us % 1000000;
-                               tvp = &tv;
-                       }
-               }
-
-               swait = NULL;
-               n = isc__socketmgr_waitevents(ctx->socketmgr, tvp, &swait);
-
-               if (n == 0 || call_timer_dispatch) {
-                       /*
-                        * We call isc__timermgr_dispatch() only when
-                        * necessary, in order to reduce overhead.  If the
-                        * select() call indicates a timeout, we need the
-                        * dispatch.  Even if not, if we set the 0-timeout
-                        * for the select() call, we need to check the timer
-                        * events.  In the 'readytasks' case, there may be no
-                        * timeout event actually, but there is no other way
-                        * to reduce the overhead.
-                        * Note that we do not have to worry about the case
-                        * where a new timer is inserted during the select()
-                        * call, since this loop only runs in the non-thread
-                        * mode.
-                        */
-                       isc__timermgr_dispatch(ctx->timermgr);
-               }
-               if (n > 0)
-                       (void)isc__socketmgr_dispatch(ctx->socketmgr, swait);
-               (void)isc__taskmgr_dispatch(ctx->taskmgr);
-       }
-       return (ISC_R_SUCCESS);
-}
-
-/*
- * This is a gross hack to support waiting for condition
- * variables in nonthreaded programs in a limited way;
- * see lib/isc/nothreads/include/isc/condition.h.
- * We implement isc_condition_wait() by entering the
- * event loop recursively until the want_shutdown flag
- * is set by isc_condition_signal().
- */
-
-/*!
- * \brief True if we are currently executing in the recursive
- * event loop.
- */
-static isc_boolean_t in_recursive_evloop = ISC_FALSE;
-
-/*!
- * \brief True if we are exiting the event loop as the result of
- * a call to isc_condition_signal() rather than a shutdown
- * or reload.
- */
-static isc_boolean_t signalled = ISC_FALSE;
-
-isc_result_t
-isc__nothread_wait_hack(isc_condition_t *cp, isc_mutex_t *mp) {
-       isc_result_t result;
-
-       UNUSED(cp);
-       UNUSED(mp);
-
-       INSIST(!in_recursive_evloop);
-       in_recursive_evloop = ISC_TRUE;
-
-       INSIST(*mp == 1); /* Mutex must be locked on entry. */
-       --*mp;
-
-       result = evloop(&isc_g_appctx);
-       if (result == ISC_R_RELOAD)
-               isc_g_appctx.want_reload = ISC_TRUE;
-       if (signalled) {
-               isc_g_appctx.want_shutdown = ISC_FALSE;
-               signalled = ISC_FALSE;
-       }
-
-       ++*mp;
-       in_recursive_evloop = ISC_FALSE;
-       return (ISC_R_SUCCESS);
-}
-
-isc_result_t
-isc__nothread_signal_hack(isc_condition_t *cp) {
-
-       UNUSED(cp);
-
-       INSIST(in_recursive_evloop);
-
-       isc_g_appctx.want_shutdown = ISC_TRUE;
-       signalled = ISC_TRUE;
-       return (ISC_R_SUCCESS);
-}
-#endif /* ISC_PLATFORM_USETHREADS */
-
 isc_result_t
 isc__app_ctxrun(isc_appctx_t *ctx0) {
        isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
        int result;
        isc_event_t *event, *next_event;
        isc_task_t *task;
-#ifdef ISC_PLATFORM_USETHREADS
        sigset_t sset;
        char strbuf[ISC_STRERRORSIZE];
 #ifdef HAVE_SIGWAIT
        int sig;
 #endif /* HAVE_SIGWAIT */
-#endif /* ISC_PLATFORM_USETHREADS */
 
        REQUIRE(VALID_APPCTX(ctx));
 
@@ -615,17 +425,6 @@ isc__app_ctxrun(isc_appctx_t *ctx0) {
 
        UNLOCK(&ctx->lock);
 
-#ifndef ISC_PLATFORM_USETHREADS
-       if (isc_bind9 && ctx == &isc_g_appctx) {
-               result = handle_signal(SIGHUP, reload_action);
-               if (result != ISC_R_SUCCESS)
-                       return (ISC_R_SUCCESS);
-       }
-
-       (void) isc__taskmgr_dispatch(ctx->taskmgr);
-       result = evloop(ctx);
-       return (result);
-#else /* ISC_PLATFORM_USETHREADS */
        /*
         * BIND9 internal tools using multiple contexts do not
         * rely on signal.
@@ -745,7 +544,6 @@ isc__app_ctxrun(isc_appctx_t *ctx0) {
        }
 
        return (ISC_R_SUCCESS);
-#endif /* ISC_PLATFORM_USETHREADS */
 }
 
 isc_result_t
@@ -757,9 +555,7 @@ isc_result_t
 isc__app_ctxshutdown(isc_appctx_t *ctx0) {
        isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
        isc_boolean_t want_kill = ISC_TRUE;
-#ifdef ISC_PLATFORM_USETHREADS
        char strbuf[ISC_STRERRORSIZE];
-#endif /* ISC_PLATFORM_USETHREADS */
 
        REQUIRE(VALID_APPCTX(ctx));
 
@@ -779,9 +575,6 @@ isc__app_ctxshutdown(isc_appctx_t *ctx0) {
                        /* BIND9 internal, but using multiple contexts */
                        ctx->want_shutdown = ISC_TRUE;
                else {
-#ifndef ISC_PLATFORM_USETHREADS
-                       ctx->want_shutdown = ISC_TRUE;
-#else /* ISC_PLATFORM_USETHREADS */
 #ifdef HAVE_LINUXTHREADS
                        if (isc_bind9) {
                                /* BIND9 internal, single context */
@@ -818,7 +611,6 @@ isc__app_ctxshutdown(isc_appctx_t *ctx0) {
                                UNLOCK(&ctx->readylock);
                                SIGNAL(&ctx->ready);
                        }
-#endif /* ISC_PLATFORM_USETHREADS */
                }
        }
 
@@ -834,9 +626,7 @@ isc_result_t
 isc__app_ctxsuspend(isc_appctx_t *ctx0) {
        isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
        isc_boolean_t want_kill = ISC_TRUE;
-#ifdef ISC_PLATFORM_USETHREADS
        char strbuf[ISC_STRERRORSIZE];
-#endif
 
        REQUIRE(VALID_APPCTX(ctx));
 
@@ -857,9 +647,6 @@ isc__app_ctxsuspend(isc_appctx_t *ctx0) {
                        /* BIND9 internal, but using multiple contexts */
                        ctx->want_reload = ISC_TRUE;
                else {
-#ifndef ISC_PLATFORM_USETHREADS
-                       ctx->want_reload = ISC_TRUE;
-#else /* ISC_PLATFORM_USETHREADS */
 #ifdef HAVE_LINUXTHREADS
                        if (isc_bind9) {
                                /* BIND9 internal, single context */
@@ -896,7 +683,6 @@ isc__app_ctxsuspend(isc_appctx_t *ctx0) {
                                UNLOCK(&ctx->readylock);
                                SIGNAL(&ctx->ready);
                        }
-#endif /* ISC_PLATFORM_USETHREADS */
                }
        }
 
@@ -924,41 +710,33 @@ isc__app_finish(void) {
 
 void
 isc__app_block(void) {
-#ifdef ISC_PLATFORM_USETHREADS
        sigset_t sset;
-#endif /* ISC_PLATFORM_USETHREADS */
        REQUIRE(isc_g_appctx.running);
        REQUIRE(!isc_g_appctx.blocked);
 
        isc_g_appctx.blocked = ISC_TRUE;
-#ifdef ISC_PLATFORM_USETHREADS
        blockedthread = pthread_self();
        RUNTIME_CHECK(sigemptyset(&sset) == 0 &&
                      sigaddset(&sset, SIGINT) == 0 &&
                      sigaddset(&sset, SIGTERM) == 0);
        RUNTIME_CHECK(pthread_sigmask(SIG_UNBLOCK, &sset, NULL) == 0);
-#endif /* ISC_PLATFORM_USETHREADS */
 }
 
 void
 isc__app_unblock(void) {
-#ifdef ISC_PLATFORM_USETHREADS
        sigset_t sset;
-#endif /* ISC_PLATFORM_USETHREADS */
 
        REQUIRE(isc_g_appctx.running);
        REQUIRE(isc_g_appctx.blocked);
 
        isc_g_appctx.blocked = ISC_FALSE;
 
-#ifdef ISC_PLATFORM_USETHREADS
        REQUIRE(blockedthread == pthread_self());
 
        RUNTIME_CHECK(sigemptyset(&sset) == 0 &&
                      sigaddset(&sset, SIGINT) == 0 &&
                      sigaddset(&sset, SIGTERM) == 0);
        RUNTIME_CHECK(pthread_sigmask(SIG_BLOCK, &sset, NULL) == 0);
-#endif /* ISC_PLATFORM_USETHREADS */
 }
 
 isc_result_t
index b14f23c05a53f8c062265c98a315380a68840a52..ba62699c71d551cfb0bf1060c8060bfa141a6745 100644 (file)
 
 #include "errno2result.h"
 
-/* See task.c about the following definition: */
-#ifdef ISC_PLATFORM_USETHREADS
-#define USE_WATCHER_THREAD
-#else
-#define USE_SHARED_MANAGER
-#endif /* ISC_PLATFORM_USETHREADS */
-
-#ifndef USE_WATCHER_THREAD
-#include "socket_p.h"
-#endif /* USE_WATCHER_THREAD */
-
 #if defined(SO_BSDCOMPAT) && defined(__linux__)
 #include <sys/utsname.h>
 #endif
@@ -120,21 +109,6 @@ typedef struct {
 #define USE_SELECT
 #endif /* ISC_PLATFORM_HAVEKQUEUE */
 
-#ifndef USE_WATCHER_THREAD
-#if defined(USE_KQUEUE) || defined(USE_EPOLL) || defined(USE_DEVPOLL)
-struct isc_socketwait {
-       int nevents;
-};
-#elif defined (USE_SELECT)
-struct isc_socketwait {
-       fd_set *readset;
-       fd_set *writeset;
-       int nfds;
-       int maxfd;
-};
-#endif /* USE_KQUEUE */
-#endif /* !USE_WATCHER_THREAD */
-
 /*
  * Set by the -T dscp option on the command line. If set to a value
  * other than -1, we check to make sure DSCP values match it, and
@@ -215,13 +189,8 @@ typedef enum { poll_idle, poll_active, poll_checking } pollstate_t;
 /*%
  * Size of per-FD lock buckets.
  */
-#ifdef ISC_PLATFORM_USETHREADS
 #define FDLOCK_COUNT           1024
 #define FDLOCK_ID(fd)          ((fd) % FDLOCK_COUNT)
-#else
-#define FDLOCK_COUNT           1
-#define FDLOCK_ID(fd)          0
-#endif /* ISC_PLATFORM_USETHREADS */
 
 /*%
  * Maximum number of events communicated with the kernel.  There should normally
@@ -442,9 +411,7 @@ struct isc__socketmgr {
        int                     fd_bufsize;
 #endif /* USE_SELECT */
        unsigned int            maxsocks;
-#ifdef ISC_PLATFORM_USETHREADS
        int                     pipe_fds[2];
-#endif
 
        /* Locked by fdlock. */
        isc__socket_t          **fds;
@@ -466,19 +433,11 @@ struct isc__socketmgr {
        int                     maxfd;
 #endif /* USE_SELECT */
        int                     reserved;       /* unlocked */
-#ifdef USE_WATCHER_THREAD
        isc_thread_t            watcher;
        isc_condition_t         shutdown_ok;
-#else /* USE_WATCHER_THREAD */
-       unsigned int            refs;
-#endif /* USE_WATCHER_THREAD */
        int                     maxudp;
 };
 
-#ifdef USE_SHARED_MANAGER
-static isc__socketmgr_t *socketmgr = NULL;
-#endif /* USE_SHARED_MANAGER */
-
 #define CLOSED                 0       /* this one must be zero */
 #define MANAGED                        1
 #define CLOSE_PENDING          2
@@ -515,9 +474,7 @@ static void build_msghdr_send(isc__socket_t *, char *, isc_socketevent_t *,
                              struct msghdr *, struct iovec *, size_t *);
 static void build_msghdr_recv(isc__socket_t *, char *, isc_socketevent_t *,
                              struct msghdr *, struct iovec *, size_t *);
-#ifdef USE_WATCHER_THREAD
 static isc_boolean_t process_ctlfd(isc__socketmgr_t *manager);
-#endif
 static void setdscp(isc__socket_t *sock, isc_dscp_t dscp);
 
 /*%
@@ -808,8 +765,6 @@ static const isc_statscounter_t rawstatsindex[] = {
        isc_sockstatscounter_rawactive
 };
 
-#if defined(USE_KQUEUE) || defined(USE_EPOLL) || defined(USE_DEVPOLL) || \
-    defined(USE_WATCHER_THREAD)
 static void
 manager_log(isc__socketmgr_t *sockmgr,
            isc_logcategory_t *category, isc_logmodule_t *module, int level,
@@ -832,7 +787,6 @@ manager_log(isc__socketmgr_t *sockmgr,
        isc_log_write(isc_lctx, category, module, level,
                      "sockmgr %p: %s", sockmgr, msgbuf);
 }
-#endif
 
 static void
 socket_log(isc__socket_t *sock, const isc_sockaddr_t *address,
@@ -1158,7 +1112,6 @@ wakeup_socket(isc__socketmgr_t *manager, int fd, int msg) {
        }
 }
 
-#ifdef USE_WATCHER_THREAD
 /*
  * Poke the select loop when there is something for us to do.
  * The write is required (by POSIX) to complete.  That is, we
@@ -1229,19 +1182,6 @@ select_readmsg(isc__socketmgr_t *mgr, int *fd, int *msg) {
        *fd = buf[0];
        *msg = buf[1];
 }
-#else /* USE_WATCHER_THREAD */
-/*
- * Update the state of the socketmgr when something changes.
- */
-static void
-select_poke(isc__socketmgr_t *manager, int fd, int msg) {
-       if (msg == SELECT_POKE_SHUTDOWN)
-               return;
-       else if (fd >= 0)
-               wakeup_socket(manager, fd, msg);
-       return;
-}
-#endif /* USE_WATCHER_THREAD */
 
 /*
  * Make a fd non-blocking.
@@ -2262,10 +2202,8 @@ socketclose(isc__socketmgr_t *manager, isc__socket_t *sock, int fd) {
                        }
                        UNLOCK(&manager->fdlock[lockid]);
                }
-#ifdef ISC_PLATFORM_USETHREADS
                if (manager->maxfd < manager->pipe_fds[0])
                        manager->maxfd = manager->pipe_fds[0];
-#endif
        }
 
        UNLOCK(&manager->lock);
@@ -2297,10 +2235,8 @@ destroy(isc__socket_t **sockp) {
 
        ISC_LIST_UNLINK(manager->socklist, sock, link);
 
-#ifdef USE_WATCHER_THREAD
        if (ISC_LIST_EMPTY(manager->socklist))
                SIGNAL(&manager->shutdown_ok);
-#endif /* USE_WATCHER_THREAD */
 
        /* can't unlock manager as its memory context is still used */
        free_socket(sockp);
@@ -4027,9 +3963,7 @@ process_fds(isc__socketmgr_t *manager, struct kevent *events, int nevents) {
        int i;
        isc_boolean_t readable, writable;
        isc_boolean_t done = ISC_FALSE;
-#ifdef USE_WATCHER_THREAD
        isc_boolean_t have_ctlevent = ISC_FALSE;
-#endif
 
        if (nevents == manager->nevents) {
                /*
@@ -4045,21 +3979,17 @@ process_fds(isc__socketmgr_t *manager, struct kevent *events, int nevents) {
 
        for (i = 0; i < nevents; i++) {
                REQUIRE(events[i].ident < manager->maxsocks);
-#ifdef USE_WATCHER_THREAD
                if (events[i].ident == (uintptr_t)manager->pipe_fds[0]) {
                        have_ctlevent = ISC_TRUE;
                        continue;
                }
-#endif
                readable = ISC_TF(events[i].filter == EVFILT_READ);
                writable = ISC_TF(events[i].filter == EVFILT_WRITE);
                process_fd(manager, events[i].ident, readable, writable);
        }
 
-#ifdef USE_WATCHER_THREAD
        if (have_ctlevent)
                done = process_ctlfd(manager);
-#endif
 
        return (done);
 }
@@ -4069,9 +3999,7 @@ process_fds(isc__socketmgr_t *manager, struct epoll_event *events, int nevents)
 {
        int i;
        isc_boolean_t done = ISC_FALSE;
-#ifdef USE_WATCHER_THREAD
        isc_boolean_t have_ctlevent = ISC_FALSE;
-#endif
 
        if (nevents == manager->nevents) {
                manager_log(manager, ISC_LOGCATEGORY_GENERAL,
@@ -4082,12 +4010,10 @@ process_fds(isc__socketmgr_t *manager, struct epoll_event *events, int nevents)
 
        for (i = 0; i < nevents; i++) {
                REQUIRE(events[i].data.fd < (int)manager->maxsocks);
-#ifdef USE_WATCHER_THREAD
                if (events[i].data.fd == manager->pipe_fds[0]) {
                        have_ctlevent = ISC_TRUE;
                        continue;
                }
-#endif
                if ((events[i].events & EPOLLERR) != 0 ||
                    (events[i].events & EPOLLHUP) != 0) {
                        /*
@@ -4105,10 +4031,8 @@ process_fds(isc__socketmgr_t *manager, struct epoll_event *events, int nevents)
                           (events[i].events & EPOLLOUT) != 0);
        }
 
-#ifdef USE_WATCHER_THREAD
        if (have_ctlevent)
                done = process_ctlfd(manager);
-#endif
 
        return (done);
 }
@@ -4117,9 +4041,7 @@ static isc_boolean_t
 process_fds(isc__socketmgr_t *manager, struct pollfd *events, int nevents) {
        int i;
        isc_boolean_t done = ISC_FALSE;
-#ifdef USE_WATCHER_THREAD
        isc_boolean_t have_ctlevent = ISC_FALSE;
-#endif
 
        if (nevents == manager->nevents) {
                manager_log(manager, ISC_LOGCATEGORY_GENERAL,
@@ -4130,21 +4052,17 @@ process_fds(isc__socketmgr_t *manager, struct pollfd *events, int nevents) {
 
        for (i = 0; i < nevents; i++) {
                REQUIRE(events[i].fd < (int)manager->maxsocks);
-#ifdef USE_WATCHER_THREAD
                if (events[i].fd == manager->pipe_fds[0]) {
                        have_ctlevent = ISC_TRUE;
                        continue;
                }
-#endif
                process_fd(manager, events[i].fd,
                           (events[i].events & POLLIN) != 0,
                           (events[i].events & POLLOUT) != 0);
        }
 
-#ifdef USE_WATCHER_THREAD
        if (have_ctlevent)
                done = process_ctlfd(manager);
-#endif
 
        return (done);
 }
@@ -4158,17 +4076,14 @@ process_fds(isc__socketmgr_t *manager, int maxfd, fd_set *readfds,
        REQUIRE(maxfd <= (int)manager->maxsocks);
 
        for (i = 0; i < maxfd; i++) {
-#ifdef USE_WATCHER_THREAD
                if (i == manager->pipe_fds[0] || i == manager->pipe_fds[1])
                        continue;
-#endif /* USE_WATCHER_THREAD */
                process_fd(manager, i, FD_ISSET(i, readfds),
                           FD_ISSET(i, writefds));
        }
 }
 #endif
 
-#ifdef USE_WATCHER_THREAD
 static isc_boolean_t
 process_ctlfd(isc__socketmgr_t *manager) {
        int msg, fd;
@@ -4365,7 +4280,6 @@ watcher(void *uap) {
 
        return ((isc_threadresult_t)0);
 }
-#endif /* USE_WATCHER_THREAD */
 
 void
 isc__socketmgr_setreserved(isc_socketmgr_t *manager0, isc_uint32_t reserved) {
@@ -4416,7 +4330,6 @@ setup_watcher(isc_mem_t *mctx, isc__socketmgr_t *manager) {
                return (result);
        }
 
-#ifdef USE_WATCHER_THREAD
        result = watch_fd(manager, manager->pipe_fds[0], SELECT_POKE_READ);
        if (result != ISC_R_SUCCESS) {
                close(manager->kqueue_fd);
@@ -4424,7 +4337,6 @@ setup_watcher(isc_mem_t *mctx, isc__socketmgr_t *manager) {
                            sizeof(struct kevent) * manager->nevents);
                return (result);
        }
-#endif /* USE_WATCHER_THREAD */
 #elif defined(USE_EPOLL)
        manager->nevents = ISC_SOCKET_MAXEVENTS;
        manager->events = isc_mem_get(mctx, sizeof(struct epoll_event) *
@@ -4444,7 +4356,6 @@ setup_watcher(isc_mem_t *mctx, isc__socketmgr_t *manager) {
                            sizeof(struct epoll_event) * manager->nevents);
                return (result);
        }
-#ifdef USE_WATCHER_THREAD
        result = watch_fd(manager, manager->pipe_fds[0], SELECT_POKE_READ);
        if (result != ISC_R_SUCCESS) {
                close(manager->epoll_fd);
@@ -4452,7 +4363,6 @@ setup_watcher(isc_mem_t *mctx, isc__socketmgr_t *manager) {
                            sizeof(struct epoll_event) * manager->nevents);
                return (result);
        }
-#endif /* USE_WATCHER_THREAD */
 #elif defined(USE_DEVPOLL)
        manager->nevents = ISC_SOCKET_MAXEVENTS;
        result = isc_resource_getcurlimit(isc_resource_openfiles,
@@ -4491,7 +4401,6 @@ setup_watcher(isc_mem_t *mctx, isc__socketmgr_t *manager) {
                            sizeof(pollinfo_t) * manager->maxsocks);
                return (result);
        }
-#ifdef USE_WATCHER_THREAD
        result = watch_fd(manager, manager->pipe_fds[0], SELECT_POKE_READ);
        if (result != ISC_R_SUCCESS) {
                close(manager->devpoll_fd);
@@ -4501,7 +4410,6 @@ setup_watcher(isc_mem_t *mctx, isc__socketmgr_t *manager) {
                            sizeof(pollinfo_t) * manager->maxsocks);
                return (result);
        }
-#endif /* USE_WATCHER_THREAD */
 #elif defined(USE_SELECT)
        UNUSED(result);
 
@@ -4549,12 +4457,8 @@ setup_watcher(isc_mem_t *mctx, isc__socketmgr_t *manager) {
        memset(manager->read_fds, 0, manager->fd_bufsize);
        memset(manager->write_fds, 0, manager->fd_bufsize);
 
-#ifdef USE_WATCHER_THREAD
        (void)watch_fd(manager, manager->pipe_fds[0], SELECT_POKE_READ);
        manager->maxfd = manager->pipe_fds[0];
-#else /* USE_WATCHER_THREAD */
-       manager->maxfd = 0;
-#endif /* USE_WATCHER_THREAD */
 #endif /* USE_KQUEUE */
 
        return (ISC_R_SUCCESS);
@@ -4562,7 +4466,6 @@ setup_watcher(isc_mem_t *mctx, isc__socketmgr_t *manager) {
 
 static void
 cleanup_watcher(isc_mem_t *mctx, isc__socketmgr_t *manager) {
-#ifdef USE_WATCHER_THREAD
        isc_result_t result;
 
        result = unwatch_fd(manager, manager->pipe_fds[0], SELECT_POKE_READ);
@@ -4572,7 +4475,6 @@ cleanup_watcher(isc_mem_t *mctx, isc__socketmgr_t *manager) {
                                 isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
                                                ISC_MSG_FAILED, "failed"));
        }
-#endif /* USE_WATCHER_THREAD */
 
 #ifdef USE_KQUEUE
        close(manager->kqueue_fd);
@@ -4611,25 +4513,11 @@ isc__socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
 {
        int i;
        isc__socketmgr_t *manager;
-#ifdef USE_WATCHER_THREAD
        char strbuf[ISC_STRERRORSIZE];
-#endif
        isc_result_t result;
 
        REQUIRE(managerp != NULL && *managerp == NULL);
 
-#ifdef USE_SHARED_MANAGER
-       if (socketmgr != NULL) {
-               /* Don't allow maxsocks to be updated */
-               if (maxsocks > 0 && socketmgr->maxsocks != maxsocks)
-                       return (ISC_R_EXISTS);
-
-               socketmgr->refs++;
-               *managerp = (isc_socketmgr_t *)socketmgr;
-               return (ISC_R_SUCCESS);
-       }
-#endif /* USE_SHARED_MANAGER */
-
        if (maxsocks == 0)
                maxsocks = ISC_SOCKET_MAXSOCKETS;
 
@@ -4690,7 +4578,6 @@ isc__socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
                }
        }
 
-#ifdef USE_WATCHER_THREAD
        if (isc_condition_init(&manager->shutdown_ok) != ISC_R_SUCCESS) {
                UNEXPECTED_ERROR(__FILE__, __LINE__,
                                 "isc_condition_init() %s",
@@ -4716,14 +4603,6 @@ isc__socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
        }
 
        RUNTIME_CHECK(make_nonblock(manager->pipe_fds[0]) == ISC_R_SUCCESS);
-#if 0
-       RUNTIME_CHECK(make_nonblock(manager->pipe_fds[1]) == ISC_R_SUCCESS);
-#endif
-#endif /* USE_WATCHER_THREAD */
-
-#ifdef USE_SHARED_MANAGER
-       manager->refs = 1;
-#endif /* USE_SHARED_MANAGER */
 
        /*
         * Set up initial state for the select loop
@@ -4734,7 +4613,6 @@ isc__socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
 
        memset(manager->fdstate, 0, manager->maxsocks * sizeof(int));
 
-#ifdef USE_WATCHER_THREAD
        /*
         * Start up the select/poll thread.
         */
@@ -4749,26 +4627,18 @@ isc__socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
                goto cleanup;
        }
        isc_thread_setname(manager->watcher, "isc-socket");
-#endif /* USE_WATCHER_THREAD */
        isc_mem_attach(mctx, &manager->mctx);
 
-#ifdef USE_SHARED_MANAGER
-       socketmgr = manager;
-#endif /* USE_SHARED_MANAGER */
        *managerp = (isc_socketmgr_t *)manager;
 
        return (ISC_R_SUCCESS);
 
 cleanup:
-#ifdef USE_WATCHER_THREAD
        (void)close(manager->pipe_fds[0]);
        (void)close(manager->pipe_fds[1]);
-#endif /* USE_WATCHER_THREAD */
 
-#ifdef USE_WATCHER_THREAD
 cleanup_condition:
        (void)isc_condition_destroy(&manager->shutdown_ok);
-#endif /* USE_WATCHER_THREAD */
 
 
 cleanup_lock:
@@ -4839,32 +4709,17 @@ isc__socketmgr_destroy(isc_socketmgr_t **managerp) {
        manager = (isc__socketmgr_t *)*managerp;
        REQUIRE(VALID_MANAGER(manager));
 
-#ifdef USE_SHARED_MANAGER
-       manager->refs--;
-       if (manager->refs > 0) {
-               *managerp = NULL;
-               return;
-       }
-       socketmgr = NULL;
-#endif /* USE_SHARED_MANAGER */
-
        LOCK(&manager->lock);
 
        /*
         * Wait for all sockets to be destroyed.
         */
        while (!ISC_LIST_EMPTY(manager->socklist)) {
-#ifdef USE_WATCHER_THREAD
                manager_log(manager, CREATION, "%s",
                            isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
                                           ISC_MSG_SOCKETSREMAIN,
                                           "sockets exist"));
                WAIT(&manager->shutdown_ok, &manager->lock);
-#else /* USE_WATCHER_THREAD */
-               UNLOCK(&manager->lock);
-               isc__taskmgr_dispatch(NULL);
-               LOCK(&manager->lock);
-#endif /* USE_WATCHER_THREAD */
        }
 
        UNLOCK(&manager->lock);
@@ -4876,7 +4731,6 @@ isc__socketmgr_destroy(isc_socketmgr_t **managerp) {
         */
        select_poke(manager, 0, SELECT_POKE_SHUTDOWN);
 
-#ifdef USE_WATCHER_THREAD
        /*
         * Wait for thread to exit.
         */
@@ -4885,18 +4739,15 @@ isc__socketmgr_destroy(isc_socketmgr_t **managerp) {
                                 "isc_thread_join() %s",
                                 isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
                                                ISC_MSG_FAILED, "failed"));
-#endif /* USE_WATCHER_THREAD */
 
        /*
         * Clean up.
         */
        cleanup_watcher(manager->mctx, manager);
 
-#ifdef USE_WATCHER_THREAD
        (void)close(manager->pipe_fds[0]);
        (void)close(manager->pipe_fds[1]);
        (void)isc_condition_destroy(&manager->shutdown_ok);
-#endif /* USE_WATCHER_THREAD */
 
        for (i = 0; i < (int)manager->maxsocks; i++)
                if (manager->fdstate[i] == CLOSE_PENDING) /* no need to lock */
@@ -4930,9 +4781,6 @@ isc__socketmgr_destroy(isc_socketmgr_t **managerp) {
 
        *managerp = NULL;
 
-#ifdef USE_SHARED_MANAGER
-       socketmgr = NULL;
-#endif
 }
 
 static isc_result_t
@@ -6401,137 +6249,6 @@ isc_socket_socketevent(isc_mem_t *mctx, void *sender,
        return (allocate_socketevent(mctx, sender, eventtype, action, arg));
 }
 
-#ifndef USE_WATCHER_THREAD
-/*
- * In our assumed scenario, we can simply use a single static object.
- * XXX: this is not true if the application uses multiple threads with
- *      'multi-context' mode.  Fixing this is a future TODO item.
- */
-static isc_socketwait_t swait_private;
-
-int
-isc__socketmgr_waitevents(isc_socketmgr_t *manager0, struct timeval *tvp,
-                         isc_socketwait_t **swaitp)
-{
-       isc__socketmgr_t *manager = (isc__socketmgr_t *)manager0;
-       int n;
-#ifdef USE_KQUEUE
-       struct timespec ts, *tsp;
-#endif
-#ifdef USE_EPOLL
-       int timeout;
-#endif
-#ifdef USE_DEVPOLL
-       isc_result_t result;
-       int pass;
-       struct dvpoll dvp;
-#endif
-
-       REQUIRE(swaitp != NULL && *swaitp == NULL);
-
-#ifdef USE_SHARED_MANAGER
-       if (manager == NULL)
-               manager = socketmgr;
-#endif
-       if (manager == NULL)
-               return (0);
-
-#ifdef USE_KQUEUE
-       if (tvp != NULL) {
-               ts.tv_sec = tvp->tv_sec;
-               ts.tv_nsec = tvp->tv_usec * 1000;
-               tsp = &ts;
-       } else
-               tsp = NULL;
-       swait_private.nevents = kevent(manager->kqueue_fd, NULL, 0,
-                                      manager->events, manager->nevents,
-                                      tsp);
-       n = swait_private.nevents;
-#elif defined(USE_EPOLL)
-       if (tvp != NULL)
-               timeout = tvp->tv_sec * 1000 + (tvp->tv_usec + 999) / 1000;
-       else
-               timeout = -1;
-       swait_private.nevents = epoll_wait(manager->epoll_fd,
-                                          manager->events,
-                                          manager->nevents, timeout);
-       n = swait_private.nevents;
-#elif defined(USE_DEVPOLL)
-       /*
-        * Re-probe every thousand calls.
-        */
-       if (manager->calls++ > 1000U) {
-               result = isc_resource_getcurlimit(isc_resource_openfiles,
-                                                 &manager->open_max);
-               if (result != ISC_R_SUCCESS)
-                       manager->open_max = 64;
-               manager->calls = 0;
-       }
-       for (pass = 0; pass < 2; pass++) {
-               dvp.dp_fds = manager->events;
-               dvp.dp_nfds = manager->nevents;
-               if (dvp.dp_nfds >= manager->open_max)
-                       dvp.dp_nfds = manager->open_max - 1;
-               if (tvp != NULL) {
-                       dvp.dp_timeout = tvp->tv_sec * 1000 +
-                               (tvp->tv_usec + 999) / 1000;
-               } else
-                       dvp.dp_timeout = -1;
-               n = ioctl(manager->devpoll_fd, DP_POLL, &dvp);
-               if (n == -1 && errno == EINVAL) {
-                       /*
-                        * {OPEN_MAX} may have dropped.  Look
-                        * up the current value and try again.
-                        */
-                       result = isc_resource_getcurlimit(
-                                                       isc_resource_openfiles,
-                                                       &manager->open_max);
-                       if (result != ISC_R_SUCCESS)
-                               manager->open_max = 64;
-               } else
-                       break;
-       }
-       swait_private.nevents = n;
-#elif defined(USE_SELECT)
-       memmove(manager->read_fds_copy, manager->read_fds, manager->fd_bufsize);
-       memmove(manager->write_fds_copy, manager->write_fds,
-               manager->fd_bufsize);
-
-       swait_private.readset = manager->read_fds_copy;
-       swait_private.writeset = manager->write_fds_copy;
-       swait_private.maxfd = manager->maxfd + 1;
-
-       n = select(swait_private.maxfd, swait_private.readset,
-                  swait_private.writeset, NULL, tvp);
-#endif
-
-       *swaitp = &swait_private;
-       return (n);
-}
-
-isc_result_t
-isc__socketmgr_dispatch(isc_socketmgr_t *manager0, isc_socketwait_t *swait) {
-       isc__socketmgr_t *manager = (isc__socketmgr_t *)manager0;
-
-       REQUIRE(swait == &swait_private);
-
-#ifdef USE_SHARED_MANAGER
-       if (manager == NULL)
-               manager = socketmgr;
-#endif
-       if (manager == NULL)
-               return (ISC_R_NOTFOUND);
-
-#if defined(USE_KQUEUE) || defined(USE_EPOLL) || defined(USE_DEVPOLL)
-       (void)process_fds(manager, manager->events, swait->nevents);
-       return (ISC_R_SUCCESS);
-#elif defined(USE_SELECT)
-       process_fds(manager, swait->maxfd, swait->readset, swait->writeset);
-       return (ISC_R_SUCCESS);
-#endif
-}
-#endif /* USE_WATCHER_THREAD */
-
 void
 isc__socket_setname(isc_socket_t *socket0, const char *name, void *tag) {
        isc__socket_t *sock = (isc__socket_t *)socket0;
@@ -6604,12 +6321,6 @@ isc_socketmgr_renderxml(isc_socketmgr_t *mgr0, xmlTextWriterPtr writer) {
 
        LOCK(&mgr->lock);
 
-#ifdef USE_SHARED_MANAGER
-       TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "references"));
-       TRY0(xmlTextWriterWriteFormatString(writer, "%d", mgr->refs));
-       TRY0(xmlTextWriterEndElement(writer));
-#endif /* USE_SHARED_MANAGER */
-
        TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "sockets"));
        sock = ISC_LIST_HEAD(mgr->socklist);
        while (sock != NULL) {
@@ -6724,12 +6435,6 @@ isc_socketmgr_renderjson(isc_socketmgr_t *mgr0, json_object *stats) {
 
        LOCK(&mgr->lock);
 
-#ifdef USE_SHARED_MANAGER
-       obj = json_object_new_int(mgr->refs);
-       CHECKMEM(obj);
-       json_object_object_add(stats, "references", obj);
-#endif /* USE_SHARED_MANAGER */
-
        sock = ISC_LIST_HEAD(mgr->socklist);
        while (sock != NULL) {
                json_object *states, *entry = json_object_new_object();
index 03367ff92de1f3d8a38898288e04284a4565f9b0..7eb882454ec5dfa0cf69c901df1ac9afaff727bb 100644 (file)
@@ -379,9 +379,7 @@ void
 isc_time_formattimestamp(const isc_time_t *t, char *buf, unsigned int len) {
        time_t now;
        unsigned int flen;
-#ifdef ISC_PLATFORM_USETHREADS
        struct tm tm;
-#endif
 
        REQUIRE(t != NULL);
        INSIST(t->nanoseconds < NS_PER_S);
@@ -389,11 +387,7 @@ isc_time_formattimestamp(const isc_time_t *t, char *buf, unsigned int len) {
        REQUIRE(len > 0);
 
        now = (time_t) t->seconds;
-#ifdef ISC_PLATFORM_USETHREADS
        flen = strftime(buf, len, "%d-%b-%Y %X", localtime_r(&now, &tm));
-#else
-       flen = strftime(buf, len, "%d-%b-%Y %X", localtime(&now));
-#endif
        INSIST(flen < len);
        if (flen != 0)
                snprintf(buf + flen, len - flen,
@@ -407,9 +401,7 @@ void
 isc_time_formathttptimestamp(const isc_time_t *t, char *buf, unsigned int len) {
        time_t now;
        unsigned int flen;
-#ifdef ISC_PLATFORM_USETHREADS
        struct tm tm;
-#endif
 
        REQUIRE(t != NULL);
        INSIST(t->nanoseconds < NS_PER_S);
@@ -420,12 +412,8 @@ isc_time_formathttptimestamp(const isc_time_t *t, char *buf, unsigned int len) {
         * 5 spaces, 1 comma, 3 GMT, 2 %d, 4 %Y, 8 %H:%M:%S, 3+ %a, 3+ %b (29+)
         */
        now = (time_t)t->seconds;
-#ifdef ISC_PLATFORM_USETHREADS
        flen = strftime(buf, len, "%a, %d %b %Y %H:%M:%S GMT",
                        gmtime_r(&now, &tm));
-#else
-       flen = strftime(buf, len, "%a, %d %b %Y %H:%M:%S GMT", gmtime(&now));
-#endif
        INSIST(flen < len);
 }
 
@@ -452,9 +440,7 @@ void
 isc_time_formatISO8601L(const isc_time_t *t, char *buf, unsigned int len) {
        time_t now;
        unsigned int flen;
-#ifdef ISC_PLATFORM_USETHREADS
        struct tm tm;
-#endif
 
        REQUIRE(t != NULL);
        INSIST(t->nanoseconds < NS_PER_S);
@@ -462,11 +448,7 @@ isc_time_formatISO8601L(const isc_time_t *t, char *buf, unsigned int len) {
        REQUIRE(len > 0);
 
        now = (time_t)t->seconds;
-#ifdef ISC_PLATFORM_USETHREADS
        flen = strftime(buf, len, "%Y-%m-%dT%H:%M:%S", localtime_r(&now, &tm));
-#else
-       flen = strftime(buf, len, "%Y-%m-%dT%H:%M:%S", localtime(&now));
-#endif
        INSIST(flen < len);
 }
 
@@ -474,9 +456,7 @@ void
 isc_time_formatISO8601Lms(const isc_time_t *t, char *buf, unsigned int len) {
        time_t now;
        unsigned int flen;
-#ifdef ISC_PLATFORM_USETHREADS
        struct tm tm;
-#endif
 
        REQUIRE(t != NULL);
        INSIST(t->nanoseconds < NS_PER_S);
@@ -484,11 +464,7 @@ isc_time_formatISO8601Lms(const isc_time_t *t, char *buf, unsigned int len) {
        REQUIRE(len > 0);
 
        now = (time_t)t->seconds;
-#ifdef ISC_PLATFORM_USETHREADS
        flen = strftime(buf, len, "%Y-%m-%dT%H:%M:%S", localtime_r(&now, &tm));
-#else
-       flen = strftime(buf, len, "%Y-%m-%dT%H:%M:%S", localtime(&now));
-#endif
        INSIST(flen < len);
        if (flen > 0U && len - flen >= 6) {
                snprintf(buf + flen, len - flen, ".%03u",
@@ -500,9 +476,7 @@ void
 isc_time_formatISO8601(const isc_time_t *t, char *buf, unsigned int len) {
        time_t now;
        unsigned int flen;
-#ifdef ISC_PLATFORM_USETHREADS
        struct tm tm;
-#endif
 
        REQUIRE(t != NULL);
        INSIST(t->nanoseconds < NS_PER_S);
@@ -510,11 +484,7 @@ isc_time_formatISO8601(const isc_time_t *t, char *buf, unsigned int len) {
        REQUIRE(len > 0);
 
        now = (time_t)t->seconds;
-#ifdef ISC_PLATFORM_USETHREADS
        flen = strftime(buf, len, "%Y-%m-%dT%H:%M:%SZ", gmtime_r(&now, &tm));
-#else
-       flen = strftime(buf, len, "%Y-%m-%dT%H:%M:%SZ", gmtime(&now));
-#endif
        INSIST(flen < len);
 }
 
@@ -522,9 +492,7 @@ void
 isc_time_formatISO8601ms(const isc_time_t *t, char *buf, unsigned int len) {
        time_t now;
        unsigned int flen;
-#ifdef ISC_PLATFORM_USETHREADS
        struct tm tm;
-#endif
 
        REQUIRE(t != NULL);
        INSIST(t->nanoseconds < NS_PER_S);
@@ -532,11 +500,7 @@ isc_time_formatISO8601ms(const isc_time_t *t, char *buf, unsigned int len) {
        REQUIRE(len > 0);
 
        now = (time_t)t->seconds;
-#ifdef ISC_PLATFORM_USETHREADS
        flen = strftime(buf, len, "%Y-%m-%dT%H:%M:%SZ", gmtime_r(&now, &tm));
-#else
-       flen = strftime(buf, len, "%Y-%m-%dT%H:%M:%SZ", gmtime(&now));
-#endif
        INSIST(flen < len);
        if (flen > 0U && len - flen >= 5) {
                flen -= 1; /* rewind one character (Z) */
@@ -550,9 +514,7 @@ isc_time_formatshorttimestamp(const isc_time_t *t, char *buf, unsigned int len)
 {
        time_t now;
        unsigned int flen;
-#ifdef ISC_PLATFORM_USETHREADS
        struct tm tm;
-#endif
 
        REQUIRE(t != NULL);
        INSIST(t->nanoseconds < NS_PER_S);
@@ -560,11 +522,7 @@ isc_time_formatshorttimestamp(const isc_time_t *t, char *buf, unsigned int len)
        REQUIRE(len > 0);
 
        now = (time_t)t->seconds;
-#ifdef ISC_PLATFORM_USETHREADS
        flen = strftime(buf, len, "%Y%m%d%H%M%S", gmtime_r(&now, &tm));
-#else
-       flen = strftime(buf, len, "%Y%m%d%H%M%S", gmtime(&now));
-#endif
        INSIST(flen < len);
        if (flen > 0U && len - flen >= 5) {
                snprintf(buf + flen, len - flen, "%03u",
index 283fc4f7e26740fa1abec2e588dc354b03b45245..85b85f75f5cbcbdf12fe80503b188d7592c5d3f3 100644 (file)
@@ -16,8 +16,6 @@
  ***** Platform-dependent defines.
  *****/
 
-#define ISC_PLATFORM_USETHREADS 1
-
 /*
  * Some compatibility cludges
  */
index e125a7d52dbf391755ac1d95c91529caf64ee2b8..c85517af53d91c180d0e0774feca32919ce227df 100644 (file)
@@ -4015,12 +4015,6 @@ isc_socketmgr_renderxml(isc_socketmgr_t *mgr, xmlTextWriterPtr writer)
 
        LOCK(&mgr->lock);
 
-#ifndef ISC_PLATFORM_USETHREADS
-       TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "references"));
-       TRY0(xmlTextWriterWriteFormatString(writer, "%d", mgr->refs));
-       TRY0(xmlTextWriterEndElement(writer));
-#endif
-
        TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "sockets"));
        sock = ISC_LIST_HEAD(mgr->socklist);
        while (sock != NULL) {
index 6b0555ec307fe7f8c97e751e83ee0904a71ab778..6dbf781b0be6d0bd824799516a6da572b11187fd 100644 (file)
@@ -26,9 +26,7 @@ isc_atomic_xadd(isc_int32_t *p, isc_int32_t val) {
        isc_int32_t prev = val;
 
        __asm__ volatile(
-#ifdef ISC_PLATFORM_USETHREADS
                "lock;"
-#endif
                "xadd %0, %1"
                :"=q"(prev)
                :"m"(*p), "0"(prev)
@@ -43,9 +41,7 @@ isc_atomic_xaddq(isc_int64_t *p, isc_int64_t val) {
        isc_int64_t prev = val;
 
        __asm__ volatile(
-#ifdef ISC_PLATFORM_USETHREADS
            "lock;"
-#endif
            "xaddq %0, %1"
            :"=q"(prev)
            :"m"(*p), "0"(prev)
@@ -61,13 +57,11 @@ isc_atomic_xaddq(isc_int64_t *p, isc_int64_t val) {
 static __inline__ void
 isc_atomic_store(isc_int32_t *p, isc_int32_t val) {
        __asm__ volatile(
-#ifdef ISC_PLATFORM_USETHREADS
                /*
                 * xchg should automatically lock memory, but we add it
                 * explicitly just in case (it at least doesn't harm)
                 */
                "lock;"
-#endif
 
                "xchgl %1, %0"
                :
@@ -82,13 +76,11 @@ isc_atomic_store(isc_int32_t *p, isc_int32_t val) {
 static __inline__ void
 isc_atomic_storeq(isc_int64_t *p, isc_int64_t val) {
        __asm__ volatile(
-#ifdef ISC_PLATFORM_USETHREADS
                /*
                 * xchg should automatically lock memory, but we add it
                 * explicitly just in case (it at least doesn't harm)
                 */
                "lock;"
-#endif
 
                "xchgq %1, %0"
                :
@@ -105,9 +97,7 @@ isc_atomic_storeq(isc_int64_t *p, isc_int64_t val) {
 static __inline__ isc_int32_t
 isc_atomic_cmpxchg(isc_int32_t *p, isc_int32_t cmpval, isc_int32_t val) {
        __asm__ volatile(
-#ifdef ISC_PLATFORM_USETHREADS
                "lock;"
-#endif
                "cmpxchgl %1, %2"
                : "=a"(cmpval)
                : "r"(val), "m"(*p), "a"(cmpval)
@@ -132,9 +122,7 @@ isc_atomic_xadd(isc_int32_t *p, isc_int32_t val) {
        __asm (
                "movl 8(%ebp), %ecx\n"
                "movl 12(%ebp), %edx\n"
-#ifdef ISC_PLATFORM_USETHREADS
                "lock;"
-#endif
                "xadd %edx, (%ecx)\n"
 
                /*
@@ -154,9 +142,7 @@ isc_atomic_store(isc_int32_t *p, isc_int32_t val) {
        __asm (
                "movl 8(%ebp), %ecx\n"
                "movl 12(%ebp), %edx\n"
-#ifdef ISC_PLATFORM_USETHREADS
                "lock;"
-#endif
                "xchgl (%ecx), %edx\n"
                );
 }
@@ -171,9 +157,7 @@ isc_atomic_cmpxchg(isc_int32_t *p, isc_int32_t cmpval, isc_int32_t val) {
                "movl 8(%ebp), %ecx\n"
                "movl 12(%ebp), %eax\n" /* must be %eax for cmpxchgl */
                "movl 16(%ebp), %edx\n"
-#ifdef ISC_PLATFORM_USETHREADS
                "lock;"
-#endif
 
                /*
                 * If (%ecx) == %eax then (%ecx) := %edx.
index 8d68574aad18aea051c36929fa845b1c6502c139..637c58fff4daf6902f9dfc578a0ef7011abd85e5 100644 (file)
@@ -38,9 +38,7 @@ isc_atomic_xadd(isc_int32_t *p, isc_int32_t val) {
        __asm (
                "movq %rdi, %rdx\n"
                "movl %esi, %eax\n"
-#ifdef ISC_PLATFORM_USETHREADS
                "lock;"
-#endif
                "xadd %eax, (%rdx)\n"
                /*
                 * XXX: assume %eax will be used as the return value.
@@ -57,9 +55,7 @@ isc_atomic_xaddq(isc_int64_t *p, isc_int64_t val) {
        __asm (
                "movq %rdi, %rdx\n"
                "movq %rsi, %rax\n"
-#ifdef ISC_PLATFORM_USETHREADS
                "lock;"
-#endif
                "xaddq %rax, (%rdx)\n"
                /*
                 * XXX: assume %rax will be used as the return value.
@@ -76,9 +72,7 @@ isc_atomic_store(isc_int32_t *p, isc_int32_t val) {
        __asm (
                "movq %rdi, %rax\n"
                "movl %esi, %edx\n"
-#ifdef ISC_PLATFORM_USETHREADS
                "lock;"
-#endif
                "xchgl (%rax), %edx\n"
                );
 }
@@ -92,9 +86,7 @@ isc_atomic_storeq(isc_int64_t *p, isc_int64_t val) {
        __asm (
                "movq %rdi, %rax\n"
                "movq %rsi, %rdx\n"
-#ifdef ISC_PLATFORM_USETHREADS
                "lock;"
-#endif
                "xchgq (%rax), %rdx\n"
                );
 }
@@ -114,9 +106,7 @@ isc_atomic_cmpxchg(isc_int32_t *p, isc_int32_t cmpval, isc_int32_t val) {
                "movl %esi, %eax\n"
                "movq %rdi, %rdx\n"
 
-#ifdef ISC_PLATFORM_USETHREADS
                "lock;"
-#endif
                /*
                 * If [%rdi] == %eax then [%rdi] := %ecx (equal to %edx
                 * from above), and %eax is untouched (equal to %esi)
index e2466dd54cb0538be6b1195ea8cb3b198bb63d4a..426721a63c6aca9484d3de90f5d00ad5588cb045 100644 (file)
@@ -34,7 +34,6 @@
  *
  * The state must be seeded so that it is not everywhere zero.
  */
-#if defined(ISC_PLATFORM_USETHREADS)
 #if defined(_WIN32) || defined(_WIN64)
 #include <windows.h>
 static volatile HANDLE _mutex = NULL;
@@ -65,10 +64,6 @@ static pthread_mutex_t _mutex = PTHREAD_MUTEX_INITIALIZER;
 #define _LOCK()   pthread_mutex_lock(&_mutex)
 #define _UNLOCK() pthread_mutex_unlock(&_mutex)
 #endif /* defined(_WIN32) || defined(_WIN64) */
-#else /* defined(ISC_PLATFORM_USETHREADS) */
-#define _LOCK()
-#define _UNLOCK()
-#endif
 
 static inline isc_uint32_t rotl(const isc_uint32_t x, int k) {
        return (x << k) | (x >> (32 - k));
index c574ba247f4097943b695d82f752052b48bbe8af..1538c1ba64f3532247c442421742ce46161baed7 100644 (file)
@@ -99,7 +99,6 @@
 #define SEND_BUFFER_SIZE               4096
 #define RECV_BUFFER_SIZE               4096
 
-#ifdef ISC_PLATFORM_USETHREADS
 #define NMCTXS                         100
 /*%<
  * Number of 'mctx pools' for clients. (Should this be configurable?)
  * completely avoiding contentions among threads for an authoritative-only
  * server.
  */
-#else
-#define NMCTXS                         0
-/*%<
- * If named with built without thread, simply share manager's context.  Using
- * a separate context in this case would simply waste memory.
- */
-#endif
 
 #define COOKIE_SIZE 24U /* 8 + 4 + 4 + 8 */
 #define ECS_SIZE 20U /* 2 + 1 + 1 + [0..16] */
index cd2907bf05280c772c0b09a3478e56e142a7c25f..c3b19cd8097b2febb9c2de4949caf09b3eb41ad2 100644 (file)
@@ -140,17 +140,12 @@ cleanup_managers(void) {
        }
 
        while (run_managers && !shutdown_done) {
-#ifndef ISC_PLATFORM_USETHREADS
-               while (isc__taskmgr_ready(taskmgr))
-                       isc__taskmgr_dispatch(taskmgr);
-#else
                /*
                 * There's no straightforward way to determine
                 * whether all the clients have shut down, so
                 * we'll just sleep for a bit and hope.
                 */
                ns_test_nap(500000);
-#endif
        }
 
        if (sctx != NULL)
@@ -176,11 +171,7 @@ create_managers(void) {
        isc_result_t result;
        ns_listenlist_t *listenon = NULL;
        isc_event_t *event = NULL;
-#ifdef ISC_PLATFORM_USETHREADS
        ncpus = isc_os_ncpus();
-#else
-       ncpus = 1;
-#endif
 
        CHECK(isc_taskmgr_create(mctx, ncpus, 0, &taskmgr));
        CHECK(isc_task_create(taskmgr, 0, &maintask));
@@ -210,17 +201,12 @@ create_managers(void) {
                                   scan_interfaces, NULL,
                                   sizeof (isc_event_t));
        isc_task_send(maintask, &event);
-#ifndef ISC_PLATFORM_USETHREADS
-       while (isc__taskmgr_ready(taskmgr))
-               isc__taskmgr_dispatch(taskmgr);
-#else
        /*
         * There's no straightforward way to determine
         * whether the interfaces have been scanned,
         * we'll just sleep for a bit and hope.
         */
        ns_test_nap(500000);
-#endif
 
        run_managers = ISC_TRUE;