summaryrefslogtreecommitdiffhomepage
path: root/Public/Developer/System.Core/Sources
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@el-mahrouss-logic.com>2024-03-26 13:44:38 +0100
committerAmlal El Mahrouss <amlal@el-mahrouss-logic.com>2024-03-26 13:47:32 +0100
commit66e4f909bd1a495d3f1c34d2e1b5cd71099ab1ae (patch)
treed64cc867d352d190dfd5693262a42b31e28b9239 /Public/Developer/System.Core/Sources
parentdbe4573f61ae059c9dafb8e7623370121d443451 (diff)
Kernel and System.Core: kernel related fixes and :boom: on User API.
- UserHeap.cxx: Document code and fix issue in ke_free_heap_internal. - Scheduler: Rename ProcessManager to ProcessScheduler. - The System API has been reworked to improve it's design, such as no more C++ to improve it's portability. - Moved containers into it's own API. Signed-off-by: Amlal El Mahrouss <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'Public/Developer/System.Core/Sources')
-rw-r--r--Public/Developer/System.Core/Sources/CRT0.cxx (renamed from Public/Developer/System.Core/Sources/LibEntrypoint.cxx)4
-rw-r--r--Public/Developer/System.Core/Sources/Heap.cxx45
-rw-r--r--Public/Developer/System.Core/Sources/New+Delete.cxx14
3 files changed, 6 insertions, 57 deletions
diff --git a/Public/Developer/System.Core/Sources/LibEntrypoint.cxx b/Public/Developer/System.Core/Sources/CRT0.cxx
index b874ef55..a0235e68 100644
--- a/Public/Developer/System.Core/Sources/LibEntrypoint.cxx
+++ b/Public/Developer/System.Core/Sources/CRT0.cxx
@@ -6,8 +6,8 @@
/// @brief Inits the DLL.
/// @return if it was succesful or not.
-DWordType __DllMain(VoidType) {
- kApplicationObject = HcGetInstanceObject();
+CA_EXTERN_C DWordType __DllMain(VoidType) {
+ kApplicationObject = HcGetAppObject();
CA_MUST_PASS(kApplicationObject);
return 0;
diff --git a/Public/Developer/System.Core/Sources/Heap.cxx b/Public/Developer/System.Core/Sources/Heap.cxx
index 370693cc..fcd80a7f 100644
--- a/Public/Developer/System.Core/Sources/Heap.cxx
+++ b/Public/Developer/System.Core/Sources/Heap.cxx
@@ -11,7 +11,7 @@
/// @param sz size of object.
/// @param flags flags.
/// @return
-CA_EXTERN_C PtrVoidType HcAllocateProcessHeap(ObjectPtr refObj, QWordType sz,
+CA_EXTERN_C PtrVoidType HcAllocateProcessHeap(ObjectRef refObj, QWordType sz,
DWordType flags) {
CA_MUST_PASS(sz);
CA_MUST_PASS(flags);
@@ -22,7 +22,7 @@ CA_EXTERN_C PtrVoidType HcAllocateProcessHeap(ObjectPtr refObj, QWordType sz,
/// @brief Free pointer from the user's heap.
/// @param refObj Process object.
/// @param ptr the pointer to free.
-CA_EXTERN_C VoidType HcFreeProcessHeap(ObjectPtr refObj, PtrVoidType ptr) {
+CA_EXTERN_C VoidType HcFreeProcessHeap(ObjectRef refObj, PtrVoidType ptr) {
CA_MUST_PASS(ptr);
CA_UNREFERENCED_PARAMETER(refObj->Invoke(refObj, kProcessCallFreePtr, ptr));
}
@@ -31,7 +31,7 @@ CA_EXTERN_C VoidType HcFreeProcessHeap(ObjectPtr refObj, PtrVoidType ptr) {
/// @param refObj Process object.
/// @param ptr the pointer to find.
/// @return the size.
-CA_EXTERN_C QWordType HcProcessHeapSize(ObjectPtr refObj, PtrVoidType ptr) {
+CA_EXTERN_C QWordType HcProcessHeapSize(ObjectRef refObj, PtrVoidType ptr) {
CA_MUST_PASS(ptr);
return refObj->Invoke(refObj, kProcessCallSizePtr, ptr);
}
@@ -40,44 +40,7 @@ CA_EXTERN_C QWordType HcProcessHeapSize(ObjectPtr refObj, PtrVoidType ptr) {
/// @param refObj Process object.
/// @param ptr the pointer to check.
/// @return if it exists
-CA_EXTERN_C BooleanType HcProcessHeapExists(ObjectPtr refObj, PtrVoidType ptr) {
+CA_EXTERN_C BooleanType HcProcessHeapExists(ObjectRef refObj, PtrVoidType ptr) {
CA_MUST_PASS(ptr);
return refObj->Invoke(refObj, kProcessCallCheckPtr, ptr);
}
-
-using namespace System;
-
-/// @brief Shared instance of the heap.
-/// @return
-HeapInterface* HeapInterface::Shared() noexcept {
- static HeapInterface* heap = nullptr;
-
- if (!heap) {
- heap = new HeapInterface();
- }
-
- return heap;
-}
-
-HeapInterface::HeapInterface() {
- CA_MUST_PASS(HcProcessHeapExists(kApplicationObject, (PtrVoidType)this));
-}
-
-HeapInterface::~HeapInterface() { delete this; }
-
-void HeapInterface::Delete(HeapRef me) noexcept {
- CA_MUST_PASS(me);
- HcFreeProcessHeap(kApplicationObject, me);
-}
-
-SizeType HeapInterface::Size(HeapRef me) noexcept {
- CA_MUST_PASS(me);
- return HcProcessHeapSize(kApplicationObject, me);
-}
-
-HeapRef HeapInterface::New(const SizeType& sz, const DWordType flags) {
- SizeType _sz = sz;
- if (!_sz) ++_sz;
-
- return HcAllocateProcessHeap(kApplicationObject, _sz, flags);
-}
diff --git a/Public/Developer/System.Core/Sources/New+Delete.cxx b/Public/Developer/System.Core/Sources/New+Delete.cxx
index 98674a73..6e40aa06 100644
--- a/Public/Developer/System.Core/Sources/New+Delete.cxx
+++ b/Public/Developer/System.Core/Sources/New+Delete.cxx
@@ -5,20 +5,6 @@
------------------------------------------- */
#include <System.Core/Headers/Heap.hxx>
-#include <System.Core/Headers/Heap.hxx>
-
-#define kAllocationTypes 2
-
-enum HcAllocationKind {
- kStandardAllocation = 0xC,
- kArrayAllocation = 0xD,
-};
-
-CA_EXTERN_C PtrVoidType HcAllocateProcessHeap(ObjectPtr refObj, QWordType sz,
- DWordType flags);
-CA_EXTERN_C BooleanType HcProcessHeapExists(ObjectPtr refObj, PtrVoidType ptr);
-CA_EXTERN_C QWordType HcProcessHeapSize(ObjectPtr refObj, PtrVoidType ptr);
-CA_EXTERN_C VoidType HcFreeProcessHeap(ObjectPtr refObj, PtrVoidType ptr);
typedef SizeType size_t;