ReactOS 0.4.16-dev-2528-g7139e57
sync_hacks.c File Reference
#include <windef.h>
#include <winbase.h>
#include <ndk/iofuncs.h>
#include <ndk/kefuncs.h>
#include <ndk/obfuncs.h>
#include <ndk/psfuncs.h>
#include <ndk/rtlfuncs.h>
#include <debug.h>
Include dependency graph for sync_hacks.c:

Go to the source code of this file.

Macros

#define _KERNEL32_
 
#define WIN32_NO_STATUS
 
#define NTDDI_VERSION   NTDDI_WS03SP1
 
#define NTOS_MODE_USER
 
#define NDEBUG
 

Functions

VOID WINAPI AcquireSRWLockExclusive (PSRWLOCK Lock)
 
VOID WINAPI AcquireSRWLockShared (PSRWLOCK Lock)
 
VOID WINAPI InitializeConditionVariable (PCONDITION_VARIABLE ConditionVariable)
 
VOID WINAPI InitializeSRWLock (PSRWLOCK Lock)
 
VOID WINAPI ReleaseSRWLockExclusive (PSRWLOCK Lock)
 
VOID WINAPI ReleaseSRWLockShared (PSRWLOCK Lock)
 
FORCEINLINE PLARGE_INTEGER GetNtTimeout (PLARGE_INTEGER Time, DWORD Timeout)
 
BOOL WINAPI SleepConditionVariableCS (PCONDITION_VARIABLE ConditionVariable, PCRITICAL_SECTION CriticalSection, DWORD Timeout)
 
BOOL WINAPI SleepConditionVariableSRW (PCONDITION_VARIABLE ConditionVariable, PSRWLOCK Lock, DWORD Timeout, ULONG Flags)
 
VOID WINAPI WakeAllConditionVariable (PCONDITION_VARIABLE ConditionVariable)
 
VOID WINAPI WakeConditionVariable (PCONDITION_VARIABLE ConditionVariable)
 
BOOL WINAPI InitializeCriticalSectionEx (OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
 
ULONGLONG WINAPI GetTickCount64 (VOID)
 

Macro Definition Documentation

◆ _KERNEL32_

#define _KERNEL32_

Definition at line 6 of file sync_hacks.c.

◆ NDEBUG

#define NDEBUG

Definition at line 24 of file sync_hacks.c.

◆ NTDDI_VERSION

#define NTDDI_VERSION   NTDDI_WS03SP1

Definition at line 15 of file sync_hacks.c.

◆ NTOS_MODE_USER

#define NTOS_MODE_USER

Definition at line 17 of file sync_hacks.c.

◆ WIN32_NO_STATUS

#define WIN32_NO_STATUS

Definition at line 9 of file sync_hacks.c.

Function Documentation

◆ AcquireSRWLockExclusive()

VOID WINAPI AcquireSRWLockExclusive ( PSRWLOCK  Lock)

Definition at line 29 of file sync_hacks.c.

30{
32}
VOID NTAPI RtlAcquireSRWLockExclusive(IN OUT PRTL_SRWLOCK SRWLock)
Definition: srw.c:591
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
Definition: wdfsync.h:127

◆ AcquireSRWLockShared()

VOID WINAPI AcquireSRWLockShared ( PSRWLOCK  Lock)

Definition at line 36 of file sync_hacks.c.

37{
39}
VOID NTAPI RtlAcquireSRWLockShared(IN OUT PRTL_SRWLOCK SRWLock)
Definition: srw.c:325

◆ GetNtTimeout()

FORCEINLINE PLARGE_INTEGER GetNtTimeout ( PLARGE_INTEGER  Time,
DWORD  Timeout 
)

Definition at line 71 of file sync_hacks.c.

72{
73 if (Timeout == INFINITE) return NULL;
74 Time->QuadPart = (ULONGLONG)Timeout * -10000;
75 return Time;
76}
#define NULL
Definition: types.h:112
#define INFINITE
Definition: serial.h:102
static PLARGE_INTEGER Time
Definition: time.c:105
static ULONG Timeout
Definition: ping.c:61
uint64_t ULONGLONG
Definition: typedefs.h:67
LONGLONG QuadPart
Definition: typedefs.h:114

Referenced by SleepConditionVariableCS(), and SleepConditionVariableSRW().

◆ GetTickCount64()

ULONGLONG WINAPI GetTickCount64 ( VOID  )

Definition at line 153 of file sync_hacks.c.

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}
#define TRUE
Definition: types.h:120
#define UInt32x32To64(a, b)
Definition: intsafe.h:252
if(dx< 0)
Definition: linetemp.h:194
#define YieldProcessor
Definition: ke.h:48
#define SharedUserData
$ULONG LowPart
Definition: ntbasedef.h:581
$ULONG HighPart
Definition: ntbasedef.h:582
uint32_t ULONG
Definition: typedefs.h:59

