mirror of
https://github.com/reactos/reactos.git
synced 2025-04-20 20:36:35 +00:00
Add stubs for the condition variable functions
svn path=/trunk/; revision=23844
This commit is contained in:
parent
26b82125e5
commit
87ab1c53a7
7 changed files with 182 additions and 0 deletions
|
@ -505,6 +505,7 @@ RtlInitUnicodeString@8
|
||||||
RtlInitUnicodeStringEx@8
|
RtlInitUnicodeStringEx@8
|
||||||
;RtlInitializeAtomPackage
|
;RtlInitializeAtomPackage
|
||||||
RtlInitializeBitMap@12
|
RtlInitializeBitMap@12
|
||||||
|
RtlInitializeConditionVariable@4
|
||||||
RtlInitializeContext@20
|
RtlInitializeContext@20
|
||||||
RtlInitializeCriticalSection@4
|
RtlInitializeCriticalSection@4
|
||||||
RtlInitializeCriticalSectionAndSpinCount@8
|
RtlInitializeCriticalSectionAndSpinCount@8
|
||||||
|
@ -650,6 +651,8 @@ RtlSetTimeZoneInformation@4
|
||||||
;RtlSetUserFlagsHeap
|
;RtlSetUserFlagsHeap
|
||||||
RtlSetUserValueHeap@16
|
RtlSetUserValueHeap@16
|
||||||
RtlSizeHeap@12
|
RtlSizeHeap@12
|
||||||
|
RtlSleepConditionVariableCS@12
|
||||||
|
RtlSleepConditionVariableSRW@16
|
||||||
RtlSplay@4
|
RtlSplay@4
|
||||||
;RtlStartRXact
|
;RtlStartRXact
|
||||||
RtlStringFromGUID@8
|
RtlStringFromGUID@8
|
||||||
|
@ -703,6 +706,8 @@ RtlValidateProcessHeaps@0
|
||||||
RtlValidateUnicodeString@8
|
RtlValidateUnicodeString@8
|
||||||
RtlVerifyVersionInfo@16
|
RtlVerifyVersionInfo@16
|
||||||
;RtlWalkHeap
|
;RtlWalkHeap
|
||||||
|
RtlWakeAllConditionVariable@4
|
||||||
|
RtlWakeConditionVariable@4
|
||||||
RtlWriteRegistryValue@24
|
RtlWriteRegistryValue@24
|
||||||
;RtlZeroHeap
|
;RtlZeroHeap
|
||||||
RtlZeroMemory@8
|
RtlZeroMemory@8
|
||||||
|
|
|
@ -586,6 +586,7 @@ HeapUsage@20
|
||||||
HeapValidate@12
|
HeapValidate@12
|
||||||
HeapWalk@8
|
HeapWalk@8
|
||||||
InitAtomTable@4
|
InitAtomTable@4
|
||||||
|
InitializeConditionVariable@4=NTDLL.RtlInitializeConditionVariable
|
||||||
InitializeCriticalSection@4
|
InitializeCriticalSection@4
|
||||||
InitializeCriticalSectionAndSpinCount@8
|
InitializeCriticalSectionAndSpinCount@8
|
||||||
InitializeSListHead@4=NTDLL.RtlInitializeSListHead
|
InitializeSListHead@4=NTDLL.RtlInitializeSListHead
|
||||||
|
@ -900,6 +901,8 @@ ShowConsoleCursor@8
|
||||||
SignalObjectAndWait@16
|
SignalObjectAndWait@16
|
||||||
SizeofResource@8
|
SizeofResource@8
|
||||||
Sleep@4
|
Sleep@4
|
||||||
|
SleepConditionVariableCS@12
|
||||||
|
SleepConditionVariableSRW@16
|
||||||
SleepEx@8
|
SleepEx@8
|
||||||
SuspendThread@4
|
SuspendThread@4
|
||||||
SwitchToFiber@4
|
SwitchToFiber@4
|
||||||
|
@ -954,6 +957,8 @@ VirtualProtectEx@20
|
||||||
VirtualQuery@12
|
VirtualQuery@12
|
||||||
VirtualQueryEx@16
|
VirtualQueryEx@16
|
||||||
VirtualUnlock@8
|
VirtualUnlock@8
|
||||||
|
WakeAllConditionVariable@4=NTDLL.RtlWakeAllConditionVariable
|
||||||
|
WakeConditionVariable@4=NTDLL.RtlWakeConditionVariable
|
||||||
WaitCommEvent@12
|
WaitCommEvent@12
|
||||||
WaitForDebugEvent@8
|
WaitForDebugEvent@8
|
||||||
WaitForMultipleObjects@16
|
WaitForMultipleObjects@16
|
||||||
|
|
|
@ -94,6 +94,7 @@
|
||||||
<file>lstring.c</file>
|
<file>lstring.c</file>
|
||||||
</directory>
|
</directory>
|
||||||
<directory name="synch">
|
<directory name="synch">
|
||||||
|
<file>condvar.c</file>
|
||||||
<file>critical.c</file>
|
<file>critical.c</file>
|
||||||
<file>event.c</file>
|
<file>event.c</file>
|
||||||
<file>mutex.c</file>
|
<file>mutex.c</file>
|
||||||
|
|
97
reactos/dll/win32/kernel32/synch/condvar.c
Normal file
97
reactos/dll/win32/kernel32/synch/condvar.c
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
/* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS system libraries
|
||||||
|
* PURPOSE: Condition Variable functions
|
||||||
|
* PROGRAMMER: Thomas Weidenmueller <w3seek@reactos.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* File contains Vista Semantics */
|
||||||
|
#undef _WIN32_WINNT
|
||||||
|
#define _WIN32_WINNT 0x0600
|
||||||
|
|
||||||
|
#include <k32.h>
|
||||||
|
|
||||||
|
#define NDEBUG
|
||||||
|
#include "../include/debug.h"
|
||||||
|
|
||||||
|
/* FIXME: Move these RTL declarations to the NDK */
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
RtlSleepConditionVariableCS(IN OUT PRTL_CONDITION_VARIABLE ConditionVariable,
|
||||||
|
IN OUT PRTL_CRITICAL_SECTION CriticalSection,
|
||||||
|
IN PLARGE_INTEGER TimeOut OPTIONAL);
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
RtlSleepConditionVariableSRW(IN OUT PRTL_CONDITION_VARIABLE ConditionVariable,
|
||||||
|
IN OUT PRTL_SRWLOCK SRWLock,
|
||||||
|
IN PLARGE_INTEGER TimeOut OPTIONAL,
|
||||||
|
IN ULONG Flags);
|
||||||
|
|
||||||
|
/* PUBLIC FUNCTIONS ***********************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
SleepConditionVariableCS(IN OUT PCONDITION_VARIABLE ConditionVariable,
|
||||||
|
IN OUT PCRITICAL_SECTION CriticalSection,
|
||||||
|
IN DWORD dwMilliseconds)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
LARGE_INTEGER TimeOut;
|
||||||
|
PLARGE_INTEGER TimeOutPtr = NULL;
|
||||||
|
|
||||||
|
if (dwMilliseconds != INFINITE)
|
||||||
|
{
|
||||||
|
TimeOut.QuadPart = UInt32x32To64(-10000, dwMilliseconds);
|
||||||
|
TimeOutPtr = &TimeOut;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = RtlSleepConditionVariableCS((PRTL_CONDITION_VARIABLE)ConditionVariable,
|
||||||
|
(PRTL_CRITICAL_SECTION)CriticalSection,
|
||||||
|
TimeOutPtr);
|
||||||
|
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastErrorByStatus(Status);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
SleepConditionVariableSRW(IN OUT PCONDITION_VARIABLE ConditionVariable,
|
||||||
|
IN OUT PSRWLOCK SRWLock,
|
||||||
|
IN DWORD dwMilliseconds,
|
||||||
|
IN ULONG Flags)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
LARGE_INTEGER TimeOut;
|
||||||
|
PLARGE_INTEGER TimeOutPtr = NULL;
|
||||||
|
|
||||||
|
if (dwMilliseconds != INFINITE)
|
||||||
|
{
|
||||||
|
TimeOut.QuadPart = UInt32x32To64(-10000, dwMilliseconds);
|
||||||
|
TimeOutPtr = &TimeOut;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = RtlSleepConditionVariableSRW((PRTL_CONDITION_VARIABLE)ConditionVariable,
|
||||||
|
(PRTL_SRWLOCK)SRWLock,
|
||||||
|
TimeOutPtr,
|
||||||
|
Flags);
|
||||||
|
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastErrorByStatus(Status);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
|
@ -1058,6 +1058,7 @@ typedef struct _JOB_SET_ARRAY {
|
||||||
} JOB_SET_ARRAY, *PJOB_SET_ARRAY;
|
} JOB_SET_ARRAY, *PJOB_SET_ARRAY;
|
||||||
#if (_WIN32_WINNT >= 0x0600)
|
#if (_WIN32_WINNT >= 0x0600)
|
||||||
typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK;
|
typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK;
|
||||||
|
typedef RTL_CONDITION_VARIABLE CONDITION_VARIABLE, *PCONDITION_VARIABLE;
|
||||||
#endif
|
#endif
|
||||||
typedef DWORD(WINAPI *LPPROGRESS_ROUTINE)(LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,DWORD,DWORD,HANDLE,HANDLE,LPVOID);
|
typedef DWORD(WINAPI *LPPROGRESS_ROUTINE)(LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,DWORD,DWORD,HANDLE,HANDLE,LPVOID);
|
||||||
typedef void(WINAPI *LPFIBER_START_ROUTINE)(PVOID);
|
typedef void(WINAPI *LPFIBER_START_ROUTINE)(PVOID);
|
||||||
|
@ -1662,6 +1663,9 @@ BOOL WINAPI ImpersonateNamedPipeClient(HANDLE);
|
||||||
BOOL WINAPI ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
|
BOOL WINAPI ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
|
||||||
BOOL WINAPI InitAtomTable(DWORD);
|
BOOL WINAPI InitAtomTable(DWORD);
|
||||||
BOOL WINAPI InitializeAcl(PACL,DWORD,DWORD);
|
BOOL WINAPI InitializeAcl(PACL,DWORD,DWORD);
|
||||||
|
#if (_WIN32_WINNT >= 0x0600)
|
||||||
|
VOID WINAPI InitializeConditionVariable(PCONDITION_VARIABLE);
|
||||||
|
#endif
|
||||||
VOID WINAPI InitializeCriticalSection(LPCRITICAL_SECTION);
|
VOID WINAPI InitializeCriticalSection(LPCRITICAL_SECTION);
|
||||||
BOOL WINAPI InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION,DWORD);
|
BOOL WINAPI InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION,DWORD);
|
||||||
DWORD WINAPI SetCriticalSectionSpinCount(LPCRITICAL_SECTION,DWORD);
|
DWORD WINAPI SetCriticalSectionSpinCount(LPCRITICAL_SECTION,DWORD);
|
||||||
|
@ -1978,6 +1982,10 @@ BOOL WINAPI SetWaitableTimer(HANDLE,const LARGE_INTEGER*,LONG,PTIMERAPCROUTINE,P
|
||||||
DWORD WINAPI SignalObjectAndWait(HANDLE,HANDLE,DWORD,BOOL);
|
DWORD WINAPI SignalObjectAndWait(HANDLE,HANDLE,DWORD,BOOL);
|
||||||
DWORD WINAPI SizeofResource(HINSTANCE,HRSRC);
|
DWORD WINAPI SizeofResource(HINSTANCE,HRSRC);
|
||||||
void WINAPI Sleep(DWORD);
|
void WINAPI Sleep(DWORD);
|
||||||
|
#if (_WIN32_WINNT >= 0x0600)
|
||||||
|
BOOL WINAPI SleepConditionVariableCS(PCONDITION_VARIABLE,PCRITICAL_SECTION,DWORD);
|
||||||
|
BOOL WINAPI SleepConditionVariableSRW(PCONDITION_VARIABLE,PSRWLOCK,DWORD,ULONG);
|
||||||
|
#endif
|
||||||
DWORD WINAPI SleepEx(DWORD,BOOL);
|
DWORD WINAPI SleepEx(DWORD,BOOL);
|
||||||
DWORD WINAPI SuspendThread(HANDLE);
|
DWORD WINAPI SuspendThread(HANDLE);
|
||||||
void WINAPI SwitchToFiber(PVOID);
|
void WINAPI SwitchToFiber(PVOID);
|
||||||
|
@ -2024,6 +2032,10 @@ DWORD WINAPI WaitForSingleObject(HANDLE,DWORD);
|
||||||
DWORD WINAPI WaitForSingleObjectEx(HANDLE,DWORD,BOOL);
|
DWORD WINAPI WaitForSingleObjectEx(HANDLE,DWORD,BOOL);
|
||||||
BOOL WINAPI WaitNamedPipeA(LPCSTR,DWORD);
|
BOOL WINAPI WaitNamedPipeA(LPCSTR,DWORD);
|
||||||
BOOL WINAPI WaitNamedPipeW(LPCWSTR,DWORD);
|
BOOL WINAPI WaitNamedPipeW(LPCWSTR,DWORD);
|
||||||
|
#if (_WIN32_WINNT >= 0x0600)
|
||||||
|
VOID WINAPI WakeConditionVariable(PCONDITION_VARIABLE);
|
||||||
|
VOID WINAPI WakeAllConditionVariable(PCONDITION_VARIABLE);
|
||||||
|
#endif
|
||||||
BOOL WINAPI WinLoadTrustProvider(GUID*);
|
BOOL WINAPI WinLoadTrustProvider(GUID*);
|
||||||
BOOL WINAPI WriteFile(HANDLE,PCVOID,DWORD,PDWORD,LPOVERLAPPED);
|
BOOL WINAPI WriteFile(HANDLE,PCVOID,DWORD,PDWORD,LPOVERLAPPED);
|
||||||
BOOL WINAPI WriteFileEx(HANDLE,PCVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
|
BOOL WINAPI WriteFileEx(HANDLE,PCVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
|
||||||
|
|
61
reactos/lib/rtl/condvar.c
Normal file
61
reactos/lib/rtl/condvar.c
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
/*
|
||||||
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS system libraries
|
||||||
|
* PURPOSE: Condition Variable Routines
|
||||||
|
* PROGRAMMER: Thomas Weidenmueller <w3seek@reactos.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
|
#include <rtl.h>
|
||||||
|
|
||||||
|
#define NDEBUG
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
RtlInitializeConditionVariable(OUT PRTL_CONDITION_VARIABLE ConditionVariable)
|
||||||
|
{
|
||||||
|
ConditionVariable->Ptr = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
RtlWakeConditionVariable(IN OUT PRTL_CONDITION_VARIABLE ConditionVariable)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
RtlWakeAllConditionVariable(IN OUT PRTL_CONDITION_VARIABLE ConditionVariable)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
RtlSleepConditionVariableCS(IN OUT PRTL_CONDITION_VARIABLE ConditionVariable,
|
||||||
|
IN OUT PRTL_CRITICAL_SECTION CriticalSection,
|
||||||
|
IN PLARGE_INTEGER TimeOut OPTIONAL)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
RtlSleepConditionVariableSRW(IN OUT PRTL_CONDITION_VARIABLE ConditionVariable,
|
||||||
|
IN OUT PRTL_SRWLOCK SRWLock,
|
||||||
|
IN PLARGE_INTEGER TimeOut OPTIONAL,
|
||||||
|
IN ULONG Flags)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
|
@ -47,6 +47,7 @@
|
||||||
<file>bitmap.c</file>
|
<file>bitmap.c</file>
|
||||||
<file>bootdata.c</file>
|
<file>bootdata.c</file>
|
||||||
<file>compress.c</file>
|
<file>compress.c</file>
|
||||||
|
<file>condvar.c</file>
|
||||||
<file>crc32.c</file>
|
<file>crc32.c</file>
|
||||||
<file>critical.c</file>
|
<file>critical.c</file>
|
||||||
<file>dbgbuffer.c</file>
|
<file>dbgbuffer.c</file>
|
||||||
|
|
Loading…
Reference in a new issue