【发布时间】:2013-12-26 16:18:49
【问题描述】:
我正在研究 Linux UEFI。我想通过我的驱动程序代码访问 efi 变量。 目前我正在寻找像 efi.get_variable() 这样的 linux/efi.h API。 但我不知道如何从我的驱动程序代码中调用这些 API。
struct efi efi1;
efi_init();
efi_char16_t *name = (efi_char16_t *)"Boot001";
efi_guid_t *vendor = (efi_guid_t *)"8be4df61-93ca-11d2-aa0d-00e098032b8c";
u32 *attr = (u32 *)0x7;
unsigned long data_size = 1024;
void *data = NULL;
printk("\n Showing efi info \n");
stat = efi1.get_variable(name,vendor,attr,&data_size,data);
使用此代码,我得到了 NULL 数据值。 那么你能建议我该怎么做吗?或任何修改?
【问题讨论】:
-
您确定可以将
char *转换为efi_guid_t *吗?u32 *attr = (u32 *)0x7;看起来非常非常错误。在初始化之前,您还在使用efi1。 -
此外,我认为您无需致电
efi_init- 这已在启动时完成。 -
@tangrs ,我对如何初始化 efi1 并访问这些变量感到困惑,所以你能建议任何修改吗?
标签: linux-kernel linux-device-driver efi uefi