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
23 FlsAlloc(PFLS_CALLBACK_FUNCTION lpCallback
)
28 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
29 return FLS_OUT_OF_INDEXES
;
38 FlsFree(DWORD dwFlsIndex
)
43 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
53 FlsGetValue(DWORD dwFlsIndex
)
58 if(dwFlsIndex
>= 128) goto l_InvalidParam
;
60 ppFlsSlots
= NtCurrentTeb()->FlsData
;
62 if(ppFlsSlots
== NULL
) goto l_InvalidParam
;
65 pRetVal
= ppFlsSlots
[dwFlsIndex
+ 2];
70 SetLastError(ERROR_INVALID_PARAMETER
);
80 FlsSetValue(DWORD dwFlsIndex
, PVOID lpFlsData
)
83 TEB
*pTeb
= NtCurrentTeb();
85 if(dwFlsIndex
>= 128) goto l_InvalidParam
;
87 ppFlsSlots
= pTeb
->FlsData
;
89 if (ppFlsSlots
== NULL
)
91 PEB
*pPeb
= pTeb
->ProcessEnvironmentBlock
;
93 ppFlsSlots
= RtlAllocateHeap(pPeb
->ProcessHeap
,
95 (128 + 2) * sizeof(PVOID
));
96 if(ppFlsSlots
== NULL
) goto l_OutOfMemory
;
98 pTeb
->FlsData
= ppFlsSlots
;
102 /* TODO: initialization */
107 ppFlsSlots
[dwFlsIndex
+ 2] = lpFlsData
;
112 SetLastError(ERROR_NOT_ENOUGH_MEMORY
);
116 SetLastError(ERROR_INVALID_PARAMETER
);