NeKernel dev
Loading...
Searching...
No Matches
OpenHeFS.h File Reference

OpenHeFS filesystem support. More...

#include <CompilerKit/CompilerKit.h>
#include <KernelKit/DriveMgr.h>
#include <KernelKit/UserMgr.h>
#include <NeKit/Config.h>
#include <NeKit/Crc32.h>
#include <NeKit/KString.h>
#include <hint/CompilerHint.h>

Go to the source code of this file.

Classes

struct  Kernel::HEFS_BOOT_NODE
 OpenHeFS Boot node. More...
struct  Kernel::HEFS_JOURNAL_NODE
 Journal Node structure. More...
struct  Kernel::HEFS_INDEX_NODE
 OpenHeFS index node. More...
struct  Kernel::HEFS_INDEX_NODE_DIRECTORY
 OpenHeFS directory node. More...
class  Kernel::HeFileSystemParser
 OpenHeFS filesystem parser class. More...

Namespaces

namespace  Kernel
 UPS inline definitions.
namespace  Kernel::Detail
 Implementation details namespace.
namespace  Kernel::OpenHeFS

Macros

#define kOpenHeFSVersion   (0x0104)
#define kOpenHeFSMagic   "OpenHeFS"
#define kOpenHeFSMagicLen   (9U)
#define kOpenHeFSBlockLen   (512U)
#define kOpenHeFSFileNameLen   (256U)
#define kOpenHeFSPartNameLen   (128U)
#define kOpenHeFSMinimumDiskSize   (gib_cast(128))
#define kOpenHeFSDefaultVolumeName   u8"OpenHeFS Volume"
#define kOpenHeFSINDStartOffset   (sizeof(HEFS_BOOT_NODE))
#define kOpenHeFSINStartOffset   (sizeof(HEFS_INDEX_NODE_DIRECTORY))
#define kOpenHeFSRootDirectory   "/"
#define kOpenHeFSRootDirectoryU8   u8"/"
#define kOpenHeFSSeparator   '/'
#define kOpenHeFSUpDir   ".."
#define kOpenHeFSRootDirectoryLen   (2U)
#define kOpenHeFSSearchAllStr   u8"*"

Typedefs

typedef UInt64 Kernel::ATime
 Access time type.

Enumerations

enum  : UInt8 {
  kOpenHeFSHardDrive = 0xC0 , kOpenHeFSSolidStateDrive = 0xC1 , kOpenHeFSOpticalDrive = 0x0C , kOpenHeFSMassStorageDevice = 0xCC ,
  kOpenHeFSScsiDrive = 0xC4 , kOpenHeFSFlashDrive = 0xC6 , kOpenHeFSUnknown = 0xFF , kOpenHeFSDriveCount = 8
}
enum  : UInt8 {
  kOpenHeFSStatusUnlocked = 0x18 , kOpenHeFSStatusLocked , kOpenHeFSStatusError , kOpenHeFSStatusInvalid ,
  kOpenHeFSStatusCount
}
enum  : UInt16 {
  kOpenHeFSEncodingFlagsUTF8 = 0x50 , kOpenHeFSEncodingFlagsUTF16 , kOpenHeFSEncodingFlagsUTF32 , kOpenHeFSEncodingFlagsUTF16BE ,
  kOpenHeFSEncodingFlagsUTF16LE , kOpenHeFSEncodingFlagsUTF32BE , kOpenHeFSEncodingFlagsUTF32LE , kOpenHeFSEncodingFlagsUTF8BE ,
  kOpenHeFSEncodingFlagsUTF8LE , kOpenHeFSEncodingFlagsBinary , kOpenHeFSEncodingFlagsCount = 11 , kOpenHeFSFlagsNone = 0 ,
  kOpenHeFSFlagsReadOnly = 0x100 , kOpenHeFSFlagsHidden , kOpenHeFSFlagsSystem , kOpenHeFSFlagsArchive ,
  kOpenHeFSFlagsDevice , kOpenHeFSFlagsCount = 7
}
enum  Kernel::HeFSJournalKind : UInt8 {
  Kernel::kJournalKindInvalid = 0x00 , Kernel::kJournalKindWrite = 0x01 , Kernel::kJournalKindRename = 0x02 , Kernel::kJournalKindDelete = 0x03 ,
  Kernel::kJournalKindFlagEdit = 0x04 , Kernel::kJournalKindCreate = 0x05 , Kernel::kJournalKindCount
}
 This enum defines the opcode of the journal, here mentioned as 'kinds'. More...
