Netware patches from Ananth Kesari.
[p5sagit/p5-mst-13.2.git] / NetWare / nwtinfo.h
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                 :       January 2001.
15  *
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 BOOL fnRegisterWithThreadTable(void);
37 BOOL fnUnregisterWithThreadTable(void);
38
39 ThreadInfo* fnAddThreadInfo(int tid);
40 BOOL fnRemoveThreadInfo(int tid);
41 ThreadInfo* fnGetThreadInfo(int tid);
42
43 //For storing and retrieving Watcom Hash list address
44 #ifdef __cplusplus
45         extern "C" BOOL fnInsertHashListAddrs(void *addrs, BOOL dontTouchHashList);
46 #else
47         BOOL fnInsertHashListAddrs(void *addrs, BOOL dontTouchHashList);
48 #endif
49 BOOL fnGetHashListAddrs(void **addrs, BOOL *dontTouchHashList);
50
51 //New TLS to set and get the thread contex - may be redundant,
52 //or see if the above portion can be removed once this works properly
53 typedef struct tagThreadCtx
54 {
55         long tid;
56         void *tInfo;
57         struct tagThreadCtx *next;
58 }ThreadContext;
59
60
61 long fnInitializeThreadCtx(void);
62 ThreadContext* fnAddThreadCtx(long lTLSIndex, void *t);
63 BOOL fnRemoveThreadCtx(long lTLSIndex);
64 void* fnGetThreadCtx(long lTLSIndex);
65
66 #endif  // __NWTInfo_H__
67