Alexandre Julliard : ntdll: Added definitions and structures for fiber local storage.
Alexandre Julliard
julliard at winehq.org
Fri Feb 29 14:20:35 CST 2008
Module: wine
Branch: master
Commit: 6d6e9a42b13c827d1cc795c3b66da8c032374fff
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6d6e9a42b13c827d1cc795c3b66da8c032374fff
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri Feb 29 19:55:34 2008 +0100
ntdll: Added definitions and structures for fiber local storage.
---
dlls/ntdll/server.c | 2 ++
dlls/ntdll/thread.c | 4 ++++
include/winternl.h | 22 ++++++++++++++++++++++
3 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
index 1eebef1..0211394 100644
--- a/dlls/ntdll/server.c
+++ b/dlls/ntdll/server.c
@@ -146,6 +146,8 @@ void server_exit_thread( int status )
RtlAcquirePebLock();
RemoveEntryList( &NtCurrentTeb()->TlsLinks );
RtlReleasePebLock();
+ RtlFreeHeap( GetProcessHeap(), 0, NtCurrentTeb()->FlsSlots );
+ RtlFreeHeap( GetProcessHeap(), 0, NtCurrentTeb()->TlsExpansionSlots );
info.stack_base = NtCurrentTeb()->DeallocationStack;
info.teb_base = NtCurrentTeb();
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 55cedc7..ff00f2e 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -63,6 +63,7 @@ static RTL_USER_PROCESS_PARAMETERS params; /* default parameters if no parent *
static WCHAR current_dir[MAX_NT_PATH_LENGTH];
static RTL_BITMAP tls_bitmap;
static RTL_BITMAP tls_expansion_bitmap;
+static RTL_BITMAP fls_bitmap;
static LIST_ENTRY tls_links;
static size_t sigstack_total_size;
static ULONG sigstack_zero_bits;
@@ -255,6 +256,7 @@ HANDLE thread_init(void)
peb->ProcessParameters = ¶ms;
peb->TlsBitmap = &tls_bitmap;
peb->TlsExpansionBitmap = &tls_expansion_bitmap;
+ peb->FlsBitmap = &fls_bitmap;
peb->LdrData = &ldr;
params.CurrentDirectory.DosPath.Buffer = current_dir;
params.CurrentDirectory.DosPath.MaximumLength = sizeof(current_dir);
@@ -262,6 +264,8 @@ HANDLE thread_init(void)
RtlInitializeBitMap( &tls_bitmap, peb->TlsBitmapBits, sizeof(peb->TlsBitmapBits) * 8 );
RtlInitializeBitMap( &tls_expansion_bitmap, peb->TlsExpansionBitmapBits,
sizeof(peb->TlsExpansionBitmapBits) * 8 );
+ RtlInitializeBitMap( &fls_bitmap, peb->FlsBitmapBits, sizeof(peb->FlsBitmapBits) * 8 );
+ InitializeListHead( &peb->FlsListHead );
InitializeListHead( &ldr.InLoadOrderModuleList );
InitializeListHead( &ldr.InMemoryOrderModuleList );
InitializeListHead( &ldr.InInitializationOrderModuleList );
diff --git a/include/winternl.h b/include/winternl.h
index 2ce9b2b..aa97934 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -275,6 +275,20 @@ typedef struct _PEB
PRTL_BITMAP TlsExpansionBitmap; /* 150 */
ULONG TlsExpansionBitmapBits[32]; /* 154 */
ULONG SessionId; /* 1d4 */
+ ULARGE_INTEGER AppCompatFlags; /* 1d8 */
+ ULARGE_INTEGER AppCompatFlagsUser; /* 1e0 */
+ PVOID ShimData; /* 1e8 */
+ PVOID AppCompatInfo; /* 1ec */
+ UNICODE_STRING CSDVersion; /* 1f0 */
+ PVOID ActivationContextData; /* 1f8 */
+ PVOID ProcessAssemblyStorageMap; /* 1fc */
+ PVOID SystemDefaultActivationData; /* 200 */
+ PVOID SystemAssemblyStorageMap; /* 204 */
+ ULONG MinimumStackCommit; /* 208 */
+ PVOID *FlsCallback; /* 20c */
+ LIST_ENTRY FlsListHead; /* 210 */
+ PRTL_BITMAP FlsBitmap; /* 218 */
+ ULONG FlsBitmapBits[4]; /* 21c */
} PEB, *PPEB;
@@ -343,6 +357,14 @@ typedef struct _TEB
ULONG WaitingOnLoaderLock; /* f84 */
PVOID Reserved5[3]; /* f88 */
PVOID *TlsExpansionSlots; /* f94 */
+ ULONG ImpersonationLocale; /* f98 */
+ ULONG IsImpersonating; /* f9c */
+ PVOID NlsCache; /* fa0 */
+ PVOID ShimData; /* fa4 */
+ ULONG HeapVirtualAffinity; /* fa8 */
+ PVOID CurrentTransactionHandle; /* fac */
+ PVOID ActiveFrame; /* fb0 */
+ PVOID *FlsSlots; /* fb4 */
} TEB, *PTEB;
# endif /* WINE_TEB_DEFINED */
#endif /* WINE_NO_TEB */
More information about the wine-cvs
mailing list