NeKernel dev
Loading...
Searching...
No Matches
ATA.h
Go to the documentation of this file.
1/* ========================================
2
3 Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
4
5======================================== */
6
7#pragma once
8
9#include <BootKit/Device.h>
10#include <modules/ATA/ATA.h>
11
12using namespace Kernel;
13
14class BootDeviceATA final : public Device {
15 public:
16 enum {
19 };
20
21 explicit BootDeviceATA();
22 ~BootDeviceATA() = default;
23
25
26 struct ATATrait final : public Device::Trait {
29 Boolean mErr{false};
30
31 operator bool() { return !mErr; }
32 };
33
34 public:
35 operator bool();
36
39
40 BootDeviceATA& Read(Char* Buf, SizeT SecCount) override;
41 BootDeviceATA& Write(Char* Buf, SizeT SecCount) override;
42
43 ATATrait& Leak() override;
44
45 private:
47};
Definition ATA.h:14
BootDeviceATA & Write(Char *Buf, SizeT SecCount) override
Write Buf into disk.
Definition BootATA.cc:230
@ kPrimary
Definition ATA.h:17
@ kSecondary
Definition ATA.h:18
SizeT GetSectorsCount()
Definition BootATA.cc:260
BootDeviceATA & Read(Char *Buf, SizeT SecCount) override
Read Buf from disk.
Definition BootATA.cc:209
ATATrait & Leak() override
ATA trait getter.
Definition BootATA.cc:253
BootDeviceATA()
ATA Device constructor.
Definition BootATA.cc:191
~BootDeviceATA()=default
SizeT GetDiskSize()
Definition BootATA.cc:264
@ kSectorSize
Definition ATA.h:24
ATATrait mTrait
Definition ATA.h:46
Device()=default
#define ATA_PRIMARY_IO
Definition ATA.h:92
#define ATA_SECONDARY_IO
Definition ATA.h:93
#define kATASectorSize
Definition ATA.h:124
UPS inline definitions.
Definition Device.h:12
char Char
Definition Config.h:51
__UINT16_TYPE__ UInt16
Definition Config.h:40
__SIZE_TYPE__ SizeT
Definition Config.h:60
__UINT8_TYPE__ UInt8
Definition Config.h:55
bool Boolean
Definition Config.h:49
Definition ATA.h:26
UInt16 mBus
Definition ATA.h:27
UInt8 mMaster
Definition ATA.h:28
Boolean mErr
Definition ATA.h:29
Definition Device.h:21