/* * Copyright (c) 2023, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Kernel::VirtIO { class PCIeTransportInterruptHandler final : public TransportInterruptHandler , public PCI::IRQHandler { public: static ErrorOr> create(PCIeTransportLink&, VirtIO::Device&, u8 irq); virtual ~PCIeTransportInterruptHandler() override = default; virtual StringView purpose() const override { return "VirtIO PCI IRQ Handler"sv; } private: PCIeTransportInterruptHandler(PCIeTransportLink&, VirtIO::Device&, u8 irq); //^ IRQHandler virtual bool handle_irq(RegisterState const&) override; }; }