1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 09:47:35 +00: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:
Liav A 2022-04-01 20:52:37 +03:00 committed by Idan Horowitz
parent d771ca3278
commit 9416dede54
6 changed files with 18 additions and 18 deletions

View file

@ -16,7 +16,7 @@
namespace Kernel { 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(); auto controller = adopt_ref_if_nonnull(new (nothrow) AHCIController(pci_device_identifier)).release_nonnull();
controller->initialize_hba(pci_device_identifier); 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())); 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() : ATAController()
, PCI::Device(pci_device_identifier.address()) , PCI::Device(pci_device_identifier.address())
, m_hba_region(default_hba_region()) , 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(); 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; 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()) { if (!reset()) {
dmesgln("{}: AHCI controller reset failed", pci_address()); dmesgln("{}: AHCI controller reset failed", pci_address());

View file

@ -25,7 +25,7 @@ class AHCIController final : public ATAController
friend class AHCIPort; friend class AHCIPort;
public: 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 ~AHCIController() override;
virtual RefPtr<StorageDevice> device(u32 index) const override; virtual RefPtr<StorageDevice> device(u32 index) const override;
@ -41,14 +41,14 @@ private:
void disable_global_interrupts() const; void disable_global_interrupts() const;
void enable_global_interrupts() const; void enable_global_interrupts() const;
UNMAP_AFTER_INIT explicit AHCIController(PCI::DeviceIdentifier const&); explicit AHCIController(PCI::DeviceIdentifier const&);
UNMAP_AFTER_INIT void initialize_hba(PCI::DeviceIdentifier const&); void initialize_hba(PCI::DeviceIdentifier const&);
AHCI::HBADefinedCapabilities capabilities() const; AHCI::HBADefinedCapabilities capabilities() const;
RefPtr<StorageDevice> device_by_port(u32 index) const; RefPtr<StorageDevice> device_by_port(u32 index) const;
volatile AHCI::PortRegisters& port(size_t port_number) 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; volatile AHCI::HBA& hba() const;
NonnullOwnPtr<Memory::Region> m_hba_region; NonnullOwnPtr<Memory::Region> m_hba_region;

View file

@ -20,7 +20,7 @@
namespace Kernel { 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))); auto port = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) AHCIPort(handler, registers, port_index)));
TRY(port->allocate_resources_and_initialize_ports()); TRY(port->allocate_resources_and_initialize_ports());
@ -53,7 +53,7 @@ ErrorOr<void> AHCIPort::allocate_resources_and_initialize_ports()
return {}; 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_index(port_index)
, m_port_registers(registers) , m_port_registers(registers)
, m_parent_handler(handler) , m_parent_handler(handler)
@ -282,7 +282,7 @@ bool AHCIPort::reset()
return initialize(); return initialize();
} }
bool AHCIPort::initialize_without_reset() UNMAP_AFTER_INIT bool AHCIPort::initialize_without_reset()
{ {
MutexLocker locker(m_lock); MutexLocker locker(m_lock);
SpinlockLocker lock(m_hard_lock); SpinlockLocker lock(m_hard_lock);

View file

@ -37,7 +37,7 @@ class AHCIPort
friend class AHCIController; friend class AHCIController;
public: 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 port_index() const { return m_port_index; }
u32 representative_port_index() const { return port_index() + 1; } u32 representative_port_index() const { return port_index() + 1; }
@ -47,7 +47,7 @@ public:
RefPtr<StorageDevice> connected_device() const { return m_connected_device; } RefPtr<StorageDevice> connected_device() const { return m_connected_device; }
bool reset(); bool reset();
UNMAP_AFTER_INIT bool initialize_without_reset(); bool initialize_without_reset();
void handle_interrupt(); void handle_interrupt();
private: private:
@ -56,7 +56,7 @@ private:
bool is_phy_enabled() const { return (m_port_registers.ssts & 0xf) == 3; } bool is_phy_enabled() const { return (m_port_registers.ssts & 0xf) == 3; }
bool initialize(); 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; ALWAYS_INLINE void clear_sata_error_register() const;

View file

@ -9,7 +9,7 @@
namespace Kernel { 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))); auto port_handler = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) AHCIPortHandler(controller, irq, taken_ports)));
// FIXME: Propagate errors from this method too. // 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) : IRQHandler(irq)
, m_parent_controller(controller) , m_parent_controller(controller)
, m_taken_ports(taken_ports) , m_taken_ports(taken_ports)

View file

@ -31,7 +31,7 @@ class AHCIPortHandler final : public RefCounted<AHCIPortHandler>
friend class AHCIController; friend class AHCIController;
public: 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; virtual ~AHCIPortHandler() override;
RefPtr<StorageDevice> device_at_port(size_t port_index) const; 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); } bool is_responsible_for_port_index(u32 port_index) const { return m_taken_ports.is_set_at(port_index); }
private: 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(); void allocate_resources_and_initialize_ports();