3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS system libraries
5 * FILE: lib/kernel32/thread/fls.c
6 * PURPOSE: Fiber local storage functions
7 * PROGRAMMER: KJK::Hyperion <noog@libero.it>
10 * 28/05/2003 - created. Stubs only
16 #include <kernel32/kernel32.h>
21 DWORD WINAPI FlsAlloc(PFLS_CALLBACK_FUNCTION lpCallback)
26 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
27 return FLS_OUT_OF_INDEXES;
34 BOOL WINAPI FlsFree(DWORD dwFlsIndex)
39 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
47 PVOID WINAPI FlsGetValue(DWORD dwFlsIndex)
52 if(dwFlsIndex >= 128) goto l_InvalidParam;
54 ppFlsSlots = NtCurrentTeb()->FlsSlots;
56 if(ppFlsSlots == NULL) goto l_InvalidParam;
59 pRetVal = ppFlsSlots[dwFlsIndex + 2];
64 SetLastError(ERROR_INVALID_PARAMETER);
72 BOOL WINAPI FlsSetValue(DWORD dwFlsIndex, PVOID lpFlsData)
75 TEB * pTeb = NtCurrentTeb();
77 if(dwFlsIndex >= 128) goto l_InvalidParam;
79 ppFlsSlots = pTeb->FlsSlots;
81 if(ppFlsSlots == NULL)
83 PEB * pPeb = pTeb->Peb;
85 ppFlsSlots = RtlAllocateHeap
89 (128 + 2) * sizeof(PVOID)
92 if(ppFlsSlots == NULL) goto l_OutOfMemory;
94 pTeb->FlsSlots = ppFlsSlots;
98 /* TODO: initialization */
103 ppFlsSlots[dwFlsIndex + 2] = lpFlsData;
108 SetLastError(ERROR_NOT_ENOUGH_MEMORY);
112 SetLastError(ERROR_INVALID_PARAMETER);