ntoskrnl.exe: Implement KeInitializeGuardedMutex.

This commit is contained in:
Etaash Mathamsetty 2022-10-30 11:22:57 -04:00 committed by Alexandre Julliard
parent 0c24f2b895
commit c212987dc5
3 changed files with 30 additions and 0 deletions

View file

@ -577,6 +577,7 @@
@ stub KeInitializeInterrupt
@ stub KeInitializeMutant
@ stdcall KeInitializeMutex(ptr long)
@ stdcall KeInitializeGuardedMutex(ptr)
@ stub KeInitializeQueue
@ stdcall KeInitializeSemaphore(ptr long long)
@ stdcall KeInitializeSpinLock(ptr) NTOSKRNL_KeInitializeSpinLock

View file

@ -427,6 +427,18 @@ LONG WINAPI KeReleaseMutex( PRKMUTEX mutex, BOOLEAN wait )
return ret;
}
/***********************************************************************
* KeInitializeGuardedMutex (NTOSKRNL.EXE.@)
*/
void WINAPI KeInitializeGuardedMutex(PKGUARDED_MUTEX mutex)
{
TRACE("mutex %p.\n", mutex);
mutex->Count = FM_LOCK_BIT;
mutex->Owner = NULL;
mutex->Contention = 0;
KeInitializeEvent(&mutex->Event, SynchronizationEvent, FALSE);
}
static void CALLBACK ke_timer_complete_proc(PTP_CALLBACK_INSTANCE instance, void *timer_, PTP_TIMER tp_timer)
{
KTIMER *timer = timer_;

View file

@ -253,6 +253,23 @@ typedef struct _FAST_MUTEX
ULONG OldIrql;
} FAST_MUTEX, *PFAST_MUTEX;
typedef struct _KGUARDED_MUTEX
{
LONG Count;
PKTHREAD Owner;
ULONG Contention;
KEVENT Event;
union
{
struct
{
SHORT KernelApcDisable;
SHORT SpecialApcDisable;
};
ULONG CombinedApcDisable;
};
} KGUARDED_MUTEX, *PKGUARDED_MUTEX;
#define MAXIMUM_VOLUME_LABEL_LENGTH (32 * sizeof(WCHAR))
typedef struct _VPB {