/* * Copyright (c) 2022, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include #include #include namespace Kernel { UNMAP_AFTER_INIT NonnullRefPtr SMBIOSExposedTable::must_create(PhysicalAddress smbios_structure_table, size_t smbios_structure_table_length) { return adopt_ref(*new (nothrow) SMBIOSExposedTable(smbios_structure_table, smbios_structure_table_length)); } UNMAP_AFTER_INIT SMBIOSExposedTable::SMBIOSExposedTable(PhysicalAddress smbios_structure_table, size_t smbios_structure_table_length) : BIOSSysFSComponent() , m_smbios_structure_table(smbios_structure_table) , m_smbios_structure_table_length(smbios_structure_table_length) { } ErrorOr> SMBIOSExposedTable::try_to_generate_buffer() const { auto dmi_blob = TRY(Memory::map_typed((m_smbios_structure_table), m_smbios_structure_table_length)); return KBuffer::try_create_with_bytes(Span { dmi_blob.ptr(), m_smbios_structure_table_length }); } }