/* * Copyright (c) 2022, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include namespace Kernel { class BIOSSysFSDirectory : public SysFSDirectory { public: virtual StringView name() const override { return "bios"sv; } static NonnullRefPtr must_create(SysFSFirmwareDirectory&); void create_components(); private: explicit BIOSSysFSDirectory(SysFSFirmwareDirectory&); void set_dmi_64_bit_entry_initialization_values(); void set_dmi_32_bit_entry_initialization_values(); void initialize_dmi_exposer(); Optional find_dmi_entry64bit_point(); Optional find_dmi_entry32bit_point(); PhysicalAddress m_dmi_entry_point; PhysicalAddress m_smbios_structure_table; bool m_using_64bit_dmi_entry_point { false }; size_t m_smbios_structure_table_length { 0 }; size_t m_dmi_entry_point_length { 0 }; }; }