diff options
| author | Amlal <amlalelmahrouss@icloud.com> | 2024-12-22 09:59:02 +0100 |
|---|---|---|
| committer | Amlal <amlalelmahrouss@icloud.com> | 2024-12-22 09:59:02 +0100 |
| commit | 81183c95e955a416a5b401b05a903945687b1fad (patch) | |
| tree | 35565ce5593630709a803b04b8fcad06759d12d7 /dev/Kernel/src/KernelMain.cc | |
| parent | bddaafedff871716a0169e9ebf1ada5851970365 (diff) | |
#3 : NeFilesystemInstaller WiP Issue on it.
Diffstat (limited to 'dev/Kernel/src/KernelMain.cc')
| -rw-r--r-- | dev/Kernel/src/KernelMain.cc | 54 |
1 files changed, 36 insertions, 18 deletions
diff --git a/dev/Kernel/src/KernelMain.cc b/dev/Kernel/src/KernelMain.cc index 6907deea..8895814d 100644 --- a/dev/Kernel/src/KernelMain.cc +++ b/dev/Kernel/src/KernelMain.cc @@ -25,32 +25,37 @@ #include <Modules/FB/KWindow.h> #include <KernelKit/Timer.h> +#define kKeCachedName "/System/CacheKernel" + STATIC CG::ML_WINDOW_STRUCT* kKernelWnd = nullptr; namespace Kernel::Detail { /// @brief Filesystem auto formatter, additional checks are also done by the class. - class FilesystemInstaller final + class NeFilesystemInstaller final { - Kernel::NeFileSystemMgr* fNeFS{nullptr}; + Kernel::NeFileSystemMgr* mNeFS{nullptr}; + Kernel::NeFileSystemJournal mJournal; public: /// @brief wizard constructor. - FilesystemInstaller() + explicit NeFilesystemInstaller() { - fNeFS = (Kernel::NeFileSystemMgr*)Kernel::IFilesystemMgr::GetMounted(); + mNeFS = new Kernel::NeFileSystemMgr(); - if (fNeFS && fNeFS->GetParser()) + if (mNeFS) { + mJournal.CreateJournal(mNeFS->GetParser()); + constexpr auto kFolderInfo = "META-XML"; - const auto kFolderCount = 7; - const char* kFolderStr[kFolderCount] = { + const SizeT kFolderCount = 7; + const Char* kFolderStr[kFolderCount] = { "/Boot/", "/System/", "/Support/", "/Applications/", "/Users/", "/Library/", "/Mount/"}; for (Kernel::SizeT dir_index = 0UL; dir_index < kFolderCount; ++dir_index) { - auto catalog_folder = fNeFS->GetParser()->GetCatalog(kFolderStr[dir_index]); + auto catalog_folder = mNeFS->GetParser()->GetCatalog(kFolderStr[dir_index]); if (catalog_folder) { @@ -60,7 +65,7 @@ namespace Kernel::Detail continue; } - catalog_folder = fNeFS->GetParser()->CreateCatalog(kFolderStr[dir_index], 0, + catalog_folder = mNeFS->GetParser()->CreateCatalog(kFolderStr[dir_index], 0, kNeFSCatalogKindDir); NFS_FORK_STRUCT fork_folder{0}; @@ -87,11 +92,16 @@ namespace Kernel::Detail folder_metadata += kFolderStr[dir_index]; folder_metadata += "</p>\r"; + Kernel::KString folder_name(2048); + folder_name += catalog_folder->Name; + + mJournal.Commit(mNeFS->GetParser(), folder_metadata,folder_name); + const Kernel::SizeT kMetaDataSz = kNeFSSectorSz; - fNeFS->GetParser()->CreateFork(catalog_folder, fork_folder); + mNeFS->GetParser()->CreateFork(catalog_folder, fork_folder); - fNeFS->GetParser()->WriteCatalog( + mNeFS->GetParser()->WriteCatalog( catalog_folder, true, (Kernel::VoidPtr)(folder_metadata.CData()), kMetaDataSz, kFolderInfo); @@ -99,17 +109,26 @@ namespace Kernel::Detail catalog_folder = nullptr; } } + + while (1); } - ~FilesystemInstaller() = default; + ~NeFilesystemInstaller() + { + if (mNeFS) + delete mNeFS; + + mNeFS = nullptr; + } - ZKA_COPY_DEFAULT(FilesystemInstaller); + ZKA_COPY_DEFAULT(NeFilesystemInstaller); /// @brief Grab the disk's NewFS reference. /// @return NeFileSystemMgr the filesystem interface - Kernel::NeFileSystemMgr* Leak() + Kernel::NeFileSystemMgr* Leak() noexcept { - return fNeFS; + MUST_PASS(mNeFS); + return mNeFS; } }; } // namespace Kernel::Detail @@ -119,8 +138,7 @@ namespace Kernel::Detail /// @return Void EXTERN_C Kernel::Void rtl_kernel_main(Kernel::SizeT argc, char** argv, char** envp, Kernel::SizeT envp_len) { - Kernel::IFilesystemMgr::Mount(new Kernel::NeFileSystemMgr()); - Kernel::Detail::FilesystemInstaller installer; - + Kernel::Detail::fs_init_newfs(); + Kernel::Detail::NeFilesystemInstaller installer{}; } |
