/* ======================================== Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. ======================================== */ #pragma once #include #include namespace Kernel { class NVMEDeviceInterface final NE_DEVICE { public: explicit NVMEDeviceInterface(Void (*out)(DeviceInterface*, IMountpoint* out_packet), Void (*in)(DeviceInterface*, IMountpoint* in_packet), Void (*cleanup)(Void)); ~NVMEDeviceInterface() override; public: NE_COPY_DEFAULT(NVMEDeviceInterface) const Char* Name() const override; public: OwnPtr operator()(UInt32 dma_low, UInt32 dma_high, SizeT dma_sz); private: Void (*fCleanup)(Void) = {nullptr}; }; } // namespace Kernel