7#ifndef INC_DRIVE_MANAGER_H
8#define INC_DRIVE_MANAGER_H
23#define kDriveMaxCount (4U)
24#define kDriveSectorSz (512U)
25#define kDriveInvalidID (-1)
26#define kDriveNameLen (32)
28#define drv_sector_cnt(SIZE, SECTOR_SZ) (((SIZE) + (SECTOR_SZ)) / (SECTOR_SZ))
30#define kDriveHiddenPrefix '~'
130 kout <<
"No such disc letter.\n";
#define kout
Definition DebugOutput.h:189
#define NE_COPY_DEFAULT(KLASS)
Definition Detail.h:17
#define kDriveSectorSz
Definition DriveMgr.h:24
#define kDriveNameLen
Definition DriveMgr.h:26
#define err_local_get()
Definition KPC.h:20
DriveTrait mC
Definition DriveMgr.h:140
DriveTrait mA
Definition DriveMgr.h:140
DriveTraitPtr GetAddressOf(const Int32 &index)
Definition DriveMgr.h:116
@ kDriveIndexA
Definition DriveMgr.h:109
@ kDriveIndexC
Definition DriveMgr.h:111
@ kDriveIndexB
Definition DriveMgr.h:110
@ kDriveIndexD
Definition DriveMgr.h:112
@ kDriveIndexInvalid
Definition DriveMgr.h:113
DriveTrait & B()
Definition DriveMgr.h:102
DriveTrait mD
Definition DriveMgr.h:140
DriveTrait & D()
Definition DriveMgr.h:106
DriveTrait & A()
Definition DriveMgr.h:100
DriveTrait & C()
Definition DriveMgr.h:104
DriveTrait mB
Definition DriveMgr.h:140
Definition DriveMgr.h:166
Void io_detect_drive(DriveTrait &trait)
Void io_detect_drive(DriveTrait &trait)
Definition DriveMgr.cc:153
UPS inline definitions.
Definition Device.h:12
char Char
Definition Config.h:51
void Void
Definition Config.h:87
constexpr KPCError kErrorSuccess
Definition KPC.h:32
DriveTrait io_construct_blank_drive()
Makes a new drive.
Definition DriveMgr.cc:133
@ kGPTDrive
Definition DriveMgr.h:48
@ kEPMDrive
Definition DriveMgr.h:45
@ kMBRDrive
Definition DriveMgr.h:47
@ kInvalidDrive
Definition DriveMgr.h:34
@ kTapeDrive
Definition DriveMgr.h:41
@ kReadOnlyDrive
Storage flags, combine with types.
Definition DriveMgr.h:44
@ kUnformattedDrive
Definition DriveMgr.h:49
@ kMassStorageDrive
Definition DriveMgr.h:38
@ kFloppyDrive
Definition DriveMgr.h:39
@ kVEPMDrive
Definition DriveMgr.h:46
@ kOpticalDrive
Definition DriveMgr.h:40
@ kStorageCount
Definition DriveMgr.h:50
@ kBlockDevice
Storage types, combine with flags.
Definition DriveMgr.h:37
constexpr KPCError kErrorNoSuchDisk
Definition KPC.h:45
DriveTrait * DriveTraitPtr
! drive as a device.
Definition DriveMgr.h:85
UInt64 Lba
Definition Config.h:90
__SIZE_TYPE__ SizeT
Definition Config.h:60
Void io_drv_unimplemented(DriveTrait::DrivePacket *pckt)
Unimplemented drive.
Void io_drv_output(DriveTrait::DrivePacket pckt)
const Char * io_drv_kind(Void)
Gets the drive kind (ATA, SCSI, AHCI...).
Definition DriveMgr.cc:120
__UINT32_TYPE__ UInt32
Definition Config.h:44
void * VoidPtr
Definition Config.h:33
__INT32_TYPE__ Int32
Definition Config.h:38
bool Boolean
Definition Config.h:49
Void io_drv_input(DriveTrait::DrivePacket pckt)
DriveTrait io_construct_main_drive()
Fetches the main drive.
Definition DriveMgr.cc:219
Packet drive (StorageKit compilant.).
Definition DriveMgr.h:60
Char fPacketMime[kDriveNameLen]
packet body.
Definition DriveMgr.h:62
SizeT fPacketSize
identify what we're sending.
Definition DriveMgr.h:63
UInt32 fPacketCRC32
packet size
Definition DriveMgr.h:64
VoidPtr fPacketContent
Definition DriveMgr.h:61
Boolean fPacketReadOnly
Definition DriveMgr.h:67
Boolean fPacketGood
sanity crc, in case if good is set to false
Definition DriveMgr.h:65
Lba fPacketLba
Definition DriveMgr.h:66
Media drive trait type.
Definition DriveMgr.h:54
Void(* fVerify)(DrivePacket &packet)
Definition DriveMgr.h:75
Char fName[kDriveNameLen]
Definition DriveMgr.h:55
SizeT fSectorSz
Definition DriveMgr.h:71
Void(* fOutput)(DrivePacket &packet)
Definition DriveMgr.h:74
UInt32 fKind
Definition DriveMgr.h:56
struct Kernel::DriveTrait::DrivePacket fPacket
Lba fLbaEnd
Definition DriveMgr.h:70
UInt32 fFlags
Definition DriveMgr.h:57
Void(* fInput)(DrivePacket &packet)
Definition DriveMgr.h:73
Lba fLbaStart
Definition DriveMgr.h:70
Void(* fInit)(DrivePacket &packet)
Definition DriveMgr.h:76