From e44f7f8feb7f110910f1b467e2f8fdaa7166ebfe Mon Sep 17 00:00:00 2001 From: Ryan Teal Date: Fri, 5 Jul 2019 13:33:58 +0100 Subject: [PATCH] Basic KObject implementation --- app/src/main/cpp/core/hos/kernel/kernel.cpp | 16 ++++++++++++++++ app/src/main/cpp/core/hos/kernel/kernel.h | 19 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 app/src/main/cpp/core/hos/kernel/kernel.cpp create mode 100644 app/src/main/cpp/core/hos/kernel/kernel.h diff --git a/app/src/main/cpp/core/hos/kernel/kernel.cpp b/app/src/main/cpp/core/hos/kernel/kernel.cpp new file mode 100644 index 00000000..7c4675af --- /dev/null +++ b/app/src/main/cpp/core/hos/kernel/kernel.cpp @@ -0,0 +1,16 @@ +#include +#include +#include "kernel.h" + +namespace core::kernel +{ + std::unordered_map handles; + uint32_t handleIndex = 0xd001; + + uint32_t NewHandle(KObjectPtr obj) + { + handles.insert({handleIndex, obj}); + syslog(LOG_DEBUG, "Creating new handle 0x%x", handleIndex); + return handleIndex++; + } +} \ No newline at end of file diff --git a/app/src/main/cpp/core/hos/kernel/kernel.h b/app/src/main/cpp/core/hos/kernel/kernel.h new file mode 100644 index 00000000..9e699390 --- /dev/null +++ b/app/src/main/cpp/core/hos/kernel/kernel.h @@ -0,0 +1,19 @@ +#pragma once +#include +#include + +namespace core::kernel +{ + class KObject + { + public: + KObject(uint32_t handle) : handle(handle) {} + uint32_t Handle() { return handle; } + private: + uint32_t handle; + }; + + typedef std::shared_ptr KObjectPtr; + + uint32_t NewHandle(KObjectPtr obj); +} \ No newline at end of file