0
我想編寫一個Linux內核模塊,根據電路板供應商和產品版本做些什麼。如何從Linux內核空間訪問UEFI SMBIOS表?
在用戶空間中,我只能讀取/sys/class/dmi/id/*
下的文件,但它們在內核空間中不可用。
我想我應該從UEFI SMBIOS表中收集數據。我可以在沒有對每個供應商用於保存SMBIOS表的確切內存地址進行硬編碼的情況下執行此操作嗎?
我想編寫一個Linux內核模塊,根據電路板供應商和產品版本做些什麼。如何從Linux內核空間訪問UEFI SMBIOS表?
在用戶空間中,我只能讀取/sys/class/dmi/id/*
下的文件,但它們在內核空間中不可用。
我想我應該從UEFI SMBIOS表中收集數據。我可以在沒有對每個供應商用於保存SMBIOS表的確切內存地址進行硬編碼的情況下執行此操作嗎?
我自己想通了。
有訪問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);
以下是一個DMI API。例如,檢查'dmi_first_match()'。該文檔是從* Documentation/driver-api/firmware/other_interfaces.rst *生成的。 – 0andriy