summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKA/HALKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-08-19 10:14:36 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-08-19 10:14:36 +0200
commit933d1ef6721903895b15c45917a0fc705763fbf5 (patch)
tree1aed4505be011528b6a9799bcd29bbc846eefb4a /dev/ZKA/HALKit
parentda70596895d8135e08f8caac6978117697b4c021 (diff)
[IMP]
+ Fixed big parts of the user manager's code. + Fixed New FS kernel support. + Allocate 2GB of RAM for kernel. - Reported bug to Jira regarding UserManager's TryLogin method. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKA/HALKit')
-rw-r--r--dev/ZKA/HALKit/AMD64/HalKernelMain.cxx23
-rw-r--r--dev/ZKA/HALKit/AMD64/Processor.hxx3
2 files changed, 15 insertions, 11 deletions
diff --git a/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx
index 49ddfa6c..17502b7c 100644
--- a/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx
+++ b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx
@@ -86,10 +86,12 @@ EXTERN_C void hal_init_platform(
}
Kernel::Void hal_real_init(Kernel::Void) noexcept
-{
+{
// reset kAllocationInProgress field to zero.
kAllocationInProgress = false;
+ kKernelVMTStart = kHandoverHeader->f_HeapStart;
+
// get page size.
kKernelVirtualSize = kHandoverHeader->f_VirtualSize;
@@ -215,36 +217,39 @@ Kernel::Void hal_real_init(Kernel::Void) noexcept
kSyscalls[cLastExitInterrupt].Leak().Leak()->fHooked = true;
kSyscalls[cShutdownInterrupt].Leak().Leak()->fHooked = true;
kSyscalls[cRebootInterrupt].Leak().Leak()->fHooked = true;
-
+
Kernel::HAL::hal_system_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr);
Kernel::kcout << "newoskrnl: Creating filesystem and such.\r";
auto fs = new Kernel::NewFilesystemManager();
-
+
MUST_PASS(fs);
MUST_PASS(fs->GetParser());
Kernel::NewFilesystemManager::Mount(fs);
- delete fs->GetParser()->CreateCatalog("\\Users\\", 0, kNewFSCatalogKindDir);
-
- Kernel::kcout << "newoskrnl: Created filesystem and now creating " << kSuperUser << "..." << Kernel::endl;
+ if (auto node = fs->GetParser()->GetCatalog("\\Users\\");
+ !node)
+ {
+ delete fs->GetParser()->CreateCatalog("\\Users\\", 0, kNewFSCatalogKindDir);
+ }
cRoot = new Kernel::User(Kernel::RingKind::kRingSuperUser, kSuperUser);
#ifdef __DEBUG__
- const auto cPassword = "6aa162f3-20f6-4143-92f9-5dd37066aedc";
+ const auto cPassword = "infdev";
#else
const auto cPassword = "password";
#endif
-
+
Kernel::UserManager::The()->fRootUser = cRoot;
Kernel::kcout << "newoskrnl: Root is " << kSuperUser << "." << Kernel::endl;
cRoot->TrySave(cPassword);
-
+
+ /// TODO: Fix this now!
Kernel::UserManager::The()->TryLogIn(cRoot, cPassword);
Kernel::ke_stop(RUNTIME_CHECK_FAILED);
diff --git a/dev/ZKA/HALKit/AMD64/Processor.hxx b/dev/ZKA/HALKit/AMD64/Processor.hxx
index d80a2834..8d9fc1b8 100644
--- a/dev/ZKA/HALKit/AMD64/Processor.hxx
+++ b/dev/ZKA/HALKit/AMD64/Processor.hxx
@@ -40,7 +40,6 @@ EXTERN_C
#define kTaskGate (0b10001100)
#define kGdtCodeSelector (0x08)
#define kGdtUserCodeSelector (0x10)
-#define cHeapStartOffset (0x80000000)
namespace Kernel
{
@@ -341,7 +340,7 @@ EXTERN_C Kernel::Void hal_load_gdt(Kernel::HAL::RegisterGDT ptr);
#define kKernelIdtSize 0x100
#define kKernelInterruptId 0x32
-inline Kernel::VoidPtr kKernelVMTStart = (Kernel::VoidPtr)cHeapStartOffset;
+inline Kernel::VoidPtr kKernelVMTStart = nullptr;
inline Kernel::VoidPtr kKernelVirtualStart = nullptr;
inline Kernel::UIntPtr kKernelVirtualSize = 0UL;