summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>1997-11-15 19:52:53 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>1997-11-15 19:52:53 +0000
commit9811a7d768316e95d4f07bb4877adaf9834ec499 (patch)
tree66b997a871e9c48f9383c309a5e15e5d49a53aa9 /win32
parent0e8f3d24353da72545b4a12c255572c1a6a4eeeb (diff)
downloadperl-9811a7d768316e95d4f07bb4877adaf9834ec499.tar.gz
Use __declspec(thread) var rather tha TslAlloc & co.
p4raw-id: //depot/ansiperl@257
Diffstat (limited to 'win32')
-rw-r--r--win32/makedef.pl2
-rw-r--r--win32/win32thread.c14
-rw-r--r--win32/win32thread.h12
3 files changed, 21 insertions, 7 deletions
diff --git a/win32/makedef.pl b/win32/makedef.pl
index abc89d848a..3ec9b82f68 100644
--- a/win32/makedef.pl
+++ b/win32/makedef.pl
@@ -402,4 +402,6 @@ win32_open_osfhandle
win32_get_osfhandle
Perl_win32_init
Perl_init_os_extras
+Perl_setTHR
+Perl_getTHR
RunPerl
diff --git a/win32/win32thread.c b/win32/win32thread.c
index 4dbc750b05..eefa92c385 100644
--- a/win32/win32thread.c
+++ b/win32/win32thread.c
@@ -1,6 +1,20 @@
#include "EXTERN.h"
#include "perl.h"
+__declspec(thread) struct thread *current_thread;
+
+void
+Perl_setTHR(struct thread *t)
+{
+ current_thread = t;
+}
+
+struct thread *
+Perl_getTHR(void)
+{
+ return current_thread;
+}
+
void
Perl_alloc_thread_key(void)
{
diff --git a/win32/win32thread.h b/win32/win32thread.h
index 0c6bb55b69..6af548d30a 100644
--- a/win32/win32thread.h
+++ b/win32/win32thread.h
@@ -97,7 +97,8 @@ typedef HANDLE perl_mutex;
} \
} STMT_END
-#define THR ((struct thread *) TlsGetValue(thr_key))
+
+#define THR Perl_getTHR()
#define THREAD_CREATE(t, f) Perl_thread_create(t, f)
#define THREAD_POST_CREATE(t) NOOP
#define THREAD_RET_TYPE DWORD WINAPI
@@ -109,6 +110,8 @@ START_EXTERN_C
void Perl_alloc_thread_key _((void));
int Perl_thread_create _((struct thread *thr, thread_func_t *fn));
void Perl_set_thread_self _((struct thread *thr));
+struct thread *Perl_getTHR _((void));
+void Perl_setTHR _((struct thread *t));
END_EXTERN_C
#define INIT_THREADS NOOP
@@ -122,12 +125,7 @@ END_EXTERN_C
croak("panic: JOIN"); \
} STMT_END
-#define SET_THR(t) \
- STMT_START { \
- if (TlsSetValue(thr_key, (void *) (t)) == 0) \
- croak("panic: TlsSetValue"); \
- } STMT_END
-
+#define SET_THR(t) Perl_setTHR(t)
#define YIELD Sleep(0)
#endif /* _WIN32THREAD_H */