NeKernel dev
Loading...
Searching...
No Matches
NVME.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
12namespace Kernel {
13class NVMEDeviceInterface final NE_DEVICE<IMountpoint*> {
14 public:
15 explicit NVMEDeviceInterface(Void (*out)(DeviceInterface*, IMountpoint* out_packet),
16 Void (*in)(DeviceInterface*, IMountpoint* in_packet),
17 Void (*cleanup)(Void));
18
20
21 public:
23
24 const Char* Name() const override;
25
26 public:
27 OwnPtr<IMountpoint*> operator()(UInt32 dma_low, UInt32 dma_high, SizeT dma_sz);
28
29 private:
30 Void (*fCleanup)(Void) = {nullptr};
31};
32} // namespace Kernel
#define NE_COPY_DEFAULT(KLASS)
Definition Detail.h:17
#define NE_DEVICE
Definition DeviceMgr.h:27
Drive Manager.
Device contract interface, represents an HW device.
Definition DeviceMgr.h:42
Mounted drives interface.
Definition DriveMgr.h:92
NVMEDeviceInterface(Void(*out)(DeviceInterface *, IMountpoint *out_packet), Void(*in)(DeviceInterface *, IMountpoint *in_packet), Void(*cleanup)(Void))
const Char * Name() const override
Void(* fCleanup)(Void)
Definition NVME.h:30
Definition OwnPtr.h:23
UPS inline definitions.
Definition Device.h:12
char Char
Definition Config.h:51
void Void
Definition Config.h:87
__SIZE_TYPE__ SizeT
Definition Config.h:60
__UINT32_TYPE__ UInt32
Definition Config.h:44