Chip noticed that the intended optionality of the 'IV' was
[p5sagit/p5-mst-13.2.git] / NetWare / nw5thread.c
CommitLineData
2986a63f 1
2/*
3 * Copyright © 2001 Novell, Inc. All Rights Reserved.
4 *
5 * You may distribute under the terms of either the GNU General Public
6 * License or the Artistic License, as specified in the README file.
7 *
8 */
9
10/*
11 * FILENAME : nw5thread.c
12 * DESCRIPTION : Thread related functions.
13 * Author : SGP
14 * Date : January 2001.
15 *
16 */
17
18
19
20#include "EXTERN.h"
21#include "perl.h"
22
2986a63f 23//For Thread Local Storage
24#include "win32ish.h" // For "BOOL", "TRUE" and "FALSE"
25#include "nwtinfo.h"
26
27#ifdef USE_DECLSPEC_THREAD
28__declspec(thread) void *PL_current_context = NULL;
29#endif
30
31
32void
33Perl_set_context(void *t)
34{
3db8f154 35#if defined(USE_ITHREADS)
2986a63f 36# ifdef USE_DECLSPEC_THREAD
37 Perl_current_context = t;
38# else
39 fnAddThreadCtx(PL_thr_key, t);
40# endif
41#endif
42}
43
44
45void *
46Perl_get_context(void)
47{
3db8f154 48#if defined(USE_ITHREADS)
2986a63f 49# ifdef USE_DECLSPEC_THREAD
50 return Perl_current_context;
51# else
52 return(fnGetThreadCtx(PL_thr_key));
53# endif
54#else
55 return NULL;
56#endif
57}
58
59
60//To Remove the Thread Context stored during Perl_set_context
61BOOL
62Remove_Thread_Ctx(void)
63{
3db8f154 64#if defined(USE_ITHREADS)
2986a63f 65# ifdef USE_DECLSPEC_THREAD
66 return TRUE;
67# else
68 return(fnRemoveThreadCtx(PL_thr_key));
69# endif
70# else
71 return TRUE;
72#endif
73}
74
75
76//PL_thr_key - Not very sure if this is global or per thread. When multiple scripts
77//run simultaneously on NetWare, this will give problems. Hence in nwtinfo.c, the
78//current thread id is used as the TLS index & PL_thr_key is not used.
79//This has to be checked???? - sgp
80