diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index c0eda7147c9..57cc38bacdb 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -133,8 +133,8 @@ # functions exported by name, ordinal doesn't matter -@ stdcall AcquireSRWLockExclusive(ptr) -@ stdcall AcquireSRWLockShared(ptr) +@ stdcall AcquireSRWLockExclusive(ptr) ntdll.RtlAcquireSRWLockExclusive +@ stdcall AcquireSRWLockShared(ptr) ntdll.RtlAcquireSRWLockShared @ stdcall ActivateActCtx(ptr ptr) @ stdcall AddAtomA(str) @ stdcall AddAtomW(wstr) @@ -753,7 +753,7 @@ @ stdcall InitializeCriticalSectionAndSpinCount(ptr long) @ stdcall InitializeCriticalSectionEx(ptr long long) @ stdcall InitializeSListHead(ptr) ntdll.RtlInitializeSListHead -@ stdcall InitializeSRWLock(ptr) +@ stdcall InitializeSRWLock(ptr) ntdll.RtlInitializeSRWLock @ stdcall -arch=i386 InterlockedCompareExchange (ptr long long) @ stdcall -arch=i386 -ret64 InterlockedCompareExchange64(ptr int64 int64) ntdll.RtlInterlockedCompareExchange64 @ stdcall -arch=i386 InterlockedDecrement(ptr) @@ -1015,8 +1015,8 @@ @ stdcall ReleaseActCtx(ptr) @ stdcall ReleaseMutex(long) @ stdcall ReleaseSemaphore(long long ptr) -@ stdcall ReleaseSRWLockExclusive(ptr) -@ stdcall ReleaseSRWLockShared(ptr) +@ stdcall ReleaseSRWLockExclusive(ptr) ntdll.RtlReleaseSRWLockExclusive +@ stdcall ReleaseSRWLockShared(ptr) ntdll.RtlReleaseSRWLockShared @ stdcall RemoveDirectoryA(str) @ stdcall RemoveDirectoryW(wstr) # @ stub RemoveLocalAlternateComputerNameA diff --git a/dlls/kernel32/thread.c b/dlls/kernel32/thread.c index c82ef58ab53..5d87cddd74b 100644 --- a/dlls/kernel32/thread.c +++ b/dlls/kernel32/thread.c @@ -832,43 +832,3 @@ BOOL WINAPI GetThreadPreferredUILanguages( DWORD flags, PULONG count, PCZZWSTR b *buffersize = 0; return TRUE; } - -/*********************************************************************** - * InitializeSRWLock (KERNEL32.@) - */ -VOID WINAPI InitializeSRWLock( PSRWLOCK srwlock ) -{ - FIXME( "(%p): stub\n", srwlock ); -} - -/*********************************************************************** - * AcquireSRWLockExclusive (KERNEL32.@) - */ -VOID WINAPI AcquireSRWLockExclusive( PSRWLOCK srwlock ) -{ - FIXME( "(%p): stub\n", srwlock ); -} - -/*********************************************************************** - * ReleaseSRWLockExclusive (KERNEL32.@) - */ -VOID WINAPI ReleaseSRWLockExclusive( PSRWLOCK srwlock ) -{ - FIXME( "(%p): stub\n", srwlock ); -} - -/*********************************************************************** - * AcquireSRWLockShared (KERNEL32.@) - */ -VOID WINAPI AcquireSRWLockShared( PSRWLOCK srwlock ) -{ - FIXME( "(%p): stub\n", srwlock ); -} - -/*********************************************************************** - * ReleaseSRWLockShared (KERNEL32.@) - */ -VOID WINAPI ReleaseSRWLockShared( PSRWLOCK srwlock ) -{ - FIXME( "(%p): stub\n", srwlock ); -} diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index cb120dac756..860b4c628ba 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -391,6 +391,8 @@ @ stdcall RtlAcquirePebLock() @ stdcall RtlAcquireResourceExclusive(ptr long) @ stdcall RtlAcquireResourceShared(ptr long) +@ stdcall RtlAcquireSRWLockExclusive(ptr) +@ stdcall RtlAcquireSRWLockShared(ptr) @ stdcall RtlActivateActivationContext(long ptr ptr) @ stub RtlActivateActivationContextEx @ stub RtlActivateActivationContextUnsafeFast @@ -680,6 +682,7 @@ # @ stub RtlInitializeRangeList @ stdcall RtlInitializeResource(ptr) @ stdcall RtlInitializeSListHead(ptr) +@ stdcall RtlInitializeSRWLock(ptr) @ stdcall RtlInitializeSid(ptr ptr long) # @ stub RtlInitializeStackTraceDataBase @ stub RtlInsertElementGenericTable @@ -809,6 +812,8 @@ @ stub RtlReleaseMemoryStream @ stdcall RtlReleasePebLock() @ stdcall RtlReleaseResource(ptr) +@ stdcall RtlReleaseSRWLockExclusive(ptr) +@ stdcall RtlReleaseSRWLockShared(ptr) @ stub RtlRemoteCall @ stdcall RtlRemoveVectoredExceptionHandler(ptr) @ stub RtlResetRtlTranslations diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c index f466dababba..af1dba92c40 100644 --- a/dlls/ntdll/sync.c +++ b/dlls/ntdll/sync.c @@ -1353,3 +1353,43 @@ DWORD WINAPI RtlRunOnceExecuteOnce( RTL_RUN_ONCE *once, PRTL_RUN_ONCE_INIT_FN fu return RtlRunOnceComplete( once, 0, context ? *context : NULL ); } + +/*********************************************************************** + * RtlInitializeSRWLock (NTDLL.@) + */ +void WINAPI RtlInitializeSRWLock( RTL_SRWLOCK *lock ) +{ + lock->Ptr = NULL; +} + +/*********************************************************************** + * RtlAcquireSRWLockExclusive (NTDLL.@) + */ +void WINAPI RtlAcquireSRWLockExclusive( RTL_SRWLOCK *lock ) +{ + FIXME( "%p stub\n", lock ); +} + +/*********************************************************************** + * RtlAcquireSRWLockShared (NTDLL.@) + */ +void WINAPI RtlAcquireSRWLockShared( RTL_SRWLOCK *lock ) +{ + FIXME( "%p stub\n", lock ); +} + +/*********************************************************************** + * RtlReleaseSRWLockExclusive (NTDLL.@) + */ +void WINAPI RtlReleaseSRWLockExclusive( RTL_SRWLOCK *lock ) +{ + FIXME( "%p stub\n", lock ); +} + +/*********************************************************************** + * RtlReleaseSRWLockShared (NTDLL.@) + */ +void WINAPI RtlReleaseSRWLockShared( RTL_SRWLOCK *lock ) +{ + FIXME( "%p stub\n", lock ); +} diff --git a/include/winbase.h b/include/winbase.h index 88b5e4f3c0e..cfdea58f40f 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -61,6 +61,8 @@ typedef PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG; typedef RTL_SRWLOCK SRWLOCK; typedef PRTL_SRWLOCK PSRWLOCK; +#define SRWLOCK_INIT RTL_SRWLOCK_INIT + typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK; #define CONDITION_VARIABLE_INIT RTL_CONDITION_VARIABLE_INIT diff --git a/include/winternl.h b/include/winternl.h index bb7a3813e5e..47d9a0980ed 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -2256,6 +2256,8 @@ NTSYSAPI NTSTATUS WINAPI NtYieldExecution(void); NTSYSAPI void WINAPI RtlAcquirePebLock(void); NTSYSAPI BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE); NTSYSAPI BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE); +NTSYSAPI void WINAPI RtlAcquireSRWLockExclusive(RTL_SRWLOCK*); +NTSYSAPI void WINAPI RtlAcquireSRWLockShared(RTL_SRWLOCK*); NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContext(DWORD,HANDLE,ULONG_PTR*); NTSYSAPI NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD); NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID); @@ -2419,6 +2421,7 @@ NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionEx(RTL_CRITICAL_SECTION *, NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG); NTSYSAPI void WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *); NTSYSAPI void WINAPI RtlInitializeResource(LPRTL_RWLOCK); +NTSYSAPI void WINAPI RtlInitializeSRWLock(RTL_SRWLOCK*); NTSYSAPI BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE); NTSYSAPI NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *); NTSYSAPI NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR); @@ -2471,6 +2474,8 @@ NTSYSAPI NTSTATUS WINAPI RtlRegisterWait(PHANDLE,HANDLE,RTL_WAITORTIMERCALLBACK NTSYSAPI void WINAPI RtlReleaseActivationContext(HANDLE); NTSYSAPI void WINAPI RtlReleasePebLock(void); NTSYSAPI void WINAPI RtlReleaseResource(LPRTL_RWLOCK); +NTSYSAPI void WINAPI RtlReleaseSRWLockExclusive(RTL_SRWLOCK*); +NTSYSAPI void WINAPI RtlReleaseSRWLockShared(RTL_SRWLOCK*); NTSYSAPI ULONG WINAPI RtlRemoveVectoredExceptionHandler(PVOID); NTSYSAPI void WINAPI RtlRestoreLastWin32Error(DWORD); NTSYSAPI void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);