Return-Path: Delivered-To: apmail-apr-commits-archive@www.apache.org Received: (qmail 56062 invoked from network); 22 Nov 2006 11:55:48 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 22 Nov 2006 11:55:48 -0000 Received: (qmail 84204 invoked by uid 500); 22 Nov 2006 11:55:58 -0000 Delivered-To: apmail-apr-commits-archive@apr.apache.org Received: (qmail 84180 invoked by uid 500); 22 Nov 2006 11:55:57 -0000 Mailing-List: contact commits-help@apr.apache.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: Reply-To: dev@apr.apache.org List-Id: Delivered-To: mailing list commits@apr.apache.org Received: (qmail 84169 invoked by uid 99); 22 Nov 2006 11:55:57 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Nov 2006 03:55:57 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Nov 2006 03:55:47 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id E7E901A9846; Wed, 22 Nov 2006 03:55:12 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r478137 - in /apr/apr/trunk: CHANGES include/arch/win32/apr_arch_threadproc.h misc/win32/start.c threadproc/win32/threadpriv.c Date: Wed, 22 Nov 2006 11:55:12 -0000 To: commits@apr.apache.org From: wrowe@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20061122115512.E7E901A9846@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: wrowe Date: Wed Nov 22 03:55:12 2006 New Revision: 478137 URL: http://svn.apache.org/viewvc?view=rev&rev=478137 Log: Backout R434327, R437115, which... Implement apr_threadkey_private destructors on WIN32 instead silently ignoring them. and reviewed by wrowe, brane, jerenkrantz to need a more comprehensive solution, e.g. Windows PE destructor entry points, that does -not- break svn. Modified: apr/apr/trunk/CHANGES apr/apr/trunk/include/arch/win32/apr_arch_threadproc.h apr/apr/trunk/misc/win32/start.c apr/apr/trunk/threadproc/win32/threadpriv.c Modified: apr/apr/trunk/CHANGES URL: http://svn.apache.org/viewvc/apr/apr/trunk/CHANGES?view=diff&rev=478137&r1=478136&r2=478137 ============================================================================== --- apr/apr/trunk/CHANGES (original) +++ apr/apr/trunk/CHANGES Wed Nov 22 03:55:12 2006 @@ -25,10 +25,6 @@ *) Fix the timeout converstion in apr_pollset with the KQueue backend. [Marco Molteni ] - *) Implement apr_threadkey_private destructors on WIN32 - instead silently ignoring them, so that they behave like on - the pthreads powered platforms. [Mladen Turk] - *) Support MinGW. [John Vandenberg, Justin Erenkrantz] *) Implement apr_thread_yield on Unix in terms of pthread_yield or Modified: apr/apr/trunk/include/arch/win32/apr_arch_threadproc.h URL: http://svn.apache.org/viewvc/apr/apr/trunk/include/arch/win32/apr_arch_threadproc.h?view=diff&rev=478137&r1=478136&r2=478137 ============================================================================== --- apr/apr/trunk/include/arch/win32/apr_arch_threadproc.h (original) +++ apr/apr/trunk/include/arch/win32/apr_arch_threadproc.h Wed Nov 22 03:55:12 2006 @@ -17,7 +17,6 @@ #include "apr_private.h" #include "apr_thread_proc.h" #include "apr_file_io.h" -#include "apr_hash.h" #ifndef THREAD_PROC_H #define THREAD_PROC_H @@ -68,11 +67,6 @@ struct apr_thread_once_t { long value; }; - -#if defined(APR_DECLARE_EXPORT) -/* Provide to win32/start.c */ -extern apr_hash_t *apr_tls_threadkeys; -#endif #endif /* ! THREAD_PROC_H */ Modified: apr/apr/trunk/misc/win32/start.c URL: http://svn.apache.org/viewvc/apr/apr/trunk/misc/win32/start.c?view=diff&rev=478137&r1=478136&r2=478137 ============================================================================== --- apr/apr/trunk/misc/win32/start.c (original) +++ apr/apr/trunk/misc/win32/start.c Wed Nov 22 03:55:12 2006 @@ -18,13 +18,11 @@ #include "apr_general.h" #include "apr_pools.h" #include "apr_signal.h" -#include "apr_hash.h" #include "ShellAPI.h" #include "apr_arch_misc.h" /* for WSAHighByte / WSALowByte */ #include "wchar.h" #include "apr_arch_file_io.h" -#include "apr_arch_threadproc.h" #include "assert.h" /* This symbol is _private_, although it must be exported. @@ -189,11 +187,6 @@ apr_pool_tag(pool, "apr_initialize"); -#if defined(APR_DECLARE_EXPORT) - /* Initialize threadpriv table */ - apr_tls_threadkeys = apr_hash_make(pool); -#endif - iVersionRequested = MAKEWORD(WSAHighByte, WSALowByte); err = WSAStartup((WORD) iVersionRequested, &wsaData); if (err) { @@ -210,68 +203,12 @@ return APR_SUCCESS; } -#if defined(APR_DECLARE_EXPORT) -typedef (apr_thredkey_destfn_t)(void *data); - -static void threadkey_terminate() -{ - apr_hash_index_t *hi = apr_hash_first(NULL, apr_tls_threadkeys); - - for (; hi != NULL; hi = apr_hash_next(hi)) { - LPDWORD key; - apr_hash_this(hi, &key, NULL, NULL); - TlsFree(*key); - } -} - -static void threadkey_detach() -{ - apr_hash_index_t *hi = apr_hash_first(NULL, apr_tls_threadkeys); - - for (; hi != NULL; hi = apr_hash_next(hi)) { - apr_thredkey_destfn_t *dest = NULL; - LPDWORD key; - void *data; - apr_hash_this(hi, &key, NULL, (void **)&dest); - data = TlsGetValue(*key); - if (data != NULL || GetLastError() == ERROR_SUCCESS) { - /* NULL data is a valid TLS value if explicitly set - * by the TlsSetValue - */ - (*dest)(data); - } - } -} - -BOOL APIENTRY DllMain(HINSTANCE instance, - DWORD reason_for_call, - LPVOID lpReserved) -{ - switch (reason_for_call) { - case DLL_PROCESS_ATTACH: - break; - case DLL_THREAD_ATTACH: - break; - case DLL_THREAD_DETACH: - threadkey_detach(); - break; - case DLL_PROCESS_DETACH: - break; - } - return TRUE; -} - -#endif /* APR_DECLARE_EXPORT */ - APR_DECLARE_NONSTD(void) apr_terminate(void) { initialized--; if (initialized) { return; } -#if defined(APR_DECLARE_EXPORT) - threadkey_terminate(); -#endif apr_pool_terminate(); WSACleanup(); Modified: apr/apr/trunk/threadproc/win32/threadpriv.c URL: http://svn.apache.org/viewvc/apr/apr/trunk/threadproc/win32/threadpriv.c?view=diff&rev=478137&r1=478136&r2=478137 ============================================================================== --- apr/apr/trunk/threadproc/win32/threadpriv.c (original) +++ apr/apr/trunk/threadproc/win32/threadpriv.c Wed Nov 22 03:55:12 2006 @@ -16,16 +16,11 @@ #include "apr_arch_threadproc.h" #include "apr_thread_proc.h" -#include "apr_hash.h" #include "apr_general.h" #include "apr_lib.h" #include "apr_errno.h" #include "apr_portable.h" -#if defined(APR_DECLARE_EXPORT) -apr_hash_t *apr_tls_threadkeys = NULL; -#endif - APR_DECLARE(apr_status_t) apr_threadkey_private_create(apr_threadkey_t **key, void (*dest)(void *), apr_pool_t *pool) @@ -38,10 +33,6 @@ (*key)->pool = pool; if (((*key)->key = TlsAlloc()) != 0xFFFFFFFF) { -#if defined(APR_DECLARE_EXPORT) - apr_hash_set(apr_tls_threadkeys, &((*key)->key), - sizeof(DWORD), dest); -#endif return APR_SUCCESS; } return apr_get_os_error(); @@ -68,11 +59,7 @@ APR_DECLARE(apr_status_t) apr_threadkey_private_delete(apr_threadkey_t *key) { if (TlsFree(key->key)) { -#if defined(APR_DECLARE_EXPORT) - apr_hash_set(apr_tls_threadkeys, &(key->key), - sizeof(DWORD), NULL); -#endif - return APR_SUCCESS; + return APR_SUCCESS; } return apr_get_os_error(); } @@ -110,5 +97,5 @@ } (*key)->key = *thekey; return APR_SUCCESS; -} +}