20#define kHeFSVersion (0x0103)
21#define kHeFSMagic " HeFS"
22#define kHeFSMagicLen (8)
24#define kHeFSBlockLen (512U)
25#define kHeFSFileNameLen (256U)
26#define kHeFSPartNameLen (128U)
28#define kHeFSMinimumDiskSize (gib_cast(128))
30#define kHeFSDefaultVolumeName u8"HeFS Volume"
32#define kHeFSINDStartOffset (sizeof(HEFS_BOOT_NODE))
33#define kHeFSINStartOffset (sizeof(HEFS_INDEX_NODE_DIRECTORY))
35#define kHeFSSearchAllStr u8"*"
230 return (raw_atime) >> 32;
238 return (raw_atime) >> 24;
246 return (raw_atime) >> 16;
254 return (raw_atime) >> 8;
262 return (raw_atime) &0xFF;
291 return "Solid State Drive";
293 return "Optical Drive";
295 return "Mass Storage Device";
297 return "SCSI/SAS Drive";
299 return "Flash Drive";
334 return "Regular File";
338 return "Block Device";
340 return "Character Device";
346 return "Symbolic Link";
#define _Output
Definition CompilerHint.h:15
#define _Input
Definition CompilerHint.h:14
_Output Bool CreateINode(_Input DriveTrait *drive, _Input const Int32 flags, const Utf8Char *dir, const Utf8Char *name, const UInt8 kind)
_Output Bool INodeDirectoryCtlManip(_Input DriveTrait *drive, _Input const Int32 flags, const Utf8Char *dir, const BOOL delete_or_create)
_Output Bool INodeManip(_Input DriveTrait *drive, VoidPtr block, SizeT block_sz, const Utf8Char *dir, const Utf8Char *name, const UInt8 kind, const BOOL input)
HeFileSystemParser & operator=(const HeFileSystemParser &)=delete
_Output Bool Format(_Input _Output DriveTrait *drive, _Input const Int32 flags, const Utf8Char *part_name)
Make a EPM+HeFS drive out of the disk.
_Output Bool RemoveINodeDirectory(_Input DriveTrait *drive, _Input const Int32 flags, const Utf8Char *dir)
_Output Bool CreateINodeDirectory(_Input DriveTrait *drive, _Input const Int32 flags, const Utf8Char *dir)
_Output Bool INodeCtlManip(_Input DriveTrait *drive, _Input const Int32 flags, const Utf8Char *dir, const Utf8Char *name, const BOOL delete_or_create, const UInt8 kind)
~HeFileSystemParser()=default
HeFileSystemParser & operator=(HeFileSystemParser &&)=delete
_Output Bool DeleteINode(_Input DriveTrait *drive, _Input const Int32 flags, const Utf8Char *dir, const Utf8Char *name, const UInt8 kind)
HeFileSystemParser(HeFileSystemParser &&)=delete
HeFileSystemParser(const HeFileSystemParser &)=delete
HeFileSystemParser()=default
#define BOOL
Definition macros.h:25
#define kHeFSMagicLen
Definition HeFS.h:22
@ kHeFSSolidStateDrive
Definition HeFS.h:44
@ kHeFSHardDrive
Definition HeFS.h:43
@ kHeFSUnknown
Definition HeFS.h:49
@ kHeFSFlashDrive
Definition HeFS.h:48
@ kHeFSOpticalDrive
Definition HeFS.h:45
@ kHeFSScsiDrive
Definition HeFS.h:47
@ kHeFSDriveCount
Definition HeFS.h:50
@ kHeFSMassStorageDevice
Definition HeFS.h:46
constexpr UInt16 kHeFSFileKindRegular
Definition HeFS.h:82
@ kHeFSEncodingFlagsUTF16BE
Definition HeFS.h:65
@ kHeFSFlagsDevice
Definition HeFS.h:78
@ kHeFSFlagsCount
Definition HeFS.h:79
@ kHeFSEncodingFlagsCount
Definition HeFS.h:72
@ kHeFSEncodingFlagsUTF32BE
Definition HeFS.h:67
@ kHeFSEncodingFlagsUTF8LE
Definition HeFS.h:70
@ kHeFSEncodingFlagsUTF8
Definition HeFS.h:62
@ kHeFSFlagsArchive
Definition HeFS.h:77
@ kHeFSFlagsReadOnly
Definition HeFS.h:74
@ kHeFSEncodingFlagsUTF8BE
Definition HeFS.h:69
@ kHeFSFlagsSystem
Definition HeFS.h:76
@ kHeFSFlagsHidden
Definition HeFS.h:75
@ kHeFSEncodingFlagsUTF16
Definition HeFS.h:63
@ kHeFSEncodingFlagsUTF16LE
Definition HeFS.h:66
@ kHeFSFlagsNone
Definition HeFS.h:73
@ kHeFSEncodingFlagsUTF32LE
Definition HeFS.h:68
@ kHeFSEncodingFlagsBinary
Definition HeFS.h:71
@ kHeFSEncodingFlagsUTF32
Definition HeFS.h:64
constexpr UInt16 kHeFSInvalidVID
Definition HeFS.h:97
constexpr UInt16 kHeFSFileKindSocket
Definition HeFS.h:87
constexpr UInt16 kHeFSFileKindDirectory
Definition HeFS.h:83
constexpr UInt16 kHeFSFileKindBlock
Definition HeFS.h:84
@ kHeFSStatusCount
Definition HeFS.h:58
@ kHeFSStatusInvalid
Definition HeFS.h:57
@ kHeFSStatusUnlocked
Definition HeFS.h:54
@ kHeFSStatusLocked
Definition HeFS.h:55
@ kHeFSStatusError
Definition HeFS.h:56
#define kHeFSPartNameLen
Definition HeFS.h:26
constexpr UInt16 kHeFSFileKindUnknown
Definition HeFS.h:89
constexpr UInt16 kHeFSFileKindFIFO
Definition HeFS.h:86
constexpr UInt16 kHeFSFileKindSymbolicLink
Definition HeFS.h:88
constexpr UInt16 kHeFSSliceCount
HeFS blocks are array containing sparse blocks of data.
Definition HeFS.h:95
constexpr UInt16 kHeFSFileKindCharacter
Definition HeFS.h:85
constexpr UInt16 kHeFSFileKindCount
Definition HeFS.h:90
Implementation details namespace.
Definition HeFS.h:224
const Char * hefs_drive_kind_to_string(UInt8 kind) noexcept
Definition HeFS.h:286
UInt32 hefs_month_get(ATime raw_atime) noexcept
HeFS get month from ATime.
Definition HeFS.h:237
constexpr UInt32 kHeFSBaseHour
Definition HeFS.h:268
const Char * hefs_status_to_string(UInt16 status) noexcept
Definition HeFS.h:271
UInt32 hefs_hour_get(ATime raw_atime) noexcept
HeFS get hour from ATime.
Definition HeFS.h:253
UInt32 hefs_year_get(ATime raw_atime) noexcept
HeFS get year from ATime.
Definition HeFS.h:229
constexpr UInt32 kHeFSBaseYear
Definition HeFS.h:265
UInt32 hefs_minute_get(ATime raw_atime) noexcept
HeFS get minute from ATime.
Definition HeFS.h:261
UInt32 hefs_day_get(ATime raw_atime) noexcept
HeFS get day from ATime.
Definition HeFS.h:245
constexpr UInt32 kHeFSBaseDay
Definition HeFS.h:267
const Char * hefs_encoding_to_string(UInt8 encoding) noexcept
Definition HeFS.h:306
const Char * hefs_file_kind_to_string(UInt16 kind) noexcept
Definition HeFS.h:331
constexpr UInt32 kHeFSBaseMonth
Definition HeFS.h:266
const Char * hefs_file_flags_to_string(UInt32 flags) noexcept
Definition HeFS.h:353
constexpr UInt32 kHeFSBaseMinute
Definition HeFS.h:269
Boolean fs_init_hefs(Void) noexcept
Initialize HeFS inside the main disk.
USER_PROCESS inline definitions.
Definition Qr.h:793
char Char
Definition Defines.h:51
void Void
Definition Defines.h:85
UInt64 ATime
Access time type.
Definition HeFS.h:102
constexpr ATime kHeFSTimeMax
Definition HeFS.h:135
int Int32
Definition Defines.h:38
unsigned char UInt8
Definition Defines.h:53
UInt64 Lba
Definition Defines.h:87
__SIZE_TYPE__ SizeT
Definition Defines.h:58
unsigned int UInt32
Definition Defines.h:44
constexpr ATime kHeFSTimeInvalid
Definition HeFS.h:134
void * VoidPtr
Definition Defines.h:33
HeFSJournalKind
This enum defines the opcode of the journal, here mentioned as 'kinds'.
Definition HeFS.h:151
@ kJournalKindInvalid
Definition HeFS.h:152
@ kJournalKindFlagEdit
Definition HeFS.h:156
@ kJournalKindCreate
Definition HeFS.h:157
@ kJournalKindWrite
Definition HeFS.h:153
@ kJournalKindRename
Definition HeFS.h:154
@ kJournalKindCount
Definition HeFS.h:158
@ kJournalKindDelete
Definition HeFS.h:155
char8_t Utf8Char
Definition Defines.h:73
unsigned short UInt16
Definition Defines.h:40
bool Boolean
Definition Defines.h:49
@ kHeFSBlack
Definition HeFS.h:191
@ kHeFSRed
Definition HeFS.h:190
@ kHeFSColorCount
Definition HeFS.h:192
@ kHeFSInvalidColor
Definition HeFS.h:189
__UINT64_TYPE__ UInt64
Definition Defines.h:48
bool Bool
Definition Defines.h:50
Media drive trait type.
Definition DriveMgr.h:54
HeFS Boot node.
Definition HeFS.h:107
UInt64 fEndBlock
Start Blocks range.
Definition HeFS.h:129
UInt32 fVersion
Volume name.
Definition HeFS.h:110
UInt8 fEncoding
Kind of the drive. (Hard Drive, Solid State Drive, Optical Drive, etc).
Definition HeFS.h:117
Char fMagic[kHeFSMagicLen]
Definition HeFS.h:108
UInt64 fStartIND
Encoding of the filesystem. (UTF-8, UTF-16, etc).
Definition HeFS.h:118
UInt64 fStartIN
Virtual Identification Number within an EPM disk. (0xFFFF if not used).
Definition HeFS.h:126
UInt16 fVID
Flags of the disk. (read-only, read-write, etc).
Definition HeFS.h:125
Utf8Char fVolName[kHeFSPartNameLen]
Magic number of the filesystem.
Definition HeFS.h:109
Char fPad[264]
Boot Node's COW journal LBA.
Definition HeFS.h:131
UInt64 fSectorSize
Number of sectors in the filesystem.
Definition HeFS.h:113
UInt32 fChecksum
Size of the sector.
Definition HeFS.h:114
UInt16 fDiskStatus
Size of the disk. (Could be a virtual size, that is not the real size of the disk....
Definition HeFS.h:123
UInt64 fJournalLBA
End Blocks range.
Definition HeFS.h:130
UInt64 fSectorCount
Number of bad sectors in the filesystem.
Definition HeFS.h:112
UInt64 fINDCount
End of the INode directory tree.
Definition HeFS.h:120
UInt64 fEndIN
Start INodes range.
Definition HeFS.h:127
UInt64 fBadSectors
Version of the filesystem.
Definition HeFS.h:111
UInt16 fDiskFlags
Status of the disk. (locked, unlocked, error, invalid).
Definition HeFS.h:124
UInt64 fDiskSize
Number of leafs in the INode tree.
Definition HeFS.h:121
UInt64 fEndIND
Start of the INode directory tree.
Definition HeFS.h:119
UInt64 fStartBlock
End INodes range.
Definition HeFS.h:128
UInt8 fDiskKind
Checksum of the boot node.
Definition HeFS.h:115
HeFS directory node.
Definition HeFS.h:198
Lba fNext
Color of the node. (Red or Black).
Definition HeFS.h:218
UInt8 fColor
Start of the index node.
Definition HeFS.h:217
UInt32 fEntryCount
Definition HeFS.h:203
UInt32 fMode
User ID and Group ID of the file.
Definition HeFS.h:209
UInt16 fReserved
File flags.
Definition HeFS.h:202
Lba fParent
Definition HeFS.h:218
ATime fModified
Definition HeFS.h:206
ATime fAccessed
Definition HeFS.h:206
UInt32 fFlags
Directory path as FNV hash.
Definition HeFS.h:201
Char fPad[285]
Red-black tree pointers.
Definition HeFS.h:220
ATime fCreated
Checksum of the file, index node checksum.
Definition HeFS.h:206
UInt64 fHashPath
Definition HeFS.h:199
UInt32 fChecksum
Entry Count of this directory inode.
Definition HeFS.h:204
Lba fChild
Definition HeFS.h:218
Lba fPrev
Definition HeFS.h:218
ATime fDeleted
Definition HeFS.h:207
UInt64 fINSlices[kHeFSSliceCount]
File mode. (read, write, execute, etc).
Definition HeFS.h:215
UInt32 fGID
Definition HeFS.h:208
UInt32 fUID
File timestamps and allocation status.
Definition HeFS.h:208
HeFS index node.
Definition HeFS.h:165
UInt32 fChecksum
File size.
Definition HeFS.h:171
ATime fModified
Definition HeFS.h:176
UInt32 fUID
File timestamps.
Definition HeFS.h:177
UInt32 fOffsetSliceHigh
Definition HeFS.h:183
UInt32 fGID
Definition HeFS.h:177
ATime fCreated
Is this a symbolic link? (if yes, the fName is the path to the file and blocklinkstart and end contai...
Definition HeFS.h:176
ATime fAccessed
Definition HeFS.h:176
Boolean fSymLink
Checksum.
Definition HeFS.h:173
UInt32 fOffsetSliceLow
File mode. (read, write, execute, etc).
Definition HeFS.h:182
UInt32 fSize
File kind. (Regular, Directory, Block, Character, FIFO, Socket, Symbolic Link, Unknown).
Definition HeFS.h:170
ATime fDeleted
Definition HeFS.h:176
UInt32 fFlags
File name.
Definition HeFS.h:167
UInt64 fHashPath
Definition HeFS.h:166
UInt32 fMode
User ID and Group ID of the file.
Definition HeFS.h:178
UInt16 fKind
File flags.
Definition HeFS.h:168
Char fPad[437]
Definition HeFS.h:185
Journal Node structure.
Definition HeFS.h:142
UInt64 fStatus
Definition HeFS.h:144
UInt64 fHashPath
Definition HeFS.h:143
UInt8 fPad[487]
Definition HeFS.h:147
UInt64 fCopyElem
Definition HeFS.h:145
UInt8 fCopyKind
Definition HeFS.h:146