Files
SpeedBreakerProject--speedb…/runtime/kernel/xdm.cpp
T
2026-10-08 13:25:54 +00:00

46 lines
908 B
C++

// Adapted from Unleashed Recompiled (https://github.com/hedge-dev/UnleashedRecomp),
// GPL-3.0-or-later. Modified for SpeedBreaker.
#include <stdafx.h>
#include "xdm.h"
#include "freelist.h"
Mutex g_kernelLock;
void DestroyKernelObject(KernelObject* obj)
{
obj->~KernelObject();
g_userHeap.Free(obj);
}
void ReleaseKernelObject(KernelObject* obj)
{
if (--obj->refs == 0)
DestroyKernelObject(obj);
}
uint32_t GetKernelHandle(KernelObject* obj)
{
assert(obj != GetInvalidKernelObject());
return g_memory.MapVirtual(obj);
}
void DestroyKernelObject(uint32_t handle)
{
DestroyKernelObject(GetKernelObject(handle));
}
bool IsKernelObject(uint32_t handle)
{
return (handle & 0x80000000) != 0;
}
bool IsKernelObject(void* obj)
{
return IsKernelObject(g_memory.MapVirtual(obj));
}
bool IsInvalidKernelObject(void* obj)
{
return obj == GetInvalidKernelObject();
}