ReactOS 0.4.16-dev-1163-gec5b142
__vcrt_init.c
Go to the documentation of this file.
1//
2// __vcrt_init.c
3//
4// Copyright (c) 2024 Timo Kreuzer
5//
6// Implementation of vcruntime initialization and termination functions.
7//
8// SPDX-License-Identifier: MIT
9//
10
11#include <internal_shared.h>
12
15void msvcrt_free_tls_mem(void);
17
19{
21
22 if (!msvcrt_init_tls())
23 return FALSE;
24
25 return TRUE;
26}
27
29{
30 if (!msvcrt_free_tls())
31 return FALSE;
32
33 return TRUE;
34}
35
37{
38 return TRUE;
39}
40
42{
43 // Not called by UCRT
44 return TRUE;
45}
46
48{
49 // Not called by UCRT
50 return TRUE;
51}
52
53// UCRT doesn't have a thread detach callback for the vcruntime TLS, because
54// the native vcruntime uses FlsAlloc and provides a cleanup callback there.
55// Since we don't have that, we use TLS callbacks.
57
58static
59VOID
62{
63 // For the last thread, only DLL_PROCESS_DETACH is called
66 {
68 }
69}
70
71_CRTALLOC(".CRT$XLD") PIMAGE_TLS_CALLBACK wine_tls_cleanup_ptr = wine_tls_cleanup_callback;
void msvcrt_init_exception(HINSTANCE hinstDLL)
static VOID WINAPI wine_tls_cleanup_callback(PVOID hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
Definition: __vcrt_init.c:61
void msvcrt_free_tls_mem(void)
Definition: tls.c:53
__vcrt_bool __cdecl __vcrt_thread_detach(void)
Definition: __vcrt_init.c:47
__vcrt_bool __cdecl __vcrt_thread_attach(void)
Definition: __vcrt_init.c:41
BOOL msvcrt_free_tls(void)
Definition: tls.c:21
__vcrt_bool __cdecl __vcrt_uninitialize(_In_ __vcrt_bool _Terminating)
Definition: __vcrt_init.c:28
__vcrt_bool __cdecl __vcrt_uninitialize_critical(void)
Definition: __vcrt_init.c:36
BOOL msvcrt_init_tls(void)
Definition: tls.c:9
const IMAGE_TLS_DIRECTORY * __p_tls_used
Definition: __vcrt_init.c:56
__vcrt_bool __cdecl __vcrt_initialize(void)
Definition: __vcrt_init.c:18
#define __cdecl
Definition: accygwin.h:79
static DWORD const fdwReason
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define DLL_THREAD_DETACH
Definition: compat.h:133
#define DLL_PROCESS_DETACH
Definition: compat.h:130
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
#define _CRTALLOC(x)
const IMAGE_TLS_DIRECTORY _tls_used
static IN DWORD IN LPVOID lpvReserved
#define _In_
Definition: no_sal2.h:158
VOID(NTAPI * PIMAGE_TLS_CALLBACK)(PVOID DllHandle, ULONG Reason, PVOID Reserved)
Definition: ntimage.h:531
_Bool __vcrt_bool
Definition: vcruntime.h:185
#define GetModuleHandle
Definition: winbase.h:3859
#define WINAPI
Definition: msvc.h:6