#pragma once // ke_mutex.h - binary ownership mutex #include "ob_object.h" #include "ke_spinlock.h" #include "ke_list.h" #include "ke_status.h" typedef struct MUTEX { OBJECT Header; SPINLOCK Lock; struct THREAD* Owner; /* NULL if unowned */ LIST_ENTRY WaitList; } MUTEX; KSTATUS MutexCreate(MUTEX **out); KSTATUS KeAcquireMutex(MUTEX* mutex); KSTATUS KeTryAcquireMutex(MUTEX* mutex); void KeReleaseMutex(MUTEX* mutex);