diff --git a/dlls/kernel32/fiber.c b/dlls/kernel32/fiber.c index 24ea351a8819c7a1274539ea005f6b25b08eeee8..e95ef865a7ab810c09a13f4e73f1d14082e1a043 100644 --- a/dlls/kernel32/fiber.c +++ b/dlls/kernel32/fiber.c @@ -34,6 +34,9 @@ #include "winternl.h" #include "wine/exception.h" #include "wine/library.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(fiber); struct fiber_data { @@ -201,3 +204,48 @@ void WINAPI SwitchToFiber( LPVOID fiber ) siglongjmp( new_fiber->jmpbuf, 1 ); } } + +/*********************************************************************** + * FlsAlloc (KERNEL32.@) + */ +DWORD WINAPI FlsAlloc( PFLS_CALLBACK_FUNCTION callback ) +{ + FIXME( "%p: stub!\n", callback ); + + SetLastError( ERROR_CALL_NOT_IMPLEMENTED ); + return FLS_OUT_OF_INDEXES; +} + +/*********************************************************************** + * FlsFree (KERNEL32.@) + */ +BOOL WINAPI FlsFree( DWORD index ) +{ + FIXME( "%x: stub!\n", index ); + + SetLastError( ERROR_CALL_NOT_IMPLEMENTED ); + return FALSE; +} + +/*********************************************************************** + * FlsGetValue (KERNEL32.@) + */ +PVOID WINAPI FlsGetValue( DWORD index ) +{ + FIXME( "%x: stub!\n", index ); + + SetLastError( ERROR_CALL_NOT_IMPLEMENTED ); + return NULL; +} + +/*********************************************************************** + * FlsSetValue (KERNEL32.@) + */ +BOOL WINAPI FlsSetValue( DWORD index, PVOID data ) +{ + + FIXME( "%x, %p: stub!\n", index, data ); + + SetLastError( ERROR_CALL_NOT_IMPLEMENTED ); + return FALSE; +} diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index 6bc867f4ffcadefaedca94a4ad9b039aaf7f5794..112efbf03a81ad9c1b118ae47c0b6aeec2f452e1 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -388,6 +388,10 @@ @ stdcall FindResourceW(long wstr wstr) @ stdcall FindVolumeClose(ptr) @ stdcall FindVolumeMountPointClose(ptr) +@ stdcall FlsAlloc(ptr) +@ stdcall FlsFree(long) +@ stdcall FlsGetValue(long) +@ stdcall FlsSetValue(long ptr) @ stdcall FlushConsoleInputBuffer(long) @ stdcall FlushFileBuffers(long) @ stdcall FlushInstructionCache(long long long) diff --git a/include/winbase.h b/include/winbase.h index 0011c53973cd931a0284c329a7375b46b2119384..e2ee515ae197347b871df63e4b79f1f11b9d0870 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -315,6 +315,7 @@ typedef struct _PROCESS_HEAP_ENTRY #define LOCKFILE_FAIL_IMMEDIATELY 1 #define LOCKFILE_EXCLUSIVE_LOCK 2 +#define FLS_OUT_OF_INDEXES ((DWORD)~0UL) #define TLS_OUT_OF_INDEXES ((DWORD)~0UL) #define SHUTDOWN_NORETRY 1 @@ -1499,6 +1500,10 @@ WINBASEAPI BOOL WINAPI FindNextVolumeMountPointW(HANDLE,LPWSTR,DWORD); #define FindNextVolumeMountPoint WINELIB_NAME_AW(FindNextVolumeMountPoint) WINBASEAPI BOOL WINAPI FindVolumeClose(HANDLE); WINBASEAPI BOOL WINAPI FindVolumeMountPointClose(HANDLE); +WINBASEAPI DWORD WINAPI FlsAlloc(PFLS_CALLBACK_FUNCTION); +WINBASEAPI BOOL WINAPI FlsFree(DWORD); +WINBASEAPI PVOID WINAPI FlsGetValue(DWORD); +WINBASEAPI BOOL WINAPI FlsSetValue(DWORD,PVOID); WINBASEAPI BOOL WINAPI FlushFileBuffers(HANDLE); WINBASEAPI BOOL WINAPI FlushInstructionCache(HANDLE,LPCVOID,SIZE_T); WINBASEAPI BOOL WINAPI FlushViewOfFile(LPCVOID,SIZE_T); diff --git a/include/winnt.h b/include/winnt.h index 4489e93e188d4be955ff2f592d75af020e26be2c..cfd1cac056717d2786550fc7b9bab7f4dd2199aa 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -4699,6 +4699,7 @@ typedef struct _RTL_CRITICAL_SECTION { } RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION; typedef VOID (NTAPI * WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN ); +typedef VOID (NTAPI * PFLS_CALLBACK_FUNCTION) ( PVOID ); #include <pshpack8.h> typedef struct _IO_COUNTERS {