NeKernel dev
Loading...
Searching...
No Matches
AHCI.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
10#include <KernelKit/DriveMgr.h>
11#include <NeKit/OwnPtr.h>
12
13namespace Kernel {
18 public:
19 explicit AHCIDeviceInterface(void (*out)(DeviceInterface* self, IMountpoint* out),
20 void (*in)(DeviceInterface* self, IMountpoint* in));
21
22 virtual ~AHCIDeviceInterface() override;
23
24 public:
27
28 const Char* Name() const override;
29
31
33
34 const UInt32& GetIndex();
35
36 Void SetIndex(const UInt32& drv);
37
38 public:
41
42 private:
45};
46
49} // namespace Kernel
#define NE_DEVICE
Definition DeviceMgr.h:27
Drive Manager.
#define BOOL
Device contract interface, represents an HW device.
Definition DeviceMgr.h:42
ErrorOr class for error handling.
Definition ErrorOr.h:22
Mounted drives interface.
Definition DriveMgr.h:92
Void SetPortsImplemented(const UInt16 &pi)
const Char * Name() const override
AHCIDeviceInterface & operator=(const AHCIDeviceInterface &)=default
AHCIDeviceInterface & operator<<(IMountpoint *Data) override
AHCIDeviceInterface(const AHCIDeviceInterface &)=default
UInt32 fDriveIndex
Definition AHCI.h:44
Void SetIndex(const UInt32 &drv)
virtual ~AHCIDeviceInterface() override
AHCIDeviceInterface(void(*out)(DeviceInterface *self, IMountpoint *out), void(*in)(DeviceInterface *self, IMountpoint *in))
UInt16 fPortsImplemented
Definition AHCI.h:43
AHCIDeviceInterface & operator>>(IMountpoint *Data) override
UPS inline definitions.
Definition Device.h:12
char Char
Definition Config.h:51
void Void
Definition Config.h:87
UInt16 sk_init_ahci_device(BOOL atapi)
Initialize an AHCI device (StorageKit).
Definition AHCI+Generic.cc:535
__UINT16_TYPE__ UInt16
Definition Config.h:40
ErrorOr< AHCIDeviceInterface > sk_acquire_ahci_device(UInt32 drv_index)
Acquires a new AHCI device with drv_index in mind.
Definition AHCI+Generic.cc:591
__UINT32_TYPE__ UInt32
Definition Config.h:44