mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-08 04:15:23 +03:00
Kernel/AHCI: Don't use UNMAP_AFTER_INIT in header files
Instead, declare such methods and functions in the code itself.
This commit is contained in:
parent
d771ca3278
commit
9416dede54
Notes:
sideshowbarker
2024-07-17 09:38:05 +09:00
Author: https://github.com/supercomputer7 Commit: https://github.com/SerenityOS/serenity/commit/9416dede54 Pull-request: https://github.com/SerenityOS/serenity/pull/13416 Reviewed-by: https://github.com/IdanHo ✅ Reviewed-by: https://github.com/awesomekling Reviewed-by: https://github.com/timschumi
@ -16,7 +16,7 @@
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
NonnullRefPtr<AHCIController> AHCIController::initialize(PCI::DeviceIdentifier const& pci_device_identifier)
|
||||
UNMAP_AFTER_INIT NonnullRefPtr<AHCIController> AHCIController::initialize(PCI::DeviceIdentifier const& pci_device_identifier)
|
||||
{
|
||||
auto controller = adopt_ref_if_nonnull(new (nothrow) AHCIController(pci_device_identifier)).release_nonnull();
|
||||
controller->initialize_hba(pci_device_identifier);
|
||||
@ -86,7 +86,7 @@ volatile AHCI::HBA& AHCIController::hba() const
|
||||
return static_cast<volatile AHCI::HBA&>(*(volatile AHCI::HBA*)(m_hba_region->vaddr().as_ptr()));
|
||||
}
|
||||
|
||||
AHCIController::AHCIController(PCI::DeviceIdentifier const& pci_device_identifier)
|
||||
UNMAP_AFTER_INIT AHCIController::AHCIController(PCI::DeviceIdentifier const& pci_device_identifier)
|
||||
: ATAController()
|
||||
, PCI::Device(pci_device_identifier.address())
|
||||
, m_hba_region(default_hba_region())
|
||||
@ -131,14 +131,14 @@ AHCI::HBADefinedCapabilities AHCIController::capabilities() const
|
||||
};
|
||||
}
|
||||
|
||||
NonnullOwnPtr<Memory::Region> AHCIController::default_hba_region() const
|
||||
UNMAP_AFTER_INIT NonnullOwnPtr<Memory::Region> AHCIController::default_hba_region() const
|
||||
{
|
||||
return MM.allocate_kernel_region(PhysicalAddress(PCI::get_BAR5(pci_address())).page_base(), Memory::page_round_up(sizeof(AHCI::HBA)).release_value_but_fixme_should_propagate_errors(), "AHCI HBA", Memory::Region::Access::ReadWrite).release_value();
|
||||
}
|
||||
|
||||
AHCIController::~AHCIController() = default;
|
||||
|
||||
void AHCIController::initialize_hba(PCI::DeviceIdentifier const& pci_device_identifier)
|
||||
UNMAP_AFTER_INIT void AHCIController::initialize_hba(PCI::DeviceIdentifier const& pci_device_identifier)
|
||||
{
|
||||
if (!reset()) {
|
||||
dmesgln("{}: AHCI controller reset failed", pci_address());
|
||||
|
@ -25,7 +25,7 @@ class AHCIController final : public ATAController
|
||||
friend class AHCIPort;
|
||||
|
||||
public:
|
||||
UNMAP_AFTER_INIT static NonnullRefPtr<AHCIController> initialize(PCI::DeviceIdentifier const& pci_device_identifier);
|
||||
static NonnullRefPtr<AHCIController> initialize(PCI::DeviceIdentifier const& pci_device_identifier);
|
||||
virtual ~AHCIController() override;
|
||||
|
||||
virtual RefPtr<StorageDevice> device(u32 index) const override;
|
||||
@ -41,14 +41,14 @@ private:
|
||||
void disable_global_interrupts() const;
|
||||
void enable_global_interrupts() const;
|
||||
|
||||
UNMAP_AFTER_INIT explicit AHCIController(PCI::DeviceIdentifier const&);
|
||||
UNMAP_AFTER_INIT void initialize_hba(PCI::DeviceIdentifier const&);
|
||||
explicit AHCIController(PCI::DeviceIdentifier const&);
|
||||
void initialize_hba(PCI::DeviceIdentifier const&);
|
||||
|
||||
AHCI::HBADefinedCapabilities capabilities() const;
|
||||
RefPtr<StorageDevice> device_by_port(u32 index) const;
|
||||
|
||||
volatile AHCI::PortRegisters& port(size_t port_number) const;
|
||||
UNMAP_AFTER_INIT NonnullOwnPtr<Memory::Region> default_hba_region() const;
|
||||
NonnullOwnPtr<Memory::Region> default_hba_region() const;
|
||||
volatile AHCI::HBA& hba() const;
|
||||
|
||||
NonnullOwnPtr<Memory::Region> m_hba_region;
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
ErrorOr<NonnullRefPtr<AHCIPort>> AHCIPort::create(AHCIPortHandler const& handler, volatile AHCI::PortRegisters& registers, u32 port_index)
|
||||
UNMAP_AFTER_INIT ErrorOr<NonnullRefPtr<AHCIPort>> AHCIPort::create(AHCIPortHandler const& handler, volatile AHCI::PortRegisters& registers, u32 port_index)
|
||||
{
|
||||
auto port = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) AHCIPort(handler, registers, port_index)));
|
||||
TRY(port->allocate_resources_and_initialize_ports());
|
||||
@ -53,7 +53,7 @@ ErrorOr<void> AHCIPort::allocate_resources_and_initialize_ports()
|
||||
return {};
|
||||
}
|
||||
|
||||
AHCIPort::AHCIPort(AHCIPortHandler const& handler, volatile AHCI::PortRegisters& registers, u32 port_index)
|
||||
UNMAP_AFTER_INIT AHCIPort::AHCIPort(AHCIPortHandler const& handler, volatile AHCI::PortRegisters& registers, u32 port_index)
|
||||
: m_port_index(port_index)
|
||||
, m_port_registers(registers)
|
||||
, m_parent_handler(handler)
|
||||
@ -282,7 +282,7 @@ bool AHCIPort::reset()
|
||||
return initialize();
|
||||
}
|
||||
|
||||
bool AHCIPort::initialize_without_reset()
|
||||
UNMAP_AFTER_INIT bool AHCIPort::initialize_without_reset()
|
||||
{
|
||||
MutexLocker locker(m_lock);
|
||||
SpinlockLocker lock(m_hard_lock);
|
||||
|
@ -37,7 +37,7 @@ class AHCIPort
|
||||
friend class AHCIController;
|
||||
|
||||
public:
|
||||
UNMAP_AFTER_INIT static ErrorOr<NonnullRefPtr<AHCIPort>> create(AHCIPortHandler const&, volatile AHCI::PortRegisters&, u32 port_index);
|
||||
static ErrorOr<NonnullRefPtr<AHCIPort>> create(AHCIPortHandler const&, volatile AHCI::PortRegisters&, u32 port_index);
|
||||
|
||||
u32 port_index() const { return m_port_index; }
|
||||
u32 representative_port_index() const { return port_index() + 1; }
|
||||
@ -47,7 +47,7 @@ public:
|
||||
RefPtr<StorageDevice> connected_device() const { return m_connected_device; }
|
||||
|
||||
bool reset();
|
||||
UNMAP_AFTER_INIT bool initialize_without_reset();
|
||||
bool initialize_without_reset();
|
||||
void handle_interrupt();
|
||||
|
||||
private:
|
||||
@ -56,7 +56,7 @@ private:
|
||||
bool is_phy_enabled() const { return (m_port_registers.ssts & 0xf) == 3; }
|
||||
bool initialize();
|
||||
|
||||
UNMAP_AFTER_INIT AHCIPort(AHCIPortHandler const&, volatile AHCI::PortRegisters&, u32 port_index);
|
||||
AHCIPort(AHCIPortHandler const&, volatile AHCI::PortRegisters&, u32 port_index);
|
||||
|
||||
ALWAYS_INLINE void clear_sata_error_register() const;
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
ErrorOr<NonnullRefPtr<AHCIPortHandler>> AHCIPortHandler::create(AHCIController& controller, u8 irq, AHCI::MaskedBitField taken_ports)
|
||||
UNMAP_AFTER_INIT ErrorOr<NonnullRefPtr<AHCIPortHandler>> AHCIPortHandler::create(AHCIController& controller, u8 irq, AHCI::MaskedBitField taken_ports)
|
||||
{
|
||||
auto port_handler = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) AHCIPortHandler(controller, irq, taken_ports)));
|
||||
// FIXME: Propagate errors from this method too.
|
||||
@ -43,7 +43,7 @@ void AHCIPortHandler::allocate_resources_and_initialize_ports()
|
||||
}
|
||||
}
|
||||
|
||||
AHCIPortHandler::AHCIPortHandler(AHCIController& controller, u8 irq, AHCI::MaskedBitField taken_ports)
|
||||
UNMAP_AFTER_INIT AHCIPortHandler::AHCIPortHandler(AHCIController& controller, u8 irq, AHCI::MaskedBitField taken_ports)
|
||||
: IRQHandler(irq)
|
||||
, m_parent_controller(controller)
|
||||
, m_taken_ports(taken_ports)
|
||||
|
@ -31,7 +31,7 @@ class AHCIPortHandler final : public RefCounted<AHCIPortHandler>
|
||||
friend class AHCIController;
|
||||
|
||||
public:
|
||||
UNMAP_AFTER_INIT static ErrorOr<NonnullRefPtr<AHCIPortHandler>> create(AHCIController&, u8 irq, AHCI::MaskedBitField taken_ports);
|
||||
static ErrorOr<NonnullRefPtr<AHCIPortHandler>> create(AHCIController&, u8 irq, AHCI::MaskedBitField taken_ports);
|
||||
virtual ~AHCIPortHandler() override;
|
||||
|
||||
RefPtr<StorageDevice> device_at_port(size_t port_index) const;
|
||||
@ -44,7 +44,7 @@ public:
|
||||
bool is_responsible_for_port_index(u32 port_index) const { return m_taken_ports.is_set_at(port_index); }
|
||||
|
||||
private:
|
||||
UNMAP_AFTER_INIT AHCIPortHandler(AHCIController&, u8 irq, AHCI::MaskedBitField taken_ports);
|
||||
AHCIPortHandler(AHCIController&, u8 irq, AHCI::MaskedBitField taken_ports);
|
||||
|
||||
void allocate_resources_and_initialize_ports();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user