You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by wr...@apache.org on 2002/02/12 02:24:12 UTC
cvs commit: apr/threadproc/win32 thread.c
wrowe 02/02/11 17:24:12
Modified: threadproc/win32 thread.c
Log:
Another fine patch from Mladen Turk <mt...@mappingsoft.com>, since WinCE
doesn't use the same clib conventions as the rest of the Win32 platforms,
we can't protect the clib space with the _beginthreadex/_endthread
conventions - fall back on the native API.
Revision Changes Path
1.43 +17 -2 apr/threadproc/win32/thread.c
Index: thread.c
===================================================================
RCS file: /home/cvs/apr/threadproc/win32/thread.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- thread.c 28 Dec 2001 23:58:39 -0000 1.42
+++ thread.c 12 Feb 2002 01:24:12 -0000 1.43
@@ -58,7 +58,9 @@
#include "apr_general.h"
#include "apr_lib.h"
#include "apr_portable.h"
+#if APR_HAVE_PROCESS_H
#include <process.h>
+#endif
#include "misc.h"
APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new,
@@ -121,12 +123,19 @@
/* Use 0 for Thread Stack Size, because that will default the stack to the
* same size as the calling thread.
*/
+#ifndef _WIN32_WCE
if (((*new)->td = (HANDLE *)_beginthreadex(NULL, 0,
(unsigned int (APR_THREAD_FUNC *)(void *))dummy_worker,
(*new), 0, &temp)) == 0) {
return APR_FROM_OS_ERROR(_doserrno);
}
-
+#else
+ if (((*new)->td = (HANDLE *)CreateThread(NULL, 0,
+ (unsigned int (APR_THREAD_FUNC *)(void *))dummy_worker,
+ (*new), 0, &temp)) == 0) {
+ return apr_get_os_error();
+ }
+#endif
if (attr && attr->detach) {
CloseHandle((*new)->td);
}
@@ -139,8 +148,12 @@
{
thd->exitval = retval;
apr_pool_destroy(thd->cntxt);
+#ifndef _WIN32_WCE
_endthreadex(0);
- return APR_SUCCESS;
+#else
+ ExitThread(0);
+#endif
+ return APR_SUCCESS;
}
APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval,
@@ -174,9 +187,11 @@
* providing more critical threads a bit larger timeslice)
* we won't worry too much if it's not available.
*/
+#ifndef _WIN32_WCE
if (apr_os_level >= APR_WIN_NT) {
SwitchToThread();
}
+#endif
}
APR_DECLARE(apr_status_t) apr_thread_data_get(void **data, const char *key,