国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

efi的sys文件系統接口

2019-11-09 16:54:51
字體:
來源:轉載
供稿:網友
在driver/firmware/efi/efi.c 中通過subsys_initcall(efisubsys_init);來初始化efisubsysstatic int __init efisubsys_init(void){    int error;    if (!efi_enabled(EFI_BOOT))        return 0;    /* We register the efi directory at /sys/firmware/efi */    efi_kobj = kobject_create_and_add("efi", firmware_kobj);    if (!efi_kobj) {        PR_err("efi: Firmware registration failed./n");        return -ENOMEM;    }    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) {        pr_err("efi: Sysfs attribute export failed with error %d./n",               error);        goto err_unregister;    }    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) {        pr_err("efivars: Subsystem registration failed./n");        goto err_remove_group;    }}在efisubsys_init 中會通過kobject_create_and_add在/sys/firmware/下建立efi的目錄,然后會通過sysfs_create_group來efi_subsys_attr_group groupstatic struct attribute_group efi_subsys_attr_group = {    .attrs = efi_subsys_attrs,    .is_visible = efi_attr_is_visible,};繼續看efi_subsys_attrs static struct attribute *efi_subsys_attrs[] = {    &efi_attr_systab.attr,    &efi_attr_fw_vendor.attr,    &efi_attr_runtime.attr,    &efi_attr_config_table.attr,    &efi_attr_fw_platform_size.attr,    NULL,};在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){    int i, j, ret = 0;    struct efi_runtime_map_entry *entry;    efi_memory_desc_t *md;    if (!efi_enabled(EFI_MEMMAP))        return 0;    map_entries = kzalloc(efi.memmap.nr_map * sizeof(entry), GFP_KERNEL);    if (!map_entries) {        ret = -ENOMEM;        goto out;    }    i = 0;    for_each_efi_memory_desc(md) {        entry = add_sysfs_runtime_map_entry(efi_kobj, i, md);        if (IS_ERR(entry)) {            ret = PTR_ERR(entry);            goto out_add_entry;        }        *(map_entries + i++) = entry;    }    return 0;out_add_entry:    for (j = i - 1; j >= 0; j--) {        entry = *(map_entries + j);        kobject_put(&entry->kobj);    }out:    return ret;}因此實際我們可以看到如下:[root@CentOS efi]# pwd/sys/firmware/efi[root@CentOS efi]# lsefivars  fw_platform_size  systab  vars
上一篇:批處理

下一篇:butterknife使用產生nullable

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呼玛县| 航空| 天水市| 长阳| 保山市| 织金县| 浏阳市| 新民市| 林州市| 长治市| 陵川县| 丹东市| 横山县| 玛曲县| 蒲城县| 西华县| 迁安市| 兰考县| 通道| 中方县| 五台县| 大厂| 澄迈县| 周至县| 丹寨县| 大理市| 中宁县| 七台河市| 南漳县| 萨迦县| 兴宁市| 普格县| 来安县| 元氏县| 栾城县| 修水县| 班戈县| 牟定县| 清原| 名山县| 隆昌县|