diff --git a/Kernel/Storage/IDEController.cpp b/Kernel/Storage/IDEController.cpp index b825523354..fa713b924f 100644 --- a/Kernel/Storage/IDEController.cpp +++ b/Kernel/Storage/IDEController.cpp @@ -68,7 +68,8 @@ void IDEController::complete_current_request(AsyncDeviceRequest::RequestResult) } IDEController::IDEController(PCI::Address address, bool force_pio) - : StorageController(address) + : StorageController() + , PCI::DeviceController(address) { initialize(force_pio); } diff --git a/Kernel/Storage/IDEController.h b/Kernel/Storage/IDEController.h index 1a26e49223..51518ffa21 100644 --- a/Kernel/Storage/IDEController.h +++ b/Kernel/Storage/IDEController.h @@ -37,7 +37,8 @@ namespace Kernel { class AsyncBlockDeviceRequest; -class IDEController final : public StorageController { +class IDEController final : public StorageController + , public PCI::DeviceController { AK_MAKE_ETERNAL public: public: diff --git a/Kernel/Storage/StorageController.h b/Kernel/Storage/StorageController.h index d01a3374a4..fd61dc3307 100644 --- a/Kernel/Storage/StorageController.h +++ b/Kernel/Storage/StorageController.h @@ -42,24 +42,21 @@ namespace Kernel { class AsyncBlockDeviceRequest; class StorageDevice; -class StorageController : public RefCounted - , public PCI::DeviceController { +class StorageController : public RefCounted { AK_MAKE_ETERNAL public: enum class Type : u8 { IDE, NVMe }; + + virtual ~StorageController() = default; + virtual Type type() const = 0; virtual RefPtr device(u32 index) const = 0; virtual size_t devices_count() const = 0; protected: - explicit StorageController(PCI::Address address) - : PCI::DeviceController(address) - { - } - virtual void start_request(const StorageDevice&, AsyncBlockDeviceRequest&) = 0; protected: