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  = &params;
     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