summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@el-mahrouss-logic.com>2024-03-11 20:59:22 +0100
committeramlal <amlal@el-mahrouss-logic.com>2024-03-11 21:05:13 +0100
commitba8ddb24e0ac6c7b1a617519a4bde9970610fbcc (patch)
treec741ec82a267e44e2a362399ed20439184504ace
parent5468ca71a59c9e24c1d392554e8f97f0c1705394 (diff)
Kernel: Important changes, needs to be merged to master.
- Add Logon executive. - Adding HCore System Call Interface (inside System.Core.dll) - Add _InOut and _StrictInOut inside HintKit. Signed-off-by: Amlal El Mahrouss <amlal@el-mahrouss-logic.com> Signed-off-by: amlal <amlal@el-mahrouss-logic.com>
-rw-r--r--Private/Executives/Logon/.gitkeep (renamed from Public/Kits/GPUKit/.gitkeep)0
-rw-r--r--Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp2
-rw-r--r--Private/HALKit/AMD64/HalKernelMain.cxx2
-rw-r--r--Private/HALKit/AMD64/HalSMPCore.cxx4
-rw-r--r--Private/HintKit/CompilerHint.hxx3
-rw-r--r--Private/KernelKit/HError.hpp3
-rw-r--r--Private/KernelKit/ProcessScheduler.hpp (renamed from Private/KernelKit/ProcessManager.hpp)15
-rw-r--r--Private/KernelKit/ProcessTeam.hpp2
-rw-r--r--Private/KernelKit/ThreadLocalStorage.inl2
-rw-r--r--Private/KernelKit/Timer.hpp2
-rw-r--r--Private/NewKit/ErrorID.hpp15
-rw-r--r--Private/NewKit/KernelCheck.hpp2
-rw-r--r--Private/NewKit/UserHeap.hpp19
-rw-r--r--Private/Source/PEFCodeManager.cxx2
-rw-r--r--Private/Source/PEFSharedObjectRT.cxx2
-rw-r--r--Private/Source/ProcessScheduler.cxx (renamed from Private/Source/ProcessManager.cxx)9
-rw-r--r--Private/Source/SMPManager.cxx2
-rw-r--r--Private/Source/Semaphore.cxx2
-rw-r--r--Private/Source/ThreadLocalStorage.cxx2
-rw-r--r--Private/Source/UserHeap.cxx4
-rw-r--r--Public/Kits/System.Core/Containers/XIFF.hxx2
-rw-r--r--Public/Kits/System.Core/CoreAPI.hxx8
-rw-r--r--Public/Kits/System.Core/HCoreBase.hxx13
-rw-r--r--Public/Kits/System.Core/HCoreHeap.hxx13
-rw-r--r--Public/Kits/System.Core/HcHeapAPI.h23
-rw-r--r--Public/Kits/System.Core/HeapAPI.cxx7
-rw-r--r--Public/Kits/System.Core/hcore.h15
-rw-r--r--Public/Kits/System.Grahpics.GPU/.gitkeep0
28 files changed, 108 insertions, 67 deletions
diff --git a/Public/Kits/GPUKit/.gitkeep b/Private/Executives/Logon/.gitkeep
index e69de29b..e69de29b 100644
--- a/Public/Kits/GPUKit/.gitkeep
+++ b/Private/Executives/Logon/.gitkeep
diff --git a/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp b/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp
index 5fe39225..a86499e1 100644
--- a/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp
+++ b/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp
@@ -5,7 +5,7 @@
------------------------------------------- */
#include <ArchKit/ArchKit.hpp>
-#include <KernelKit/ProcessManager.hpp>
+#include <KernelKit/ProcessScheduler.hpp>
#include <NewKit/String.hpp>
EXTERN_C void idt_handle_gpf(HCore::UIntPtr rsp) {
diff --git a/Private/HALKit/AMD64/HalKernelMain.cxx b/Private/HALKit/AMD64/HalKernelMain.cxx
index 6716a989..24f03ce9 100644
--- a/Private/HALKit/AMD64/HalKernelMain.cxx
+++ b/Private/HALKit/AMD64/HalKernelMain.cxx
@@ -14,7 +14,7 @@
#include <NewKit/Json.hpp>
#include <NewKit/KernelHeap.hpp>
#include <NewKit/UserHeap.hpp>
-#include <KernelKit/ProcessManager.hpp>
+#include <KernelKit/ProcessScheduler.hpp>
#include <KernelKit/Rsrc/Splash.rsrc>
///! @brief Disk contains HCore files.
diff --git a/Private/HALKit/AMD64/HalSMPCore.cxx b/Private/HALKit/AMD64/HalSMPCore.cxx
index a72d6bfe..87bfae3b 100644
--- a/Private/HALKit/AMD64/HalSMPCore.cxx
+++ b/Private/HALKit/AMD64/HalSMPCore.cxx
@@ -4,10 +4,10 @@
------------------------------------------- */
-#include <KernelKit/ProcessManager.hpp>
+#include <KernelKit/ProcessScheduler.hpp>
using namespace HCore;
-Void Process::AssignStart(UIntPtr &imageStart) noexcept {
+Void Process::SetStart(UIntPtr &imageStart) noexcept {
if (imageStart == 0) this->Crash();
this->StackFrame->Rbp = imageStart;
diff --git a/Private/HintKit/CompilerHint.hxx b/Private/HintKit/CompilerHint.hxx
index e74f349a..a624a080 100644
--- a/Private/HintKit/CompilerHint.hxx
+++ b/Private/HintKit/CompilerHint.hxx
@@ -18,4 +18,7 @@
#define _StrictCheckInput
#define _StrictCheckOutput
+#define _InOut
+#define _StrictInOut
+
#endif // ifndef __HINTKIT_COMPILER_HINT_HXX__
diff --git a/Private/KernelKit/HError.hpp b/Private/KernelKit/HError.hpp
index 1b971e94..41bfaf3d 100644
--- a/Private/KernelKit/HError.hpp
+++ b/Private/KernelKit/HError.hpp
@@ -7,6 +7,7 @@
#pragma once
#include <NewKit/Defines.hpp>
+#include <NewKit/ErrorID.hpp>
namespace HCore {
typedef Int32 HError;
@@ -25,6 +26,8 @@ inline constexpr HError kErrorMath = 42;
inline constexpr HError kErrorNoNetwork = 43;
inline constexpr HError kErrorHeapOutOfMemory = 44;
inline constexpr HError kErrorNoSuchDisk = 45;
+inline constexpr HError kErrorFileExists = 46;
+inline constexpr HError kErrorUnimplemented = 0;
Boolean ke_bug_check(void) noexcept;
} // namespace HCore
diff --git a/Private/KernelKit/ProcessManager.hpp b/Private/KernelKit/ProcessScheduler.hpp
index c7c69093..e69d2fcf 100644
--- a/Private/KernelKit/ProcessManager.hpp
+++ b/Private/KernelKit/ProcessScheduler.hpp
@@ -4,8 +4,8 @@
------------------------------------------- */
-#ifndef __PROCESS_MANAGER__
-#define __PROCESS_MANAGER__
+#ifndef __PROCESS_SCHEDULER__
+#define __PROCESS_SCHEDULER__
#include <ArchKit/ArchKit.hpp>
#include <KernelKit/FileManager.hpp>
@@ -121,7 +121,7 @@ class Process final {
HCORE_COPY_DEFAULT(Process)
public:
- void AssignStart(UIntPtr &imageStart) noexcept;
+ void SetStart(UIntPtr &imageStart) noexcept;
public:
Char Name[kProcessLen] = {"Process"};
@@ -168,13 +168,14 @@ class Process final {
//! @brief TLS Free.
Boolean Delete(VoidPtr ptr, const SizeT &sz);
- //! @brief Process name getter, example: "C RunTime"
- const Char *GetName();
-
//! @brief Wakes up threads.
void Wake(const bool wakeup = false);
+ // Process getters.
public:
+ //! @brief Process name getter, example: "C RunTime"
+ const Char *GetName();
+
const ProcessSelector &GetSelector();
const ProcessStatus &GetStatus();
const AffinityKind &GetAffinity();
@@ -254,4 +255,4 @@ const Int32 &rt_get_exit_code() noexcept;
////////////////////////////////////////////////////
-#endif /* ifndef __PROCESS_MANAGER__ */
+#endif /* ifndef __PROCESS_SCHEDULER__ */
diff --git a/Private/KernelKit/ProcessTeam.hpp b/Private/KernelKit/ProcessTeam.hpp
index 31759ff6..b60a8a0d 100644
--- a/Private/KernelKit/ProcessTeam.hpp
+++ b/Private/KernelKit/ProcessTeam.hpp
@@ -6,4 +6,4 @@
#pragma once
-#include <KernelKit/ProcessManager.hpp> \ No newline at end of file
+#include <KernelKit/ProcessScheduler.hpp> \ No newline at end of file
diff --git a/Private/KernelKit/ThreadLocalStorage.inl b/Private/KernelKit/ThreadLocalStorage.inl
index a9bc04cc..a42c2381 100644
--- a/Private/KernelKit/ThreadLocalStorage.inl
+++ b/Private/KernelKit/ThreadLocalStorage.inl
@@ -7,7 +7,7 @@
//! @brief Allocates a pointer from the process's tls.
#ifndef __PROCESS_MANAGER__
-#include <KernelKit/ProcessManager.hpp>
+#include <KernelKit/ProcessScheduler.hpp>
#endif
template <typename T>
diff --git a/Private/KernelKit/Timer.hpp b/Private/KernelKit/Timer.hpp
index ef726b08..ddfac06a 100644
--- a/Private/KernelKit/Timer.hpp
+++ b/Private/KernelKit/Timer.hpp
@@ -20,7 +20,7 @@ class HardwareTimerInterface
{
public:
/// @brief Default constructor
- HardwareTimerInterface() = default;
+ explicit HardwareTimerInterface() = default;
virtual ~HardwareTimerInterface() = default;
public:
diff --git a/Private/NewKit/ErrorID.hpp b/Private/NewKit/ErrorID.hpp
index d0572e7e..b2cc65d1 100644
--- a/Private/NewKit/ErrorID.hpp
+++ b/Private/NewKit/ErrorID.hpp
@@ -6,15 +6,14 @@
#pragma once
-/// @brief kernel errors.
+/// @brief Internal kernel errors.
#include <NewKit/ErrorOr.hpp>
#include <NewKit/Defines.hpp>
-#define H_EXEC_ERROR -30
-#define H_FILE_NOT_FOUND -31
-#define H_DIR_NOT_FOUND -32
-#define H_FILE_EXISTS -33
-#define H_TOO_LONG -34
-#define H_INVALID_DATA -35
-#define H_UNIMPLEMENTED -36
+#define H_EXEC_ERROR 33
+#define H_FILE_NOT_FOUND 35
+#define H_DIR_NOT_FOUND 36
+#define H_FILE_EXISTS 46
+#define H_UNIMPLEMENTED 0
+#define H_INVALID_DATA 1
diff --git a/Private/NewKit/KernelCheck.hpp b/Private/NewKit/KernelCheck.hpp
index 7fd6dc2d..5eb81761 100644
--- a/Private/NewKit/KernelCheck.hpp
+++ b/Private/NewKit/KernelCheck.hpp
@@ -32,8 +32,8 @@ enum RUNTIME_CHECK {
RUNTIME_CHECK_INVALID_PRIVILEGE,
RUNTIME_CHECK_PROCESS,
RUNTIME_CHECK_BAD_BEHAVIOR,
- RUNTIME_CHECK_COUNT,
RUNTIME_CHECK_BOOTSTRAP,
+ RUNTIME_CHECK_COUNT,
};
namespace HCore {
diff --git a/Private/NewKit/UserHeap.hpp b/Private/NewKit/UserHeap.hpp
index 1bf1997f..d33ea612 100644
--- a/Private/NewKit/UserHeap.hpp
+++ b/Private/NewKit/UserHeap.hpp
@@ -14,20 +14,25 @@
#include <NewKit/Ref.hpp>
// last-rev 5/11/23
-// file: pool.hpp
-// description: memory pool for user programs.
+// file: UserHeap.hpp
+// description: memory heap for user programs.
-#define kPoolMaxSz 4096
+#define kPoolMaxSz (4096)
#define kPoolMag 0x5500A1
namespace HCore {
-enum {
+typedef enum {
kPoolHypervisor = 0x2,
kPoolShared = 0x4,
kPoolUser = 0x6,
kPoolRw = 0x8,
-};
+} kPoolFlags;
-VoidPtr ke_new_heap(Int32 flags);
-Int32 ke_free_heap(voidPtr pointer);
+/// @brief Allocate a process heap, no zero out is done here.
+/// @param flags
+/// @return The process's heap.
+VoidPtr rt_new_heap(Int32 flags);
+
+
+Int32 rt_free_heap(voidPtr pointer);
} // namespace HCore
diff --git a/Private/Source/PEFCodeManager.cxx b/Private/Source/PEFCodeManager.cxx
index 572b90b3..4c599856 100644
--- a/Private/Source/PEFCodeManager.cxx
+++ b/Private/Source/PEFCodeManager.cxx
@@ -7,7 +7,7 @@
#include <KernelKit/DebugOutput.hpp>
#include <KernelKit/FileManager.hpp>
#include <KernelKit/PEFCodeManager.hxx>
-#include <KernelKit/ProcessManager.hpp>
+#include <KernelKit/ProcessScheduler.hpp>
#include <NewKit/Defines.hpp>
#include <NewKit/ErrorID.hpp>
#include <NewKit/KernelCheck.hpp>
diff --git a/Private/Source/PEFSharedObjectRT.cxx b/Private/Source/PEFSharedObjectRT.cxx
index 2b12ab1c..2284451a 100644
--- a/Private/Source/PEFSharedObjectRT.cxx
+++ b/Private/Source/PEFSharedObjectRT.cxx
@@ -10,7 +10,7 @@
#include <KernelKit/DebugOutput.hpp>
#include <KernelKit/PEF.hpp>
#include <KernelKit/PEFSharedObject.hxx>
-#include <KernelKit/ProcessManager.hpp>
+#include <KernelKit/ProcessScheduler.hpp>
#include <KernelKit/ThreadLocalStorage.hxx>
#include <NewKit/Defines.hpp>
diff --git a/Private/Source/ProcessManager.cxx b/Private/Source/ProcessScheduler.cxx
index f1c1ad27..a4f8dd2f 100644
--- a/Private/Source/ProcessManager.cxx
+++ b/Private/Source/ProcessScheduler.cxx
@@ -9,11 +9,10 @@
/// @brief Process Scheduler API.
/***********************************************************************************/
-#include <KernelKit/ProcessManager.hpp>
+#include <KernelKit/ProcessScheduler.hpp>
#include <KernelKit/SMPManager.hpp>
#include <NewKit/KernelHeap.hpp>
#include <NewKit/String.hpp>
-#include <KernelKit/HError.hpp>
///! bugs = 0
@@ -126,7 +125,7 @@ void Process::Exit(Int32 exit_code) {
kExitCode = exit_code;
if (this->Ring != (Int32)ProcessSelector::kRingDriver) {
- if (this->HeapPtr) ke_free_heap(this->HeapPtr);
+ if (this->HeapPtr) rt_free_heap(this->HeapPtr);
this->HeapPtr = nullptr;
this->HeapCursor = nullptr;
@@ -152,7 +151,7 @@ SizeT ProcessManager::Add(Ref<Process> &process) {
kcout << "ProcessManager::Add(Ref<Process>& process)\r\n";
- process.Leak().HeapPtr = ke_new_heap(kPoolUser | kPoolRw);
+ process.Leak().HeapPtr = rt_new_heap(kPoolUser | kPoolRw);
process.Leak().ProcessId = mTeam.AsArray().Count();
process.Leak().HeapCursor = process.Leak().HeapPtr;
@@ -163,7 +162,7 @@ SizeT ProcessManager::Add(Ref<Process> &process) {
UIntPtr imageStart = reinterpret_cast<UIntPtr>(process.Leak().Image);
- process.Leak().AssignStart(imageStart);
+ process.Leak().SetStart(imageStart);
mTeam.AsArray().Add(process);
diff --git a/Private/Source/SMPManager.cxx b/Private/Source/SMPManager.cxx
index 799f2955..b95eb68d 100644
--- a/Private/Source/SMPManager.cxx
+++ b/Private/Source/SMPManager.cxx
@@ -5,7 +5,7 @@
------------------------------------------- */
#include <ArchKit/ArchKit.hpp>
-#include <KernelKit/ProcessManager.hpp>
+#include <KernelKit/ProcessScheduler.hpp>
#include <KernelKit/SMPManager.hpp>
///! BUGS: 0
diff --git a/Private/Source/Semaphore.cxx b/Private/Source/Semaphore.cxx
index 32051802..75ebfc44 100644
--- a/Private/Source/Semaphore.cxx
+++ b/Private/Source/Semaphore.cxx
@@ -4,7 +4,7 @@
------------------------------------------- */
-#include <KernelKit/ProcessManager.hpp>
+#include <KernelKit/ProcessScheduler.hpp>
#include <KernelKit/Semaphore.hpp>
#include <KernelKit/Timer.hpp>
diff --git a/Private/Source/ThreadLocalStorage.cxx b/Private/Source/ThreadLocalStorage.cxx
index 60d02efd..48e4e0a9 100644
--- a/Private/Source/ThreadLocalStorage.cxx
+++ b/Private/Source/ThreadLocalStorage.cxx
@@ -7,7 +7,7 @@
* ========================================================
*/
-#include <KernelKit/ProcessManager.hpp>
+#include <KernelKit/ProcessScheduler.hpp>
#include <KernelKit/ThreadLocalStorage.hxx>
/// bugs 0
diff --git a/Private/Source/UserHeap.cxx b/Private/Source/UserHeap.cxx
index b9015920..80d6571d 100644
--- a/Private/Source/UserHeap.cxx
+++ b/Private/Source/UserHeap.cxx
@@ -144,7 +144,7 @@ STATIC Boolean ke_check_and_free_heap(const SizeT& index, VoidPtr ptr) {
/// @brief Creates a new pool pointer.
/// @param flags the flags attached to it.
/// @return a pool pointer with selected permissions.
-VoidPtr ke_new_heap(Int32 flags) {
+VoidPtr rt_new_heap(Int32 flags) {
if (!HeapManager::IsEnabled()) return nullptr;
if (HeapManager::Count() > kPoolMaxSz) return nullptr;
@@ -173,7 +173,7 @@ VoidPtr ke_new_heap(Int32 flags) {
/// @brief free a pool pointer.
/// @param ptr The pool pointer to free.
/// @return status code
-Int32 ke_free_heap(VoidPtr ptr) {
+Int32 rt_free_heap(VoidPtr ptr) {
if (!HeapManager::IsEnabled()) return -1;
if (ptr) {
diff --git a/Public/Kits/System.Core/Containers/XIFF.hxx b/Public/Kits/System.Core/Containers/XIFF.hxx
index 28c25bf9..dbfe5b04 100644
--- a/Public/Kits/System.Core/Containers/XIFF.hxx
+++ b/Public/Kits/System.Core/Containers/XIFF.hxx
@@ -31,6 +31,8 @@ struct PACKED XiffHeader final {
DWORD f_SpecificFormatType; // format type. generic
};
+typedef struct XiffHeader XiffHeader;
+
#define kXIFFContainerVideo "XVFF"
#define kXIFFContainerAudio "XAFF"
#define kXIFFContainerInstaller "XnFF"
diff --git a/Public/Kits/System.Core/CoreAPI.hxx b/Public/Kits/System.Core/CoreAPI.hxx
index 1cd48442..66d356d7 100644
--- a/Public/Kits/System.Core/CoreAPI.hxx
+++ b/Public/Kits/System.Core/CoreAPI.hxx
@@ -23,11 +23,16 @@
#define CA_CDECL __attribute__((cdecl))
#define CA_MSCALL __attribute__((ms_abi))
+#define CA_PASCALL CA_STDCALL
+
typedef __UINT8_TYPE__ BYTE;
typedef __UINT16_TYPE__ WORD;
typedef __UINT32_TYPE__ DWORD;
typedef __UINT64_TYPE__ QWORD;
+typedef void* PVOID;
+typedef void VOID;
+
typedef __WCHAR_TYPE__ WCHAR;
typedef WCHAR* PWCHAR;
@@ -46,3 +51,6 @@ typedef WCHAR* PWCHAR;
#ifdef __64x0__
# define _M_64000 5
#endif
+
+#define CA_STATIC static
+#define CA_INLINE inline \ No newline at end of file
diff --git a/Public/Kits/System.Core/HCoreBase.hxx b/Public/Kits/System.Core/HCoreBase.hxx
new file mode 100644
index 00000000..c8a3a99c
--- /dev/null
+++ b/Public/Kits/System.Core/HCoreBase.hxx
@@ -0,0 +1,13 @@
+/** ===========================================
+ (C) Mahrouss Logic
+ ===========================================*/
+
+#pragma once
+
+#include <System.Core/CoreAPI.hxx>
+
+typedef struct HcObject {
+ void(*Release)(void);
+ void(*Invoke)(void);
+ void(*QueryInterface)(void);
+} *HcObjectPtr;
diff --git a/Public/Kits/System.Core/HCoreHeap.hxx b/Public/Kits/System.Core/HCoreHeap.hxx
new file mode 100644
index 00000000..88cbbeb7
--- /dev/null
+++ b/Public/Kits/System.Core/HCoreHeap.hxx
@@ -0,0 +1,13 @@
+/** ===========================================
+ (C) Mahrouss Logic
+ ===========================================*/
+
+#pragma once
+
+#include <System.Core/HCoreBase.hxx>
+
+CA_EXTERN_C HcObjectPtr HcGetProcessHeap(void);
+CA_EXTERN_C void* HcAllocateProcessHeap(HcObjectPtr refObj, long long int sz, int flags);
+CA_EXTERN_C void HcFreeProcessHeap(HcObjectPtr refObj, void* ptr);
+CA_EXTERN_C long long int HcProcessHeapSize(HcObjectPtr refObj, void* ptr);
+CA_EXTERN_C long long int HcProcessHeapExists(HcObjectPtr refObj, void* ptr);
diff --git a/Public/Kits/System.Core/HcHeapAPI.h b/Public/Kits/System.Core/HcHeapAPI.h
deleted file mode 100644
index 20078ce7..00000000
--- a/Public/Kits/System.Core/HcHeapAPI.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/** ===========================================
- (C) Mahrouss Logic
- ===========================================*/
-
-#pragma once
-
-#ifdef __cplusplus
-#define EXTERN_C extern "C"
-#else
-#define EXTERN_C extern
-#endif // ifdef __cplusplus
-
-typedef struct HcObject {
- void(*Release)(void);
- void(*Invoke)(void);
- void(*QueryInterface)(void);
-} *HcObjectPtr;
-
-EXTERN_C HcObjectPtr HcGetProcessHeap(void);
-EXTERN_C void* HcAllocateProcessHeap(HcObjectPtr refObj, long long int sz, int flags);
-EXTERN_C void HcFreeProcessHeap(HcObjectPtr refObj, void* ptr);
-EXTERN_C long long int HcProcessHeapSize(HcObjectPtr refObj, void* ptr);
-EXTERN_C long long int HcProcessHeapExists(HcObjectPtr refObj, void* ptr); \ No newline at end of file
diff --git a/Public/Kits/System.Core/HeapAPI.cxx b/Public/Kits/System.Core/HeapAPI.cxx
index f59e0b1b..2dc7338b 100644
--- a/Public/Kits/System.Core/HeapAPI.cxx
+++ b/Public/Kits/System.Core/HeapAPI.cxx
@@ -5,7 +5,7 @@
------------------------------------------- */
#include <System.Core/HeapAPI.hxx>
-#include <System.Core/HcHeapAPI.h>
+#include <System.Core/hcore.h>
using namespace HCore;
@@ -24,7 +24,10 @@ HHeap* HHeap::Shared() noexcept {
void HHeap::Delete(HHeapPtr me) noexcept { HcFreeProcessHeap(kObjectHeap, me); }
-SizeT HHeap::Size(HHeapPtr me) noexcept { return HcProcessHeapSize(kObjectHeap, me); }
+SizeT HHeap::Size(HHeapPtr me) noexcept {
+ CA_MUST_PASS(me);
+ return HcProcessHeapSize(kObjectHeap, me);
+}
HHeapPtr HHeap::New(const SizeT &sz, const Int32 flags) {
SizeT _sz = sz;
diff --git a/Public/Kits/System.Core/hcore.h b/Public/Kits/System.Core/hcore.h
new file mode 100644
index 00000000..b368b997
--- /dev/null
+++ b/Public/Kits/System.Core/hcore.h
@@ -0,0 +1,15 @@
+/** ===========================================
+ (C) Mahrouss Logic
+ ===========================================*/
+
+#pragma once
+
+/// Core API
+#include <System.Core/HCoreBase.hxx>
+
+/// Process Heap API
+#include <System.Core/HCoreHeap.hxx>
+
+/// File API & Device API.
+
+/// Process & Threading API \ No newline at end of file
diff --git a/Public/Kits/System.Grahpics.GPU/.gitkeep b/Public/Kits/System.Grahpics.GPU/.gitkeep
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/Public/Kits/System.Grahpics.GPU/.gitkeep