From 7b4bd3577a31d0f0adc7371840642791ae1567f4 Mon Sep 17 00:00:00 2001 From: Amlal Date: Fri, 24 Jan 2025 10:38:36 +0100 Subject: ADD: Open version, with important changes kept out. Signed-off-by: Amlal --- dev/Kernel/src/KernelMain.cc | 102 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 dev/Kernel/src/KernelMain.cc (limited to 'dev/Kernel/src/KernelMain.cc') diff --git a/dev/Kernel/src/KernelMain.cc b/dev/Kernel/src/KernelMain.cc new file mode 100644 index 00000000..7875fa7c --- /dev/null +++ b/dev/Kernel/src/KernelMain.cc @@ -0,0 +1,102 @@ +/* ------------------------------------------- + + Copyright Amlal EL Mahrouss + + File: Main.cxx + Purpose: Main entrypoint of kernel. + +------------------------------------------- */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __ZKA_AUTO_FORMAT__ +namespace Kernel::Detail +{ + /// @brief Filesystem auto formatter, additional checks are also done by the class. + class NeFilesystemInstaller final + { + private: + Kernel::NeFileSystemParser* mNeFS{nullptr}; + Kernel::NeFileSystemJournal mJournal; + + public: + /// @brief wizard constructor. + explicit NeFilesystemInstaller() + { + mNeFS = new Kernel::NeFileSystemParser(); + + if (mNeFS) + { + const SizeT kFolderCount = 13; + const Char* kFolderStr[kFolderCount] = { + "/", "/boot/", "/sys/", "/media/", "/etc/", + "/usr/", "/lib/", "/mnt/", "/sbin/", "/n/", "/dev/", "/run/", "/root/"}; + + for (Kernel::SizeT dir_index = 0UL; dir_index < kFolderCount; ++dir_index) + { + auto catalog_folder = mNeFS->GetCatalog(kFolderStr[dir_index]); + + if (catalog_folder) + { + delete catalog_folder; + catalog_folder = nullptr; + + continue; + } + + catalog_folder = mNeFS->CreateCatalog(kFolderStr[dir_index], 0, + kNeFSCatalogKindDir); + + if (!catalog_folder) + continue; + + delete catalog_folder; + catalog_folder = nullptr; + } + + if (!mJournal.GetJournal(mNeFS)) + mJournal.CreateJournal(mNeFS); + + mJournal.CommitJournal(mNeFS, "NeFS", "NeFS Format System"); + mJournal.ReleaseJournal(); + } + } + + ~NeFilesystemInstaller() + { + if (mNeFS) + delete mNeFS; + + mNeFS = nullptr; + } + + ZKA_COPY_DEFAULT(NeFilesystemInstaller); + }; +} // namespace Kernel::Detail +#endif // ifdef __ZKA_AUTO_FORMAT__ + +/// @brief Kernel entrypoint. +/// @param Void +/// @return Void +EXTERN_C Kernel::Void rtl_kernel_main(Kernel::SizeT argc, char** argv, char** envp, Kernel::SizeT envp_len) +{ +#ifdef __ZKA_AUTO_FORMAT__ + Kernel::NeFS::fs_init_nefs(); + Kernel::Detail::NeFilesystemInstaller installer{}; +#endif // __ZKA_AUTO_FORMAT__ +} -- cgit v1.2.3