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);
|