ReactOS 0.4.16-dev-2528-g7139e57
sync_hacks.c
Go to the documentation of this file.
1/*
2 * This file exists due to some apps (e.g) nfsd.exe not suporting
3 * UNICODE This provides all the needed ANSI NT6 support while still allowing it to build on
4 * NT5.x builds.
5 */
6#define _KERNEL32_
7
8/* PSDK/NDK Headers */
9#define WIN32_NO_STATUS
10#include <windef.h>
11#include <winbase.h>
12
13/* Redefine NTDDI_VERSION to 2K3 SP1 to get correct NDK definitions */
14#undef NTDDI_VERSION
15#define NTDDI_VERSION NTDDI_WS03SP1
16
17#define NTOS_MODE_USER
18#include <ndk/iofuncs.h>
19#include <ndk/kefuncs.h>
20#include <ndk/obfuncs.h>
21#include <ndk/psfuncs.h>
22#include <ndk/rtlfuncs.h>
23
24#define NDEBUG
25#include <debug.h>
26
27VOID
30{
32}
33
34VOID
37{
39}
40
41VOID
43InitializeConditionVariable(PCONDITION_VARIABLE ConditionVariable)
44{
46}
47
48VOID
51{
53}
54
55VOID
58{
60}
61
62VOID
65{
67}
68
72{
73 if (Timeout == INFINITE) return NULL;
74 Time->QuadPart = (ULONGLONG)Timeout * -10000;
75 return Time;
76}
77
78BOOL
81{
84
87 {
89 return FALSE;
90 }
91 return TRUE;
92}
93
94BOOL
96SleepConditionVariableSRW(PCONDITION_VARIABLE ConditionVariable, PSRWLOCK Lock, DWORD Timeout, ULONG Flags)
97{
100
103 {
105 return FALSE;
106 }
107 return TRUE;
108}
109
110VOID
111WINAPI
112WakeAllConditionVariable(PCONDITION_VARIABLE ConditionVariable)
113{
115}
116
117VOID
118WINAPI
119WakeConditionVariable(PCONDITION_VARIABLE ConditionVariable)
120{
122}
123
124
125/*
126* @implemented
127*/
129 IN DWORD dwSpinCount,
130 IN DWORD flags)
131{
133
134 /* FIXME: Flags ignored */
135
136 /* Initialize the critical section */
138 (PRTL_CRITICAL_SECTION)lpCriticalSection,
139 dwSpinCount);
140 if (!NT_SUCCESS(Status))
141 {
142 /* Set failure code */
144 return FALSE;
145 }
146
147 /* Success */
148 return TRUE;
149}
150
152WINAPI
154{
155 ULARGE_INTEGER TickCount;
156
157 while (TRUE)
158 {
159 TickCount.HighPart = (ULONG)SharedUserData->TickCount.High1Time;
160 TickCount.LowPart = SharedUserData->TickCount.LowPart;
161
162 if (TickCount.HighPart == (ULONG)SharedUserData->TickCount.High2Time) break;
163
165 }
166
167 return (UInt32x32To64(TickCount.LowPart, SharedUserData->TickCountMultiplier) >> 24) +
168 (UInt32x32To64(TickCount.HighPart, SharedUserData->TickCountMultiplier) << 8);
169}
LONG NTSTATUS
Definition: precomp.h:26
#define STATUS_TIMEOUT
Definition: d3dkmdt.h:49
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define SetLastError(x)
Definition: compat.h:752
ULONGLONG WINAPI DECLSPEC_HOTPATCH GetTickCount64(void)
Definition: sync.c:192
#define INFINITE
Definition: serial.h:102
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
Status
Definition: gdiplustypes.h:25
GLbitfield flags
Definition: glext.h:7161
#define UInt32x32To64(a, b)
Definition: intsafe.h:252
CRITICAL_SECTION CriticalSection
Definition: iprtprio.c:40
if(dx< 0)
Definition: linetemp.h:194
static PSRWLOCK
Definition: sync.c:47
static PLARGE_INTEGER Time
Definition: time.c:105
NTSYSAPI VOID NTAPI RtlInitializeConditionVariable(_Out_ PRTL_CONDITION_VARIABLE ConditionVariable)
NTSYSAPI VOID NTAPI RtlWakeAllConditionVariable(_Inout_ PRTL_CONDITION_VARIABLE ConditionVariable)
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSectionAndSpinCount(_In_ PRTL_CRITICAL_SECTION CriticalSection, _In_ ULONG SpinCount)
NTSYSAPI NTSTATUS NTAPI RtlSleepConditionVariableCS(_Inout_ PRTL_CONDITION_VARIABLE ConditionVariable, _Inout_ PRTL_CRITICAL_SECTION CriticalSection, _In_opt_ PLARGE_INTEGER TimeOut)
VOID NTAPI RtlReleaseSRWLockExclusive(IN OUT PRTL_SRWLOCK SRWLock)
Definition: srw.c:710
NTSYSAPI VOID NTAPI RtlWakeConditionVariable(_Inout_ PRTL_CONDITION_VARIABLE ConditionVariable)
VOID NTAPI RtlInitializeSRWLock(OUT PRTL_SRWLOCK SRWLock)
Definition: srw.c:317
VOID NTAPI RtlAcquireSRWLockExclusive(IN OUT PRTL_SRWLOCK SRWLock)
Definition: srw.c:591
NTSYSAPI NTSTATUS NTAPI RtlSleepConditionVariableSRW(_Inout_ PRTL_CONDITION_VARIABLE ConditionVariable, _Inout_ PRTL_SRWLOCK SRWLock, _In_opt_ PLARGE_INTEGER TimeOut, _In_ ULONG Flags)
VOID NTAPI RtlReleaseSRWLockShared(IN OUT PRTL_SRWLOCK SRWLock)
Definition: srw.c:526
VOID NTAPI RtlAcquireSRWLockShared(IN OUT PRTL_SRWLOCK SRWLock)
Definition: srw.c:325
static ULONG Timeout
Definition: ping.c:61
#define YieldProcessor
Definition: ke.h:48
#define SharedUserData
$ULONG LowPart
Definition: ntbasedef.h:581
$ULONG HighPart
Definition: ntbasedef.h:582
VOID WINAPI ReleaseSRWLockShared(PSRWLOCK Lock)
Definition: sync_hacks.c:64
FORCEINLINE PLARGE_INTEGER GetNtTimeout(PLARGE_INTEGER Time, DWORD Timeout)
Definition: sync_hacks.c:71
VOID WINAPI AcquireSRWLockExclusive(PSRWLOCK Lock)
Definition: sync_hacks.c:29
VOID WINAPI AcquireSRWLockShared(PSRWLOCK Lock)
Definition: sync_hacks.c:36
VOID WINAPI ReleaseSRWLockExclusive(PSRWLOCK Lock)
Definition: sync_hacks.c:57
BOOL WINAPI SleepConditionVariableCS(PCONDITION_VARIABLE ConditionVariable, PCRITICAL_SECTION CriticalSection, DWORD Timeout)
Definition: sync_hacks.c:80
VOID WINAPI InitializeSRWLock(PSRWLOCK Lock)
Definition: sync_hacks.c:50
VOID WINAPI WakeAllConditionVariable(PCONDITION_VARIABLE ConditionVariable)
Definition: sync_hacks.c:112
BOOL WINAPI SleepConditionVariableSRW(PCONDITION_VARIABLE ConditionVariable, PSRWLOCK Lock, DWORD Timeout, ULONG Flags)
Definition: sync_hacks.c:96
VOID WINAPI InitializeConditionVariable(PCONDITION_VARIABLE ConditionVariable)
Definition: sync_hacks.c:43
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
Definition: sync_hacks.c:128
VOID WINAPI WakeConditionVariable(PCONDITION_VARIABLE ConditionVariable)
Definition: sync_hacks.c:119
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
uint64_t ULONGLONG
Definition: typedefs.h:67
#define OUT
Definition: typedefs.h:40
LONGLONG QuadPart
Definition: typedefs.h:114
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
Definition: wdfsync.h:127
#define FORCEINLINE
Definition: wdftypes.h:67
#define WINAPI
Definition: msvc.h:6
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170