1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 06:07:34 +00:00

Kernel: Propagate errors in StorageController reset() and shutdown()

These used to signal an error with a boolean return type. We now return
a sensible errno instead.
This commit is contained in:
Julian Offenhäuser 2023-03-14 14:11:31 +01:00 committed by Andreas Kling
parent 9927dab993
commit d1e88a5141
9 changed files with 45 additions and 46 deletions

View file

@ -25,7 +25,7 @@ UNMAP_AFTER_INIT NonnullRefPtr<AHCIController> AHCIController::initialize(PCI::D
return controller;
}
bool AHCIController::reset()
ErrorOr<void> AHCIController::reset()
{
dmesgln_pci(*this, "{}: AHCI controller reset", device_identifier().address());
{
@ -40,7 +40,7 @@ bool AHCIController::reset()
// Note: The HBA is locked or hung if we waited more than 1 second!
while (true) {
if (retry > 1000)
return false;
return Error::from_errno(ETIMEDOUT);
if (!(hba().control_regs.ghc & 1))
break;
microseconds_delay(1000);
@ -67,12 +67,12 @@ bool AHCIController::reset()
m_ports[index] = port;
port->reset();
}
return true;
return {};
}
bool AHCIController::shutdown()
ErrorOr<void> AHCIController::shutdown()
{
TODO();
return Error::from_errno(ENOTIMPL);
}
size_t AHCIController::devices_count() const

View file

@ -30,8 +30,8 @@ public:
virtual StringView device_name() const override { return "AHCI"sv; }
virtual LockRefPtr<StorageDevice> device(u32 index) const override;
virtual bool reset() override;
virtual bool shutdown() override;
virtual ErrorOr<void> reset() override;
virtual ErrorOr<void> shutdown() override;
virtual size_t devices_count() const override;
virtual void start_request(ATADevice const&, AsyncBlockDeviceRequest&) override;
virtual void complete_current_request(AsyncDeviceRequest::RequestResult) override;

View file

@ -20,14 +20,14 @@ UNMAP_AFTER_INIT NonnullLockRefPtr<IDEController> IDEController::initialize()
return adopt_lock_ref(*new IDEController());
}
bool IDEController::reset()
ErrorOr<void> IDEController::reset()
{
TODO();
return Error::from_errno(ENOTIMPL);
}
bool IDEController::shutdown()
ErrorOr<void> IDEController::shutdown()
{
TODO();
return Error::from_errno(ENOTIMPL);
}
size_t IDEController::devices_count() const

View file

@ -22,8 +22,8 @@ public:
virtual ~IDEController() override;
virtual LockRefPtr<StorageDevice> device(u32 index) const override final;
virtual bool reset() override final;
virtual bool shutdown() override final;
virtual ErrorOr<void> reset() override final;
virtual ErrorOr<void> shutdown() override final;
virtual size_t devices_count() const override final;
virtual void start_request(ATADevice const&, AsyncBlockDeviceRequest&) override final;
virtual void complete_current_request(AsyncDeviceRequest::RequestResult) override final;