如何从 Linux 内核 space 访问 UEFI SMBIOS table?

How do I access UEFI SMBIOS table from Linux kernel space?

我想编写一个 Linux 内核模块来根据主板供应商和产品版本执行操作。

在用户space中,我只能读取/sys/class/dmi/id/*下的文件,但它们在内核space中不可用。

我想我应该从 UEFI SMBIOS table 收集数据。我可以不对每个供应商用来保存 SMBIOS 的确切内存地址进行硬编码吗?table?

我自己想出来的

有一个库可以访问 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);