mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 14:12:44 +00:00 
			
		
		
		
	Kernel: Untangle StorageController from PCI::DeviceController
This commit is contained in:
		
							parent
							
								
									68c8b52612
								
							
						
					
					
						commit
						2f8b047339
					
				
					 3 changed files with 8 additions and 9 deletions
				
			
		|  | @ -68,7 +68,8 @@ void IDEController::complete_current_request(AsyncDeviceRequest::RequestResult) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| IDEController::IDEController(PCI::Address address, bool force_pio) | IDEController::IDEController(PCI::Address address, bool force_pio) | ||||||
|     : StorageController(address) |     : StorageController() | ||||||
|  |     , PCI::DeviceController(address) | ||||||
| { | { | ||||||
|     initialize(force_pio); |     initialize(force_pio); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -37,7 +37,8 @@ namespace Kernel { | ||||||
| 
 | 
 | ||||||
| class AsyncBlockDeviceRequest; | class AsyncBlockDeviceRequest; | ||||||
| 
 | 
 | ||||||
| class IDEController final : public StorageController { | class IDEController final : public StorageController | ||||||
|  |     , public PCI::DeviceController { | ||||||
|     AK_MAKE_ETERNAL |     AK_MAKE_ETERNAL | ||||||
| public: | public: | ||||||
| public: | public: | ||||||
|  |  | ||||||
|  | @ -42,24 +42,21 @@ namespace Kernel { | ||||||
| 
 | 
 | ||||||
| class AsyncBlockDeviceRequest; | class AsyncBlockDeviceRequest; | ||||||
| class StorageDevice; | class StorageDevice; | ||||||
| class StorageController : public RefCounted<StorageController> | class StorageController : public RefCounted<StorageController> { | ||||||
|     , public PCI::DeviceController { |  | ||||||
|     AK_MAKE_ETERNAL |     AK_MAKE_ETERNAL | ||||||
| public: | public: | ||||||
|     enum class Type : u8 { |     enum class Type : u8 { | ||||||
|         IDE, |         IDE, | ||||||
|         NVMe |         NVMe | ||||||
|     }; |     }; | ||||||
|  | 
 | ||||||
|  |     virtual ~StorageController() = default; | ||||||
|  | 
 | ||||||
|     virtual Type type() const = 0; |     virtual Type type() const = 0; | ||||||
|     virtual RefPtr<StorageDevice> device(u32 index) const = 0; |     virtual RefPtr<StorageDevice> device(u32 index) const = 0; | ||||||
|     virtual size_t devices_count() const = 0; |     virtual size_t devices_count() const = 0; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|     explicit StorageController(PCI::Address address) |  | ||||||
|         : PCI::DeviceController(address) |  | ||||||
|     { |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     virtual void start_request(const StorageDevice&, AsyncBlockDeviceRequest&) = 0; |     virtual void start_request(const StorageDevice&, AsyncBlockDeviceRequest&) = 0; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jean-Baptiste Boric
						Jean-Baptiste Boric