summaryrefslogtreecommitdiffhomepage
path: root/Kernel/Sources
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/Sources')
-rw-r--r--Kernel/Sources/DriveManager.cxx6
-rw-r--r--Kernel/Sources/FS/NewFS.cxx21
-rw-r--r--Kernel/Sources/HalPageAlloc.cxx28
-rw-r--r--Kernel/Sources/NewFS+FileManager.cxx2
-rw-r--r--Kernel/Sources/User.cxx15
5 files changed, 40 insertions, 32 deletions
diff --git a/Kernel/Sources/DriveManager.cxx b/Kernel/Sources/DriveManager.cxx
index 80df09bf..fae54314 100644
--- a/Kernel/Sources/DriveManager.cxx
+++ b/Kernel/Sources/DriveManager.cxx
@@ -136,14 +136,16 @@ namespace Kernel
{
DriveTrait trait;
- rt_copy_memory((VoidPtr) "/Mount/MainDisk/", trait.fName, rt_string_len("/Mount/MainDisk/"));
- trait.fKind = kMassStorage | kEPMDrive;
+ rt_copy_memory((VoidPtr) "MainDisk", trait.fName, rt_string_len("MainDisk"));
+ trait.fKind = kMassStorage;
trait.fInput = ke_drv_input;
trait.fOutput = ke_drv_output;
trait.fVerify = ke_drv_check_disk;
trait.fDriveKind = io_drive_kind;
+ kcout << "newoskrnl: Construct drive with success.\r";
+
return trait;
}
} // namespace Kernel
diff --git a/Kernel/Sources/FS/NewFS.cxx b/Kernel/Sources/FS/NewFS.cxx
index 23d2867f..83c39e4b 100644
--- a/Kernel/Sources/FS/NewFS.cxx
+++ b/Kernel/Sources/FS/NewFS.cxx
@@ -1029,26 +1029,11 @@ namespace Kernel::Detail
sMountpointInterface.C() = io_construct_drive();
sMountpointInterface.D() = io_construct_drive();
- sMountpointInterface.A().fVerify(&sMountpointInterface.A().fPacket);
-
- Char partitionBlockBuf[sizeof(NFS_ROOT_PARTITION_BLOCK)] = {0};
-
- sMountpointInterface.A().fPacket.fLba = kNewFSStartLba;
- sMountpointInterface.A().fPacket.fPacketContent = partitionBlockBuf;
- sMountpointInterface.A().fPacket.fPacketSize = sizeof(NFS_ROOT_PARTITION_BLOCK);
-
- sMountpointInterface.A().fInput(&sMountpointInterface.A().fPacket);
-
- NFS_ROOT_PARTITION_BLOCK* partBlock =
- reinterpret_cast<NFS_ROOT_PARTITION_BLOCK*>(partitionBlockBuf);
+ kcout << "newoskrnl: Testing drive...\r";
- if (!StringBuilder::Equals(partBlock->Ident, kNewFSIdent))
- {
- kcout << "newoskrnl: New FS Partition is corrupt.\r";
- return false;
- }
+ sMountpointInterface.A().fVerify(&sMountpointInterface.A().fPacket);
- kcout << "newoskrnl: Read partition: " << partBlock->PartitionName << ", with success!\r";
+ kcout << "newoskrnl: Testing drive [ OK ]...\r";
return true;
}
diff --git a/Kernel/Sources/HalPageAlloc.cxx b/Kernel/Sources/HalPageAlloc.cxx
index f22db98a..d1fe83a7 100644
--- a/Kernel/Sources/HalPageAlloc.cxx
+++ b/Kernel/Sources/HalPageAlloc.cxx
@@ -19,11 +19,13 @@ Kernel::Boolean kAllocationInProgress = false;
namespace Kernel
{
+ constexpr auto cVMTMagic = 0xDEEFD00D;
+
namespace HAL
{
namespace Detail
{
- struct VirtualMemoryHeader
+ struct VIRTUAL_MEMORY_HEADER
{
UInt32 Magic;
Boolean Present;
@@ -32,22 +34,28 @@ namespace Kernel
SizeT Size;
};
- struct VirtualMemoryHeaderTraits
+ struct VirtualMemoryHeaderTraits final
{
/// @brief Get next header.
/// @param current
/// @return
- VirtualMemoryHeader* Next(VirtualMemoryHeader* current)
+ VIRTUAL_MEMORY_HEADER* Next(VIRTUAL_MEMORY_HEADER* current)
{
- return current + sizeof(VirtualMemoryHeader) + current->Size;
+ if (current->Magic != cVMTMagic)
+ current->Size = 8196;
+
+ return current + sizeof(VIRTUAL_MEMORY_HEADER) + current->Size;
}
/// @brief Get previous header.
/// @param current
/// @return
- VirtualMemoryHeader* Prev(VirtualMemoryHeader* current)
+ VIRTUAL_MEMORY_HEADER* Prev(VIRTUAL_MEMORY_HEADER* current)
{
- return current - sizeof(VirtualMemoryHeader) - current->Size;
+ if (current->Magic != cVMTMagic)
+ current->Size = 8196;
+
+ return current - sizeof(VIRTUAL_MEMORY_HEADER) - current->Size;
}
};
} // namespace Detail
@@ -64,14 +72,12 @@ namespace Kernel
kAllocationInProgress = true;
- constexpr auto cVMTMagic = 0xDEEFD00D;
-
///! fetch from the start.
- Detail::VirtualMemoryHeader* vmHeader = reinterpret_cast<Detail::VirtualMemoryHeader*>(kKernelVirtualStart);
+ Detail::VIRTUAL_MEMORY_HEADER* vmHeader = reinterpret_cast<Detail::VIRTUAL_MEMORY_HEADER*>(kKernelVMTStart);
Detail::VirtualMemoryHeaderTraits traits;
while (vmHeader->Present &&
- vmHeader->Magic != cVMTMagic)
+ vmHeader->Magic == cVMTMagic)
{
vmHeader = traits.Next(vmHeader);
}
@@ -84,7 +90,7 @@ namespace Kernel
kAllocationInProgress = false;
- return reinterpret_cast<VoidPtr>(vmHeader);
+ return reinterpret_cast<VoidPtr>(vmHeader + sizeof(Detail::VIRTUAL_MEMORY_HEADER));
}
/// @brief Allocate a new page to be used by the OS.
diff --git a/Kernel/Sources/NewFS+FileManager.cxx b/Kernel/Sources/NewFS+FileManager.cxx
index 0018a7ff..b1622f77 100644
--- a/Kernel/Sources/NewFS+FileManager.cxx
+++ b/Kernel/Sources/NewFS+FileManager.cxx
@@ -19,6 +19,8 @@ namespace Kernel
{
MUST_PASS(Detail::fs_init_newfs());
fImpl = new NewFSParser();
+
+ kcout << "We are done here... (NewFilesystemManager).\r";
}
NewFilesystemManager::~NewFilesystemManager()
diff --git a/Kernel/Sources/User.cxx b/Kernel/Sources/User.cxx
index 46dd0d76..ee825400 100644
--- a/Kernel/Sources/User.cxx
+++ b/Kernel/Sources/User.cxx
@@ -58,6 +58,8 @@ namespace Kernel
Bool User::TrySave(const Char* password) noexcept
{
+ kcout << "Trying to save password...\r";
+
SizeT len = rt_string_len(password);
Char* token = new Char[len];
@@ -70,17 +72,28 @@ namespace Kernel
if (NewFilesystemManager::GetMounted())
{
- if (auto dir = NewFilesystemManager::GetMounted()->CreateDirectory("\\Users"))
+ if (auto dir = NewFilesystemManager::GetMounted()->CreateDirectory("\\Users");
+ dir)
+ {
delete dir;
+ }
+ else
+ {
+ delete token;
+ return false;
+ }
auto node = NewFilesystemManager::GetMounted()->Create(kUsersFile);
NewFilesystemManager::GetMounted()->Write(this->fUserName.CData(), node, (VoidPtr)token, this->IsStdUser() ? 0xCF : 0xEF, len);
delete node;
+ delete token;
return true;
}
+ delete token;
+
return false;
}