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 74