efi的sys檔案系統介面

2021-07-26 17:21:47 字數 1439 閱讀 7384

在driver/firmware/efi/efi.c 中通過subsys_initcall(efisubsys_init);來初始化efisubsys

static int __init efisubsys_init(void)

error = generic_ops_register();

if (error)

goto err_put;

if (efi_enabled(efi_runtime_services))

efivar_ssdt_load();

error = sysfs_create_group(efi_kobj, &efi_subsys_attr_group);

if (error)

error = efi_runtime_map_init(efi_kobj);

if (error)

goto err_remove_group;

/* and the standard mountpoint for efivarfs */

error = sysfs_create_mount_point(efi_kobj, "efivars");

if (error)

}在efisubsys_init 中會通過kobject_create_and_add在/sys/firmware/下建立efi的目錄,然後會通過sysfs_create_group來efi_subsys_attr_group group

static struct attribute_group efi_subsys_attr_group = ;

繼續看efi_subsys_attrs

static struct attribute *efi_subsys_attrs = ;

在efisubsys_init 中通過sysfs_create_mount_point 來建立efivars的mountpoint。

而efi_runtime_map_init 則為每一段efi.memmap 建立sys介面,而所有的介面都是放在map_entries 這個list中

int __init efi_runtime_map_init(struct kobject *efi_kobj)

i = 0;

for_each_efi_memory_desc(md)

*(map_entries + i++) = entry;

}return 0;

out_add_entry:

for (j = i - 1; j >= 0; j--)

out:

return ret;

}因此實際我們可以看到如下:

[root@centos efi]# pwd

/sys/firmware/efi

[root@centos efi]# ls

efivars  fw_platform_size  systab  vars

sys 檔案系統下的目錄結構

這個目錄其實跟 proc非常類似,也是乙個虛擬的檔案系統,主要也是記錄不核心 相關的資訊。包括目前已載入的核心模組不核心偵測到的硬體裝置資訊等等。這個目錄同樣丌佔硬碟容量。表 1.sys 下的目錄結構 sys 下的子目錄 所包含的內容 sys devices 這是核心對系統中所有裝置的分層次表達模型...

檔案系統介面

檔案系統介面 1.檔案概念 檔案是記錄在外存上的相關資訊的具有名稱的集合。通常檔案表示程式和資料。資料檔案可以是數字 字元 字元數字或二進位制。檔案可以是自由形式,如文字檔案,也可以是具有嚴格的格式。因此,檔案的概念極為廣泛。1.1檔案屬性 檔案有一定的屬性,這根據系統而有所不同,但是通常都包括如下...

Linux 核心 sys 檔案系統介紹3

常見 sysfs 屬性的功能 使用 sysfs 的關鍵就是掌握這些 sysfs 屬性的用法,下面以一些常見的 sysfs 屬性來展示它的用法 使用裝置 pci 的 sysfs 屬性檔案 ps xfa grep xorg 2001 tty1 ss 2 24 usr bin xorg 0 nr verb...