From 2f8b047339fade5a4f93ab1fd02c06eb2e740def Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Boric Date: Mon, 18 Jan 2021 21:40:47 +0100 Subject: [PATCH] Kernel: Untangle StorageController from PCI::DeviceController --- Kernel/Storage/IDEController.cpp | 3 ++- Kernel/Storage/IDEController.h | 3 ++- Kernel/Storage/StorageController.h | 11 ++++------- 3 files changed, 8 insertions(+), 9 deletions(-) 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: