Files
nt-lite/code/public/ntlite/ddk/mutex.h
T

29 lines
704 B
C

// Public nt-lite DDK mutex declarations.
#pragma once
#include <ntlite/status.h>
#include <ntlite/ddk/list.h>
#include <ntlite/ddk/object.h>
#include <ntlite/ddk/sync.h>
#include <ntlite/ddk/thread.h>
typedef struct MUTEX {
OBJECT Header;
SPINLOCK Lock;
THREAD* Owner;
LIST_ENTRY WaitList;
} MUTEX;
// Creates a mutex object.
__declspec(dllexport) KSTATUS KeMutexCreate(MUTEX** out);
// Acquires a mutex, blocking when necessary.
__declspec(dllexport) KSTATUS KeAcquireMutex(MUTEX* mutex);
// Attempts to acquire a mutex without blocking.
__declspec(dllexport) KSTATUS KeTryAcquireMutex(MUTEX* mutex);
// Releases a mutex.
__declspec(dllexport) void KeReleaseMutex(MUTEX* mutex);