enum  { Kernel::kOpenHeFSInvalidColor = 0 , Kernel::kOpenHeFSRed = 100 , Kernel::kOpenHeFSBlack , Kernel::kOpenHeFSColorCount }

Functions

UInt32 Kernel::Detail::hefs_year_get (ATime raw_atime)
 OpenHeFS get year from ATime.
UInt32 Kernel::Detail::hefs_month_get (ATime raw_atime)
 OpenHeFS get month from ATime.
UInt32 Kernel::Detail::hefs_day_get (ATime raw_atime)
 OpenHeFS get day from ATime.
UInt32 Kernel::Detail::hefs_hour_get (ATime raw_atime)
 OpenHeFS get hour from ATime.
UInt32 Kernel::Detail::hefs_minute_get (ATime raw_atime)
 OpenHeFS get minute from ATime.
const CharKernel::Detail::hefs_status_to_string (UInt16 status)
const CharKernel::Detail::hefs_drive_kind_to_string (UInt8 kind)
const CharKernel::Detail::hefs_encoding_to_string (UInt8 encoding)
const CharKernel::Detail::hefs_file_kind_to_string (UInt16 kind)
const CharKernel::Detail::hefs_file_flags_to_string (UInt32 flags)
Boolean Kernel::OpenHeFS::fs_init_openhefs (Void)
 Initialize OpenHeFS inside the main disk.

Variables

constexpr UInt16 kOpenHeFSFileKindRegular = 0x00
constexpr UInt16 kOpenHeFSFileKindDirectory = 0x01
constexpr UInt16 kOpenHeFSFileKindBlock = 0x02
constexpr UInt16 kOpenHeFSFileKindCharacter = 0x03
constexpr UInt16 kOpenHeFSFileKindFIFO = 0x04
constexpr UInt16 kOpenHeFSFileKindSocket = 0x05
constexpr UInt16 kOpenHeFSFileKindSymbolicLink = 0x06
constexpr UInt16 kOpenHeFSFileKindUnknown = 0x07
constexpr UInt16 kOpenHeFSFileKindCount = 0x08
constexpr UInt16 kOpenHeFSSliceCount = 0x10
 OpenHeFS blocks are array containing sparse blocks of data.
constexpr UInt16 kOpenHeFSInvalidVID = 0xFFFF
constexpr ATime Kernel::kOpenHeFSTimeInvalid = 0x0000000000000000
constexpr ATime Kernel::kOpenHeFSTimeMax = 0xFFFFFFFFFFFFFFFF - 1
constexpr UInt32 Kernel::Detail::kOpenHeFSBaseYear = 1970
constexpr UInt32 Kernel::Detail::kOpenHeFSBaseMonth = 1
constexpr UInt32 Kernel::Detail::kOpenHeFSBaseDay = 1
constexpr UInt32 Kernel::Detail::kOpenHeFSBaseHour = 0
constexpr UInt32 Kernel::Detail::kOpenHeFSBaseMinute = 0

Detailed Description

OpenHeFS filesystem support.

Macro Definition Documentation

◆ kOpenHeFSBlockLen

#define kOpenHeFSBlockLen   (512U)

◆ kOpenHeFSDefaultVolumeName

#define kOpenHeFSDefaultVolumeName   u8"OpenHeFS Volume"

◆ kOpenHeFSFileNameLen

#define kOpenHeFSFileNameLen   (256U)

◆ kOpenHeFSINDStartOffset

#define kOpenHeFSINDStartOffset   (sizeof(HEFS_BOOT_NODE))

◆ kOpenHeFSINStartOffset

#define kOpenHeFSINStartOffset   (sizeof(HEFS_INDEX_NODE_DIRECTORY))

◆ kOpenHeFSMagic

#define kOpenHeFSMagic   "OpenHeFS"

◆ kOpenHeFSMagicLen

#define kOpenHeFSMagicLen   (9U)

◆ kOpenHeFSMinimumDiskSize

