zoukankan      html  css  js  c++  java
  • 初始化生成linux sysfs(8)

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正

        天今正式看sysfs_init:

        按照我们面前分析的论理,预备一个FS,应当供提5个部分内容

        1)题标

        2)超级块

        3)目录表

        4)inode表

        5)mnt操作方法

        其实这一步比预备rootfs还要早,而对sysfs初始化,除了也就是说file_systems的针指先是指到sysfs的一个file_system_type结构体,然后才是sysfs的next向指了rootfs.

        有事件,真的不能网细了说,如果说细了就露馅了。红十字会关于郭美美间时的考察就是这样,不敢说细面里说,一旦说多了,逻辑的自我乱紊就涌现了。但是究研代码,还真的往细面里说。

        好,我们先看看题标。

        static struct file_system_type sysfs_fs_type = {

        .name = "sysfs",

        .get_sb = sysfs_get_sb,

        .kill_sb = kill_anon_super,

        };

        第二个,超级块

        sysfs_init--->kern_mount--->kern_mount_data--->vfs_kern_mount--->mount_fs--->.mount-->sysfs_mount--->sget:生成和连接到题标 list_add(&s->s_instances, &type->fs_supers);

        第三个,目录表

        sysfs_init--->kmem_cache_create("sysfs_dir_cache", sizeof(struct sysfs_dirent),0, 0, NULL);请求内存

        第四个,inode表

        sysfs_inode_init-->bdi_init

        第五个,mnt操作方法

        sysfs--->kern_mount--->vfs_kern_mount旁边定义和初始化mnt

        每日一道理
    美丽是平凡的,平凡得让你感觉不到她的存在;美丽是平淡的,平淡得只剩下温馨的回忆;美丽又是平静的,平静得只有你费尽心思才能激起她的涟漪。

        -------------------

        sysfs_init  (kernel/fs/sysfs/mount.c) //初始化的总程序

         --->kmem_cache_create

         --->sysfs_inode_init-->bdi_init(&sysfs_backing_dev_info)/kernel/fs/sysfs/inode.c

         --->register_filesystem(kernel/fs/filesystem.c)这个函数就是把全部注册filesystem结构串成一串,挂到file_systems针指上,面后注册的在串的头后。

         --->kern_mount()--->define成vfs_kern_mount在这个函数中实现superb和dentry、mnt的生成以及初始化

         

        register_filesystem(kernel/fs/filesystem.c)

         --->p = find_filesystem(fs->name, strlen(fs->name));

         

        kern_mount(type) kern_mount_data(type, NULL)

        --->kern_mount_data(struct file_system_type *type, void *data)

            --->vfs_kern_mount(type, MS_KERNMOUNT, type->name, data);

                --->alloc_vfsmnt(name)

                --->mount_fs

                    

        mount_fs

        --->security_sb_copy_data

        --->mount-->sysfs_mount//这里生成sb,有sget函数

        --->security_sb_kern_mount

        --->dget(sb->s_root)

    文章结束给大家分享下程序员的一些笑话语录: 程序员的愿望
      有一天一个程序员见到了上帝.上帝: 小伙子,我可以满足你一个愿望.程序员: 我希望中国国家队能再次打进世界杯.
      上帝: 这个啊!这个不好办啊,你还说下一个吧!
      程序员: 那好!我的下一个愿望是每天都能休息6个小时以上.
      上帝: 还是让中国国家打进世界杯.

  • 相关阅读:
    Django的sitemap
    meibu ddns update command
    nginx笔记
    docker里运行cron的要点笔记
    win2008r2 32位odbc安装笔记
    【转载】利用tasker推送手机短信到企业微信(App或者微信公众号)
    关闭树莓派的优化笔记
    自已编译openweb docker image笔记
    【笔记】元学习专题视频(台大·李宏毅)学习记录
    【教程】基于Ubuntu系统的PyTorch虚拟环境配置
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3043256.html
Copyright © 2011-2022 走看看