1 /* $Id: fls.c,v 1.3 2003/07/10 18:50:51 chorns Exp $
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
);