diff options
| author | Amlal <amlal.elmahrouss@icloud.com> | 2025-01-24 10:38:36 +0100 |
|---|---|---|
| committer | Amlal <amlal.elmahrouss@icloud.com> | 2025-01-24 10:38:36 +0100 |
| commit | 7b4bd3577a31d0f0adc7371840642791ae1567f4 (patch) | |
| tree | 1a8afc973aaa739d0d763315cad2fd376d1cea9c /dev/Kernel/src/KernelMain.cc | |
ADD: Open version, with important changes kept out.
Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/src/KernelMain.cc')
| -rw-r--r-- | dev/Kernel/src/KernelMain.cc | 102 |
1 files changed, 102 insertions, 0 deletions
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 <KernelKit/PE.h> +#include <ArchKit/ArchKit.h> +#include <CompilerKit/Detail.h> +#include <FirmwareKit/Handover.h> +#include <KernelKit/FileMgr.h> +#include <KernelKit/Heap.h> +#include <KernelKit/PEF.h> +#include <KernelKit/PEFCodeMgr.h> +#include <KernelKit/UserProcessScheduler.h> +#include <KernelKit/Heap.h> +#include <NewKit/Json.h> +#include <NewKit/KString.h> +#include <NewKit/Utils.h> +#include <KernelKit/CodeMgr.h> +#include <CFKit/Property.h> +#include <KernelKit/Timer.h> + +#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, "<LOG_XML><FS>NeFS</FS></LOG_XML>", "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__ +} |
