]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
Use _beginthreadex if available.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 19 Mar 2009 13:04:28 +0000 (13:04 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 19 Mar 2009 13:04:28 +0000 (13:04 +0000)
git-svn-id: file:///svn/unbound/trunk@1537 be551aaa-1e26-0410-a405-d3ace91eadb9

config.h.in
configure
configure.ac
doc/Changelog
util/locks.c

index 11f1c3af644a80203a2bd66d7492b1207634b878..95f7acfd4e3e614c2c6fa73029420deae3d3f88f 100644 (file)
 /* Define to 1 if you have the <ws2tcpip.h> header file. */
 #undef HAVE_WS2TCPIP_H
 
+/* Define to 1 if you have the `_beginthreadex' function. */
+#undef HAVE__BEGINTHREADEX
+
 /* Define to the maximum message length to pass to syslog. */
 #undef MAXSYSLOGMSGLEN
 
index 53c92ffecb224b5d9d2e7fd7fa5569c6117c25e7..2d468ea48a651311caa84c8e492b4f5ad4157218 100755 (executable)
--- a/configure
+++ b/configure
@@ -24308,7 +24308,8 @@ fi
 
 
 
-for ac_func in tzset sigprocmask fcntl getpwnam getrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev setresuid setreuid setresgid setregid glob initgroups daemon strftime localtime_r setusercontext
+
+for ac_func in tzset sigprocmask fcntl getpwnam getrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev setresuid setreuid setresgid setregid glob initgroups daemon strftime localtime_r setusercontext _beginthreadex
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_func" >&5
index 2a2e156c2a159cc0b1a2c9755dd2c4f4deb0fe25..2b4de86dcb351257e8f73bea18d7afd96d1ec586 100644 (file)
@@ -869,7 +869,7 @@ if test $ac_cv_func_getaddrinfo = no; then
 AC_LIBOBJ([fake-rfc2553])
 fi
 AC_SEARCH_LIBS([setusercontext], [util])
-AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam getrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev setresuid setreuid setresgid setregid glob initgroups daemon strftime localtime_r setusercontext])
+AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam getrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev setresuid setreuid setresgid setregid glob initgroups daemon strftime localtime_r setusercontext _beginthreadex])
 
 # check if setreuid en setregid fail, on MacOSX10.4(darwin8).
 if echo $build_os | grep darwin8 > /dev/null; then
index 8854855b7effd8ae65e622a5d4c00ceb88bbb566..d6de1e95eb183d970410c556288171ad6ce136bc 100644 (file)
@@ -1,6 +1,7 @@
 19 March 2009: Wouter
        - winrc/README.txt dos-format text file.
        - iana portlist updated.
+       - use _beginthreadex() when available (performs stack alignment).
 
 18 March 2009: Wouter
        - Added tests, unknown algorithms become insecure. fallback works.
index dec7a1e6e25089f7d54b04c40d372cdddc7e17b5..3f58e92d088463b848228a4d6da963ec838821d2 100644 (file)
@@ -230,11 +230,16 @@ void* ub_thread_key_get(ub_thread_key_t key)
 
 void ub_thread_create(ub_thread_t* thr, void* (*func)(void*), void* arg)
 {
+#ifndef HAVE__BEGINTHREADEX
        *thr = CreateThread(NULL, /* default security (no inherit handle) */
                0, /* default stack size */
                (LPTHREAD_START_ROUTINE)func, arg,
                0, /* default flags, run immediately */
                NULL); /* do not store thread identifier anywhere */
+#else
+       /* the begintheadex routine setups for the C lib; aligns stack */
+       *thr=(ub_thread_t)_beginthreadex(NULL, 0, (void*)func, arg, 0, NULL);
+#endif
        if(*thr == NULL) {
                log_win_err("CreateThread failed", GetLastError());
                fatal_exit("thread create failed");