/* * Copyright (c) 2021, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Kernel { class PCIDeviceExpansionROMSysFSComponent : public SysFSComponent { public: static NonnullLockRefPtr create(PCIDeviceSysFSDirectory const& device); virtual ErrorOr read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const override; virtual ~PCIDeviceExpansionROMSysFSComponent() {}; virtual StringView name() const override { return "rom"sv; } protected: ErrorOr> try_to_generate_buffer(size_t offset_in_rom, size_t count) const; PCIDeviceExpansionROMSysFSComponent(PCIDeviceSysFSDirectory const& device, size_t option_rom_size); NonnullLockRefPtr m_device; size_t const m_option_rom_size { 0 }; }; }