19 lines
473 B
C
19 lines
473 B
C
#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);
|