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 : NWTInfo.h |
12 |
* DESCRIPTION : Thread-local storage for Perl. |
13 |
* Author : SGP, HYAK |
14 |
* Date Created : January 2001. |
15 |
* Date Modified: July 2nd 2001. |
16 |
*/ |
17 |
|
18 |
|
19 |
|
20 |
#ifndef __NWTInfo_H__ |
21 |
#define __NWTInfo_H__ |
22 |
|
23 |
|
24 |
#include "win32ish.h" // For "BOOL", "TRUE" and "FALSE" |
25 |
|
26 |
typedef struct tagThreadInfo |
27 |
{ |
28 |
int tid; |
29 |
struct tagThreadInfo *next; |
30 |
BOOL m_dontTouchHashLists; |
31 |
void* m_allocList; |
32 |
}ThreadInfo; |
33 |
|
34 |
void fnInitializeThreadInfo(void); |
35 |
BOOL fnTerminateThreadInfo(void); |
36 |
|
37 |
ThreadInfo* fnAddThreadInfo(int tid); |
38 |
BOOL fnRemoveThreadInfo(int tid); |
39 |
ThreadInfo* fnGetThreadInfo(int tid); |
40 |
|
41 |
#ifdef __cplusplus |
42 |
//For storing and retrieving Watcom Hash list address |
43 |
extern "C" BOOL fnInsertHashListAddrs(void *addrs, BOOL dontTouchHashList); |
44 |
//Registering with the Thread table |
45 |
extern "C" BOOL fnRegisterWithThreadTable(void); |
46 |
extern "C" BOOL fnUnregisterWithThreadTable(void); |
47 |
#else |
48 |
//For storing and retrieving Watcom Hash list address |
49 |
BOOL fnInsertHashListAddrs(void *addrs, BOOL dontTouchHashList); |
50 |
//Registering with the Thread table |
51 |
BOOL fnRegisterWithThreadTable(void); |
52 |
BOOL fnUnregisterWithThreadTable(void); |
53 |
#endif |
54 |
|
55 |
BOOL fnGetHashListAddrs(void **addrs, BOOL *dontTouchHashList); |
56 |
|
57 |
//New TLS to set and get the thread contex - may be redundant, |
58 |
//or see if the above portion can be removed once this works properly |
59 |
typedef struct tagThreadCtx |
60 |
{ |
61 |
long tid; |
62 |
void *tInfo; |
63 |
struct tagThreadCtx *next; |
64 |
}ThreadContext; |
65 |
|
66 |
|
67 |
long fnInitializeThreadCtx(void); |
68 |
ThreadContext* fnAddThreadCtx(long lTLSIndex, void *t); |
69 |
BOOL fnRemoveThreadCtx(long lTLSIndex); |
70 |
void* fnGetThreadCtx(long lTLSIndex); |
71 |
|
72 |
#endif // __NWTInfo_H__ |
73 |
|