[Kernel] Implement ObCreateObject

This commit is contained in:
disjtqz
2023-10-15 12:33:54 -04:00
committed by Radosław Gliński
parent d8aa14da73
commit 275454089e
8 changed files with 298 additions and 21 deletions

View File

@@ -102,9 +102,39 @@ class XObject {
SymbolicLink,
Thread,
Timer,
Device
Device
};
static bool HasDispatcherHeader(Type type) {
switch (type) {
case Type::Event:
case Type::Mutant:
case Type::Semaphore:
case Type::Thread:
case Type::Timer:
return true;
}
return false;
}
static Type MapGuestTypeToHost(uint16_t type) {
// todo: this is not fully filled in
switch (type) {
case 0:
case 1:
return Type::Event;
case 2:
return Type::Mutant;
case 5:
return Type::Semaphore;
case 6:
return Type::Thread;
case 8:
case 9:
return Type::Timer;
}
return Type::Undefined;
}
XObject(Type type);
XObject(KernelState* kernel_state, Type type, bool host_object = false);
virtual ~XObject();
@@ -189,8 +219,6 @@ class XObject {
return reinterpret_cast<T*>(CreateNative(sizeof(T)));
}
static uint32_t TimeoutTicksToMs(int64_t timeout_ticks);
KernelState* kernel_state_;