Linux kernel 如何从Linux内核空间访问UEFI SMBIOS表?

Linux kernel 如何从Linux内核空间访问UEFI SMBIOS表?,linux-kernel,uefi,Linux Kernel,Uefi,我想写一个Linux内核模块,它可以根据主板供应商和产品版本进行操作 在userspace中,我可以只读取/sys/class/dmi/id/*,但它们在内核空间中不可用 我想我应该从UEFI SMBIOS表中收集数据。我是否可以在不硬编码每个供应商用于保存SMBIOS表的确切内存地址的情况下执行此操作?我自己找到了答案 有一个图书馆可以访问DMI并获取以下信息: #include <linux/dmi.h> const char *board_vendor, *product_v

我想写一个Linux内核模块,它可以根据主板供应商和产品版本进行操作

在userspace中,我可以只读取
/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);
#包括
const char*电路板供应商,*产品版本;
线路板供应商=dmi\U获取系统信息(dmi\U线路板供应商);
产品版本=dmi\U获取系统信息(dmi\U产品版本);

这是DMI API。例如,检查
dmi\u first\u match()
。文档由文档/驱动程序api/固件/其他接口.rst生成。