3 #ifndef __CRT_INTERNAL_TLS_H
4 #define __CRT_INTERNAL_TLS_H
7 #error DO NOT INCLUDE THIS HEADER DIRECTLY
17 #include <internal/wine/eh.h>
20 extern DWORD tls_index
;
22 struct __thread_data
{
26 unsigned long thread_doserrno
;
28 unsigned int random_seed
; /* seed for rand() */
29 char *strtok_next
; /* next ptr for strtok() */
30 wchar_t *wcstok_next
; /* next ptr for wcstok() */
31 unsigned char *mbstok_next
; /* next ptr for mbstok() */
32 char *strerror_buffer
; /* buffer for strerror */
33 wchar_t *wcserror_buffer
; /* buffer for wcserror */
34 char *tmpnam_buffer
; /* buffer for tmpname() */
35 wchar_t *wtmpnam_buffer
; /* buffer for wtmpname() */
37 char *asctime_buffer
; /* buffer for asctime */
38 wchar_t *wasctime_buffer
; /* buffer for wasctime */
39 struct tm
*time_buffer
; /* buffer for localtime/gmtime */
40 char *efcvt_buffer
; /* buffer for ecvt/fcvt */
43 EXCEPTION_POINTERS
*xcptinfo
;
45 struct MSVCRT_threadmbcinfostruct
*mbcinfo
;
46 struct MSVCRT_threadlocaleinfostruct
*locinfo
;
49 terminate_function terminate_handler
;
50 unexpected_function unexpected_handler
;
51 _se_translator_function se_translator
;
54 EXCEPTION_RECORD
*exc_record
;
58 typedef struct __thread_data thread_data_t
;
60 extern inline BOOL
msvcrt_init_tls(void);
61 extern inline BOOL
msvcrt_free_tls(void);
62 extern thread_data_t
*msvcrt_get_thread_data(void);
63 extern inline void msvcrt_free_tls_mem(void);
65 #define MSVCRT_ENABLE_PER_THREAD_LOCALE 1
66 #define MSVCRT_DISABLE_PER_THREAD_LOCALE 2
68 #endif /* __MSVCRT_INTERNAL_TLS_H */