diff options
| author | amlal <amlal@el-mahrouss-logic.com> | 2024-03-17 07:25:31 +0100 |
|---|---|---|
| committer | amlal <amlal@el-mahrouss-logic.com> | 2024-03-17 07:25:31 +0100 |
| commit | 45548d516ddf5e88bf80940365d151e1bd69c29f (patch) | |
| tree | f7347078e07a9d524e874f7f6c23622d538064bc /Private/FSKit | |
| parent | a4d4de6913fb7dd54847b0e5a004c3100bc02459 (diff) | |
HCR-14: A series of important fixes and improvements regarding the
kernel.
Signed-off-by: amlal <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'Private/FSKit')
| -rw-r--r-- | Private/FSKit/HCFS.hxx | 11 | ||||
| -rw-r--r-- | Private/FSKit/NewFS.hxx | 106 |
2 files changed, 59 insertions, 58 deletions
diff --git a/Private/FSKit/HCFS.hxx b/Private/FSKit/HCFS.hxx index a9d4013d..90285bd9 100644 --- a/Private/FSKit/HCFS.hxx +++ b/Private/FSKit/HCFS.hxx @@ -12,9 +12,14 @@ #include <FirmwareKit/EPM.hxx> #define kHCFSIdentLen 8 +#define kHCFSIdent " HCFS" #define kHCFSNameLen 256 #define kHCFSPadLen 16 +#define kHCFSFlagDeleted 0xF0 +#define kHCFSFlagUnallocated 0x0F +#define kHCFSFlagCatalog 0xFF + #define kHCFSGuid "@{0771b3c9-b977-440a-a9ca-396b6d3f07b5}" /// @brief HCFS Balanced Tree structure. @@ -32,6 +37,7 @@ typedef struct HCFSBTree final { HCore::Char fReserved[384]; } PACKED HCFSBTree; +/// @brief Catalog file for HCFS. typedef struct HCFSCatalog { HCore::Char fCatalogName[kHCFSNameLen]; HCore::UInt32 fCatalogKind; @@ -48,6 +54,11 @@ typedef struct HCFSCatalog { HCore::Char fReserved[152]; } HCFSCatalog; +#define kHCFSCatalogKindFile 1 +#define kHCFSCatalogKindDirectory 2 +#define kHCFSCatalogKindJunction 3 +#define kHCFSCatalogKindNetwork 4 + enum { kHCFSHardDrive = 0xC0, // Hard Drive kHCFSOpticalDrive = 0x0C, // Blu-Ray/DVD diff --git a/Private/FSKit/NewFS.hxx b/Private/FSKit/NewFS.hxx index e3469e73..63e4a017 100644 --- a/Private/FSKit/NewFS.hxx +++ b/Private/FSKit/NewFS.hxx @@ -31,7 +31,7 @@ #define kNewFSMinimumSectorSz 2048 #define kNewFSIdentLen 8 -#define kNewFSIdent " NEFS" +#define kNewFSIdent " NewFS" #define kNewFSPadLen 16 //! On EPM and GPT disks. @@ -40,6 +40,47 @@ #define kNewFSVersionInteger 0x121 #define kNewFSVerionString "1.2.1" +#define kNewFSCatalogKindFile 1 +#define kNewFSCatalogKindDir 2 +#define kNewFSCatalogKindAlias 3 + +//! shared between network or +//! other filesystems. Export forks as .zip when copying. +#define kNewFSCatalogKindShared 4 + +#define kNewFSCatalogKindResource 5 +#define kNewFSCatalogKindExecutable 6 + +#define kNewFSCatalogKindPage 8 + +#define kNewFSCatalogKindDevice 9 +#define kNewFSCatalogKindLock 10 + +#define kNewFSSeparator '/' + +#define kNewFSUpDir ".." +#define kNewFSRoot "/" + +#define kNewFSLF '\r' +#define kNewFSEOF (-1) + +#define kNewFSBitWidth (sizeof(NewCharType)) +#define kNewFSLbaType (HCore::Lba) + +/// Start After the PM headers, pad 1024 bytes. +#define kNewFSAddressAsLba (1024U) + +#define kResourceTypeDialog 10 +#define kResourceTypeString 11 +#define kResourceTypeMenu 12 + +#define kConfigLen 64 +#define kPartLen 32 + +#define kNewFSFlagDeleted 0xF0 +#define kNewFSFlagUnallocated 0x0F +#define kNewFSFlagCatalog 0xFF + typedef HCore::Char NewCharType; enum { @@ -70,17 +111,6 @@ struct PACKED NewBootBlock final { NewCharType Pad[kNewFSPadLen]; }; -#define kFlagDeleted 0xF0 -#define kFlagUnallocated 0x0F -#define kFlagCatalog 0xFF - -#define kKindCatalog 1 -#define kKindDirectory 2 -#define kKindSymlink 3 -#define kKindPartition 4 -#define kKindDevice 5 -#define kKindNetwork 6 - struct PACKED NewCatalog final { NewCharType Name[kNewFSNodeNameLen]; @@ -90,16 +120,13 @@ struct PACKED NewCatalog final { HCore::Lba FirstFork; HCore::Lba LastFork; - HCore::Lba SiblingRecords[12]; -}; - -#define kNewFSMaxEntries 256 - -struct PACKED NewCatalogRecord final { - HCore::Lba Entries[kNewFSMaxEntries]; + HCore::Lba NextSibling; + HCore::Lba PrevSibling; }; struct PACKED NewFork final { + NewCharType Name[kNewFSNodeNameLen]; + HCore::Int32 Flags; HCore::Int32 Kind; @@ -107,20 +134,13 @@ struct PACKED NewFork final { HCore::Int32 ResourceKind; HCore::Int32 ResourceFlags; - HCore::Lba DataOffset; // Where to look for this data? - HCore::SizeT DataSize; // Data size according using sector count. + HCore::Lba DataOffset; //8 Where to look for this data? + HCore::SizeT DataSize; /// Data size according using sector count. HCore::Lba NextSibling; HCore::Lba PreviousSibling; }; -#define kResourceTypeDialog 10 -#define kResourceTypeString 11 -#define kResourceTypeMenu 12 - -#define kConfigLen 64 -#define kPartLen 32 - struct PACKED NewPartitionBlock final { NewCharType Ident[kNewFSIdentLen]; NewCharType PartitionName[kPartLen]; @@ -142,36 +162,6 @@ struct PACKED NewPartitionBlock final { HCore::Char Pad[kNewFSPadLen]; }; -#define kCatalogKindFile 1 -#define kCatalogKindDir 2 -#define kCatalogKindAlias 3 - -//! shared between network or -//! other filesystems. Export forks as .zip when copying. -#define kCatalogKindShared 4 - -#define kCatalogKindResource 5 -#define kCatalogKindExecutable 6 - -#define kCatalogKindPage 8 - -#define kCatalogKindDevice 9 -#define kCatalogKindLock 10 - -#define kFilesystemSeparator '/' - -#define kFilesystemUpDir ".." -#define kFilesystemRoot "/" - -#define kFilesystemLF '\r' -#define kFilesystemEOF (-1) - -#define kFilesystemBitWidth (sizeof(NewCharType)) -#define kFilesystemLbaType (HCore::Lba) - -/// Start After the PM headers, pad 1024 bytes. -#define kNewFSAddressAsLba (1024U) - namespace HCore { /// /// \name NewFSParser |
