summaryrefslogtreecommitdiffhomepage
path: root/Private/KernelKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-01-27 10:26:31 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-01-27 10:26:31 +0100
commit70e95128b11dbb535e4679cbacb1cbeaa414c822 (patch)
tree42fd94536a54058a39f0c85be99431c6ad1a0cf8 /Private/KernelKit
parent44a081a4442181b208c09c6f748124c9d23b61fd (diff)
Kernel: Improving AMD64 HAL, Add TIBInstall.asm, currently Working on
SMPManager and Bootloader. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Private/KernelKit')
-rw-r--r--Private/KernelKit/FileManager.hpp10
-rw-r--r--Private/KernelKit/ThreadLocalStorage.hxx20
2 files changed, 26 insertions, 4 deletions
diff --git a/Private/KernelKit/FileManager.hpp b/Private/KernelKit/FileManager.hpp
index 52dfb267..311527f9 100644
--- a/Private/KernelKit/FileManager.hpp
+++ b/Private/KernelKit/FileManager.hpp
@@ -77,10 +77,13 @@ namespace hCore
};
+ /**
+ * @brief Child of IFilesystemManager, takes care of managing NewFS disks.
+ */
class NewFilesystemManager final : public IFilesystemManager
{
public:
- NewFilesystemManager();
+ explicit NewFilesystemManager();
~NewFilesystemManager() override;
public:
@@ -113,6 +116,11 @@ namespace hCore
};
+ /**
+ * Usable FileStream
+ * @tparam Encoding file encoding (char, wchar_t...)
+ * @tparam FSClass Filesystem contract who takes care of it.
+ */
template <typename Encoding = char, typename FSClass = NewFilesystemManager>
class FileStream final
{
diff --git a/Private/KernelKit/ThreadLocalStorage.hxx b/Private/KernelKit/ThreadLocalStorage.hxx
index 518adb32..8b3f2c9b 100644
--- a/Private/KernelKit/ThreadLocalStorage.hxx
+++ b/Private/KernelKit/ThreadLocalStorage.hxx
@@ -27,11 +27,25 @@ bool hcore_tls_delete_ptr(T* ptr);
template <typename T, typename... Args>
T* hcore_tls_new_class(Args&&... args);
-//! @brief Cookie Sanity check.
-hCore::Boolean hcore_tls_check(hCore::VoidPtr ptr);
-
typedef char rt_cookie_type[3];
+/// @brief Thread Information Block for Local Storage.
+/// Located in GS on AMD64, Virtual Address 0x10000 (64x0, 32x0, ARM64)
+struct ThreadInformationBlock final
+{
+ hCore::Char Name[255]; // Module Name
+ hCore::UIntPtr StartCode; // Start Address
+ hCore::UIntPtr StartData; // Allocation Heap
+ hCore::UIntPtr StartStack; // Stack Pointer.
+ hCore::Int32 Arch; // Architecture and/or platform.
+ rt_cookie_type Cookie; // Not shown in public header, this is the way we tell something went wrong.
+};
+
+//! @brief Cookie Sanity check.
+hCore::Boolean hcore_tls_check(ThreadInformationBlock* ptr);
+
#include "ThreadLocalStorage.inl"
+// last rev 1/27/24
+
#endif /* ifndef _KERNELKIT_TLS_HPP */