#define kOpenHeFSMinimumDiskSize   (gib_cast(128))

◆ kOpenHeFSPartNameLen

#define kOpenHeFSPartNameLen   (128U)

◆ kOpenHeFSRootDirectory

#define kOpenHeFSRootDirectory   "/"

◆ kOpenHeFSRootDirectoryLen

#define kOpenHeFSRootDirectoryLen   (2U)

◆ kOpenHeFSRootDirectoryU8

#define kOpenHeFSRootDirectoryU8   u8"/"

◆ kOpenHeFSSearchAllStr

#define kOpenHeFSSearchAllStr   u8"*"

◆ kOpenHeFSSeparator

#define kOpenHeFSSeparator   '/'

◆ kOpenHeFSUpDir

#define kOpenHeFSUpDir   ".."

◆ kOpenHeFSVersion

#define kOpenHeFSVersion   (0x0104)

Enumeration Type Documentation

◆ anonymous enum

anonymous enum : UInt8
Enumerator
kOpenHeFSHardDrive 
kOpenHeFSSolidStateDrive 
kOpenHeFSOpticalDrive 
kOpenHeFSMassStorageDevice 
kOpenHeFSScsiDrive 
kOpenHeFSFlashDrive 
kOpenHeFSUnknown 
kOpenHeFSDriveCount 

◆ anonymous enum

anonymous enum : UInt16
Enumerator
kOpenHeFSEncodingFlagsUTF8 
kOpenHeFSEncodingFlagsUTF16 
kOpenHeFSEncodingFlagsUTF32 
kOpenHeFSEncodingFlagsUTF16BE 
kOpenHeFSEncodingFlagsUTF16LE 
kOpenHeFSEncodingFlagsUTF32BE 
kOpenHeFSEncodingFlagsUTF32LE 
kOpenHeFSEncodingFlagsUTF8BE 
kOpenHeFSEncodingFlagsUTF8LE 
kOpenHeFSEncodingFlagsBinary 
kOpenHeFSEncodingFlagsCount 
kOpenHeFSFlagsNone 
kOpenHeFSFlagsReadOnly 
kOpenHeFSFlagsHidden 
kOpenHeFSFlagsSystem 
kOpenHeFSFlagsArchive 
kOpenHeFSFlagsDevice 
kOpenHeFSFlagsCount 

◆ anonymous enum

anonymous enum : UInt8
Enumerator
kOpenHeFSStatusUnlocked 
kOpenHeFSStatusLocked 
kOpenHeFSStatusError 
kOpenHeFSStatusInvalid 
kOpenHeFSStatusCount 

Variable Documentation

◆ kOpenHeFSFileKindBlock

UInt16 kOpenHeFSFileKindBlock = 0x02
inlineconstexpr

◆ kOpenHeFSFileKindCharacter

UInt16 kOpenHeFSFileKindCharacter = 0x03
inlineconstexpr

◆ kOpenHeFSFileKindCount

UInt16 kOpenHeFSFileKindCount = 0x08
inlineconstexpr

◆ kOpenHeFSFileKindDirectory

UInt16 kOpenHeFSFileKindDirectory = 0x01
inlineconstexpr

◆ kOpenHeFSFileKindFIFO

UInt16 kOpenHeFSFileKindFIFO = 0x04
inlineconstexpr

◆ kOpenHeFSFileKindRegular

UInt16 kOpenHeFSFileKindRegular = 0x00
inlineconstexpr

◆ kOpenHeFSFileKindSocket

UInt16 kOpenHeFSFileKindSocket = 0x05
inlineconstexpr

◆ kOpenHeFSFileKindSymbolicLink

UInt16 kOpenHeFSFileKindSymbolicLink = 0x06
inlineconstexpr

◆ kOpenHeFSFileKindUnknown

UInt16 kOpenHeFSFileKindUnknown = 0x07
inlineconstexpr

◆ kOpenHeFSInvalidVID

UInt16 kOpenHeFSInvalidVID = 0xFFFF
inlineconstexpr

◆ kOpenHeFSSliceCount

UInt16 kOpenHeFSSliceCount = 0x10
inlineconstexpr

OpenHeFS blocks are array containing sparse blocks of data.

The blocks are used to store the data of a file. Each block is a pointer to a block of data on the disk.