Final move from meta-3.0 to meta-3.5
[p5sagit/p5-mst-13.2.git] / win32 / win32thread.c
1 #include "EXTERN.h"
2 #include "perl.h"
3
4 #ifdef USE_DECLSPEC_THREAD
5 __declspec(thread) void *PL_current_context = NULL;
6 #endif
7
8 void
9 Perl_set_context(void *t)
10 {
11 #if defined(USE_ITHREADS)
12 #  ifdef USE_DECLSPEC_THREAD
13     Perl_current_context = t;
14 #  else
15     DWORD err = GetLastError();
16     TlsSetValue(PL_thr_key,t);
17     SetLastError(err);
18 #  endif
19 #endif
20 }
21
22 void *
23 Perl_get_context(void)
24 {
25 #if defined(USE_ITHREADS)
26 #  ifdef USE_DECLSPEC_THREAD
27     return Perl_current_context;
28 #  else
29     DWORD err = GetLastError();
30     void *result = TlsGetValue(PL_thr_key);
31     SetLastError(err);
32     return result;
33 #  endif
34 #else
35     return NULL;
36 #endif
37 }