Как получить доступ к таблице UEFI SMBIOS из пространства ядра Linux?

Я хочу написать модуль ядра Linux, который будет работать в зависимости от производителя платы и версии продукта.

В пользовательском пространстве я мог просто читать файлы под /sys/class/dmi/id/*, но они недоступны в пространстве ядра.

Я думаю, что мне следует собирать данные из таблицы UEFI SMBIOS. Могу ли я сделать это без жесткого указания точного адреса памяти, который каждый поставщик использует для сохранения таблицы SMBIOS?


person lseki    schedule 26.07.2017    source источник
comment
Вот DMI API для этого. Проверьте, например, dmi_first_match(). Документация создается из Documentation/driver-api/firmware/other_interfaces.rst.   -  person 0andriy    schedule 26.07.2017


Ответы (1)


Я разобрался сам.

Существует библиотека для доступа к DMI и получения этой информации:

#include <linux/dmi.h>

const char *board_vendor, *product_version;
board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR);
product_version = dmi_get_system_info(DMI_PRODUCT_VERSION);
person lseki    schedule 29.07.2017