diff options
| author | Amlal El Mahrouss <zka-holder@mahrouss-logic.com> | 2024-10-20 07:07:08 +0000 |
|---|---|---|
| committer | Amlal El Mahrouss <zka-holder@mahrouss-logic.com> | 2024-10-20 07:07:08 +0000 |
| commit | 704879ab7f080ce60bcffda02e3dda6330a4f1fd (patch) | |
| tree | 3970ff78405684f08f01e9e68ebb77a038c28e57 /dev | |
| parent | 9d092dd8a9bff165d6159e9fbedb2e361ff54987 (diff) | |
NeFS: Officialize minimum disk size into the specs.
HPFS: Start implementing it.
UPS: Check PTime, and decrementing it when it isn't our time yet, also added new Subsystem entries.
FSKit: Better documentation and provide 256U instead of only 256.
EBS: Fixed HPFS magic number, which wasn't correctly bound to 8 bytes.
BUILD: Fixed blob.json for epm.asm
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/hpfs/ReadMe.md | 2 | ||||
| -rw-r--r-- | dev/hpfs/epm/blob.json | 4 | ||||
| -rw-r--r-- | dev/hpfs/epm/ebs.i | 2 | ||||
| -rw-r--r-- | dev/hpfs/hpfs_specs.hxx | 19 | ||||
| -rw-r--r-- | dev/hpfs/src/hpfs_main.cxx | 11 | ||||
| -rw-r--r-- | dev/udf/.keep | 0 | ||||
| -rw-r--r-- | dev/zba/BootKit/BootKit.hxx | 4 | ||||
| -rw-r--r-- | dev/zka/FSKit/HPFS.hxx | 10 | ||||
| -rw-r--r-- | dev/zka/FSKit/NeFS.hxx | 2 | ||||
| -rw-r--r-- | dev/zka/HALKit/ARM64/HalKernelMain.cxx | 9 | ||||
| -rw-r--r-- | dev/zka/KernelKit/UserProcessScheduler.hxx | 16 | ||||
| -rw-r--r-- | dev/zka/src/IndexableProperty.cxx | 12 | ||||
| -rw-r--r-- | dev/zka/src/UserProcessScheduler.cxx | 12 |
13 files changed, 74 insertions, 29 deletions
diff --git a/dev/hpfs/ReadMe.md b/dev/hpfs/ReadMe.md index 21fcc961..53778988 100644 --- a/dev/hpfs/ReadMe.md +++ b/dev/hpfs/ReadMe.md @@ -1,4 +1,4 @@ -# High Performance File System +# High Performance File System. Filesystem driver for the HPFS specification. diff --git a/dev/hpfs/epm/blob.json b/dev/hpfs/epm/blob.json index 4ce4fc1c..4b1905b5 100644 --- a/dev/hpfs/epm/blob.json +++ b/dev/hpfs/epm/blob.json @@ -1,6 +1,6 @@ { "compiler_path": "nasm", - "sources_path": ["EPM.asm"], - "output_name": "hpfs.bin", + "sources_path": ["epm.asm"], + "output_name": "bl.bin", "compiler_flags": ["-f bin"] } diff --git a/dev/hpfs/epm/ebs.i b/dev/hpfs/epm/ebs.i index c137b6f4..c486f463 100644 --- a/dev/hpfs/epm/ebs.i +++ b/dev/hpfs/epm/ebs.i @@ -7,7 +7,7 @@ ;; DUMP THIS BLOB TO DISK, WHEN FORMATTING THE SSD. HPFS_EBS_HEADER: - db " HPFS" ;; MAGIC NUMBER OF FILESYSTEM + db " HPFS", 0 ;; MAGIC NUMBER OF FILESYSTEM dw 8 ;; MAGIC NUMBER LENGTH. dq 0 ;; RESERVED 4 dw 0x0100 ;; VERSION diff --git a/dev/hpfs/hpfs_specs.hxx b/dev/hpfs/hpfs_specs.hxx index f04ce63f..851623a4 100644 --- a/dev/hpfs/hpfs_specs.hxx +++ b/dev/hpfs/hpfs_specs.hxx @@ -9,4 +9,21 @@ #pragma once -#define cHPFSVersion 0x0100 +#include <ddk/ddk.h> + +#define kHPFSVersion 0x01000 +#define kHPFSMagic " HPFS" +#define kHPFSMagicLen 8 + +/** @brief Drive type enum. */ +enum +{ + kHPFSInvalidDrive, + kHPFSCDROMDrive, + kHPFSHDDDrive, + kHPFSSSDDrive, + kHPFSUSBDrive, +}; + +/** @brief Explicit Boot Sector structure. */ +struct HPFS_EXPLICIT_BOOT_SECTOR; diff --git a/dev/hpfs/src/hpfs_main.cxx b/dev/hpfs/src/hpfs_main.cxx index 1ab6c653..ce712f2c 100644 --- a/dev/hpfs/src/hpfs_main.cxx +++ b/dev/hpfs/src/hpfs_main.cxx @@ -8,15 +8,20 @@ ------------------------------------------- */ #include <hpfs/hpfs_specs.hxx> -#include <ddk/ddk.h> static DDK_OBJECT_MANIFEST* kIfsObject = nullptr; /** @brief HPFS IFS main module function. */ -int32_t ModuleMain(void) +DK_EXTERN int32_t ModuleMain(void) { auto ifs_handle = KernelGetObject(0, "IFS_OBJECT"); - // TODO: Register this IFS with necessary I/O functions... + + if (ifs_handle == nil) + { + return 1; + } + + /// TODO: Register this IFS with necessary I/O functions... kIfsObject = ifs_handle; diff --git a/dev/udf/.keep b/dev/udf/.keep new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/dev/udf/.keep diff --git a/dev/zba/BootKit/BootKit.hxx b/dev/zba/BootKit/BootKit.hxx index a29316e2..5c2805fc 100644 --- a/dev/zba/BootKit/BootKit.hxx +++ b/dev/zba/BootKit/BootKit.hxx @@ -315,11 +315,11 @@ namespace Boot /// @note A catalog roughly equal to a sector. - constexpr auto cMinimumDiskSize = 4; // at minimum. + constexpr auto cMinimumDiskSize = kNeFSMinimumDiskSize; // at minimum. /// @note also look at EPM headers, for free part blocks. - if (GIB(fDiskDev.GetDiskSize()) < cMinimumDiskSize) + if (fDiskDev.GetDiskSize() < cMinimumDiskSize) { EFI::ThrowError(L"Drive-Too-Tiny", L"Can't format a New Filesystem partition here."); return false; diff --git a/dev/zka/FSKit/HPFS.hxx b/dev/zka/FSKit/HPFS.hxx index b8aebd71..6ff49f1f 100644 --- a/dev/zka/FSKit/HPFS.hxx +++ b/dev/zka/FSKit/HPFS.hxx @@ -9,4 +9,12 @@ #include <NewKit/Defines.hxx>
/// @file HPFS.hxx
-/// @brief HPFS support.
+/// @brief HPFS filesystem support.
+
+#define kHPFSVersion 0x01000
+#define kHPFSMagic " HPFS"
+#define kHPFSMagicLen 8
+
+#define kHPFSMinimumDiskSize (gib_cast(64))
+
+struct HPFS_EXPLICIT_BOOT_SECTOR;
diff --git a/dev/zka/FSKit/NeFS.hxx b/dev/zka/FSKit/NeFS.hxx index d391f5b5..4696df57 100644 --- a/dev/zka/FSKit/NeFS.hxx +++ b/dev/zka/FSKit/NeFS.hxx @@ -30,6 +30,8 @@ default. #define kNeFSInvalidCatalog (-1) #define kNeFSNodeNameLen (256) +#define kNeFSMinimumDiskSize (gib_cast(4)) + #define kNeFSSectorSz (512) #define kNeFSForkDataSz (mib_cast(16)) diff --git a/dev/zka/HALKit/ARM64/HalKernelMain.cxx b/dev/zka/HALKit/ARM64/HalKernelMain.cxx index 706106c0..4e445a21 100644 --- a/dev/zka/HALKit/ARM64/HalKernelMain.cxx +++ b/dev/zka/HALKit/ARM64/HalKernelMain.cxx @@ -23,6 +23,11 @@ EXTERN_C Kernel::Void ke_dll_entrypoint(Kernel::Void); EXTERN_C void hal_init_platform( Kernel::HEL::HANDOVER_INFO_HEADER* HandoverHeader) { + + /************************************************** */ + /* INITIALIZE AND VALIDATE HEADER. */ + /************************************************** */ + kHandoverHeader = HandoverHeader; if (kHandoverHeader->f_Magic != kHandoverMagic && @@ -31,5 +36,9 @@ EXTERN_C void hal_init_platform( return; } + /************************************** */ + /* INITIALIZE BIT MAP. */ + /************************************** */ + while (Yes) {} } diff --git a/dev/zka/KernelKit/UserProcessScheduler.hxx b/dev/zka/KernelKit/UserProcessScheduler.hxx index a83027b2..bd07a88e 100644 --- a/dev/zka/KernelKit/UserProcessScheduler.hxx +++ b/dev/zka/KernelKit/UserProcessScheduler.hxx @@ -99,12 +99,14 @@ namespace Kernel // end of operator overloading. - enum ProcessSubsystemEnum + enum ProcessSubsystemEnum : Int32 { - eProcessSubsystemSecurity, - eProcessSubsystemNative, - eProcessSubsystemInvalid, - eProcessSubsystemCount, + kProcessSubsystemSecurity = 100, + kProcessSubsystemApplication, + kProcessSubsystemService, + kProcessSubsystemDriver, + kProcessSubsystemInvalid = 255, + kProcessSubsystemCount = 4, }; using ProcessSubsystem = ProcessSubsystemEnum; @@ -144,8 +146,8 @@ namespace Kernel const UInt32& GetExitCode() noexcept; public: - Char Name[kProcessLen] = {"PROCESS #0 (TEAM 0)"}; - ProcessSubsystem SubSystem{ProcessSubsystem::eProcessSubsystemInvalid}; + Char Name[kProcessLen] = {"ZKA Process"}; + ProcessSubsystem SubSystem{ProcessSubsystem::kProcessSubsystemInvalid}; User* Owner{nullptr}; HAL::StackFramePtr StackFrame{nullptr}; AffinityKind Affinity{AffinityKind::kStandard}; diff --git a/dev/zka/src/IndexableProperty.cxx b/dev/zka/src/IndexableProperty.cxx index fb3a6313..7595291c 100644 --- a/dev/zka/src/IndexableProperty.cxx +++ b/dev/zka/src/IndexableProperty.cxx @@ -4,17 +4,15 @@ ------------------------------------------- */ -//! @brief Filesystem Indexer. - #include <CompilerKit/CompilerKit.hxx> #include <FSKit/IndexableProperty.hxx> #include <NewKit/MutableArray.hxx> #include <NewKit/Utils.hxx> -/// @brief File Indexer. +/// @brief File indexer API for fast path access. /// BUGS: 0 -#define kMaxLenIndexer 256 +#define kMaxLenIndexer (256U) namespace Kernel { @@ -41,10 +39,10 @@ namespace Kernel } /// @brief Index a file into the indexer instance. - /// @param filename path + /// @param filename filesystem path to access. /// @param filenameLen used bytes in path. /// @param indexer the filesystem indexer. - /// @return none. + /// @return none, check before if indexer can be claimed (using indexer.HasFlag(kIndexerClaimed)). Void fs_index_file(const Char* filename, SizeT filenameLen, IndexableProperty& indexer) { if (!indexer.HasFlag(kIndexerClaimed)) @@ -52,7 +50,7 @@ namespace Kernel indexer.AddFlag(kIndexerClaimed); rt_copy_memory((VoidPtr)indexer.Leak().Path, (VoidPtr)filename, filenameLen); - kcout << "filesystem: index new file: " << filename << endl; + kcout << "FSKit: Indexed new file: " << filename << endl; } } } // namespace Indexer diff --git a/dev/zka/src/UserProcessScheduler.cxx b/dev/zka/src/UserProcessScheduler.cxx index ed2cfa17..d0236578 100644 --- a/dev/zka/src/UserProcessScheduler.cxx +++ b/dev/zka/src/UserProcessScheduler.cxx @@ -441,6 +441,10 @@ namespace Kernel continue; } } + else + { + --process.PTime; + } } kcout << "Scheduled Process Count: " << number(process_index) << endl; @@ -476,9 +480,9 @@ namespace Kernel /// @param process the process reference. /// @retval true can be schedulded. /// @retval false cannot be schedulded. - bool UserProcessHelper::CanBeScheduled(const UserProcess& process) + Bool UserProcessHelper::CanBeScheduled(const UserProcess& process) { - kcout << "Checking process status...\r"; + kcout << "Checking UserProcess status...\r"; if (process.Status == ProcessStatusKind::kFrozen || process.Status == ProcessStatusKind::kDead) @@ -488,7 +492,7 @@ namespace Kernel process.Kind == UserProcess::kExectuableKind) return No; - return Yes; + return process.PTime < 1 && process.Status == ProcessStatusKind::kRunning; } /***********************************************************************************/ @@ -502,7 +506,7 @@ namespace Kernel if (!cProcessScheduler) { cProcessScheduler = mm_new_class<UserProcessScheduler>(); - return cProcessScheduler; + return Yes; } return No; |