◆ InitializeConditionVariable()

VOID WINAPI InitializeConditionVariable ( PCONDITION_VARIABLE  ConditionVariable)

Definition at line 43 of file sync_hacks.c.

44{
46}
NTSYSAPI VOID NTAPI RtlInitializeConditionVariable(_Out_ PRTL_CONDITION_VARIABLE ConditionVariable)

◆ InitializeCriticalSectionEx()

BOOL WINAPI InitializeCriticalSectionEx ( OUT LPCRITICAL_SECTION  lpCriticalSection,
IN DWORD  dwSpinCount,
IN DWORD  flags 
)

Definition at line 128 of file sync_hacks.c.

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}
LONG NTSTATUS
Definition: precomp.h:26
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define SetLastError(x)
Definition: compat.h:752
Status
Definition: gdiplustypes.h:25
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSectionAndSpinCount(_In_ PRTL_CRITICAL_SECTION CriticalSection, _In_ ULONG SpinCount)
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)

◆ InitializeSRWLock()

VOID WINAPI InitializeSRWLock ( PSRWLOCK  Lock)

Definition at line 50 of file sync_hacks.c.

51{
53}
VOID NTAPI RtlInitializeSRWLock(OUT PRTL_SRWLOCK SRWLock)
Definition: srw.c:317

◆ ReleaseSRWLockExclusive()

VOID WINAPI ReleaseSRWLockExclusive ( PSRWLOCK  Lock)

Definition at line 57 of file sync_hacks.c.

58{
60}
VOID NTAPI RtlReleaseSRWLockExclusive(IN OUT PRTL_SRWLOCK SRWLock)
Definition: srw.c:710

◆ ReleaseSRWLockShared()

VOID WINAPI ReleaseSRWLockShared ( PSRWLOCK  Lock)

Definition at line 64 of file sync_hacks.c.

65{
67}
VOID NTAPI RtlReleaseSRWLockShared(IN OUT PRTL_SRWLOCK SRWLock)
Definition: srw.c:526

◆ SleepConditionVariableCS()

BOOL WINAPI SleepConditionVariableCS ( PCONDITION_VARIABLE  ConditionVariable,
PCRITICAL_SECTION  CriticalSection,
DWORD  Timeout 
)

Definition at line 80 of file sync_hacks.c.

81{
84
87 {
89 return FALSE;
90 }
91 return TRUE;
92}
#define STATUS_TIMEOUT
Definition: d3dkmdt.h:49
CRITICAL_SECTION CriticalSection
Definition: iprtprio.c:40
NTSYSAPI NTSTATUS NTAPI RtlSleepConditionVariableCS(_Inout_ PRTL_CONDITION_VARIABLE ConditionVariable, _Inout_ PRTL_CRITICAL_SECTION CriticalSection, _In_opt_ PLARGE_INTEGER TimeOut)
FORCEINLINE PLARGE_INTEGER GetNtTimeout(PLARGE_INTEGER Time, DWORD Timeout)
Definition: sync_hacks.c:71

◆ SleepConditionVariableSRW()

BOOL WINAPI SleepConditionVariableSRW ( PCONDITION_VARIABLE  ConditionVariable,
PSRWLOCK  Lock,
DWORD  Timeout,
ULONG  Flags 
)

Definition at line 96 of file sync_hacks.c.

97{
100
103 {
105 return FALSE;
106 }
107 return TRUE;
108}
NTSYSAPI NTSTATUS NTAPI RtlSleepConditionVariableSRW(_Inout_ PRTL_CONDITION_VARIABLE ConditionVariable, _Inout_ PRTL_SRWLOCK SRWLock, _In_opt_ PLARGE_INTEGER TimeOut, _In_ ULONG Flags)
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170

◆ WakeAllConditionVariable()

VOID WINAPI WakeAllConditionVariable ( PCONDITION_VARIABLE  ConditionVariable)

Definition at line 112 of file sync_hacks.c.

113{
115}
NTSYSAPI VOID NTAPI RtlWakeAllConditionVariable(_Inout_ PRTL_CONDITION_VARIABLE ConditionVariable)

◆ WakeConditionVariable()

VOID WINAPI WakeConditionVariable ( PCONDITION_VARIABLE  ConditionVariable)

Definition at line 119 of file sync_hacks.c.

120{
122}
NTSYSAPI VOID NTAPI RtlWakeConditionVariable(_Inout_ PRTL_CONDITION_VARIABLE ConditionVariable)