Module: wine Branch: master Commit: 8589d094ff576db6d733c744120c316eb835d6fb URL: https://source.winehq.org/git/wine.git/?a=commit;h=8589d094ff576db6d733c7441...
Author: Zebediah Figura z.figura12@gmail.com Date: Mon Nov 26 19:39:16 2018 -0600
ntoskrnl.exe: Implement KeInitializeSemaphore().
Signed-off-by: Zebediah Figura z.figura12@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntoskrnl.exe/ntoskrnl.c | 9 --------- dlls/ntoskrnl.exe/sync.c | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index c1cfb03..07e9104 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -2308,15 +2308,6 @@ LONG WINAPI KeReleaseMutex(PRKMUTEX Mutex, BOOLEAN Wait)
/*********************************************************************** - * KeInitializeSemaphore (NTOSKRNL.EXE.@) - */ -void WINAPI KeInitializeSemaphore( PRKSEMAPHORE Semaphore, LONG Count, LONG Limit ) -{ - FIXME( "(%p %d %d) stub\n", Semaphore , Count, Limit ); -} - - -/*********************************************************************** * KeInitializeSpinLock (NTOSKRNL.EXE.@) */ void WINAPI KeInitializeSpinLock( PKSPIN_LOCK SpinLock ) diff --git a/dlls/ntoskrnl.exe/sync.c b/dlls/ntoskrnl.exe/sync.c index 8011b56..2190faa 100644 --- a/dlls/ntoskrnl.exe/sync.c +++ b/dlls/ntoskrnl.exe/sync.c @@ -36,6 +36,7 @@ enum object_type { TYPE_MANUAL_EVENT = 0, TYPE_AUTO_EVENT = 1, + TYPE_SEMAPHORE = 5, };
static CRITICAL_SECTION sync_cs; @@ -172,3 +173,17 @@ LONG WINAPI KeResetEvent( PRKEVENT event )
return ret; } + +/*********************************************************************** + * KeInitializeSemaphore (NTOSKRNL.EXE.@) + */ +void WINAPI KeInitializeSemaphore( PRKSEMAPHORE semaphore, LONG count, LONG limit ) +{ + TRACE("semaphore %p, count %d, limit %d.\n", semaphore, count, limit); + + semaphore->Header.Type = TYPE_SEMAPHORE; + semaphore->Header.SignalState = count; + semaphore->Header.WaitListHead.Blink = NULL; + semaphore->Header.WaitListHead.Flink = NULL; + semaphore->Limit = limit; +}