vfs_caches_init函数解析
vfs_caches_init函数初始化VFS,下面梳理函数调用流程
start_kernel()-->vfs_caches_init_early();-->dcache_init_early();-->static struct hlist_head *dentry_hashtabl = alloc_large_system_hash("Dentry cache",sizeof(struct hlist_head),dhash_entries,13,HASH_EARLY,&d_hash_shift,&d_hash_mask,0);-->inode_init_early();-->static struct hlist_head *inode_hashtable = alloc_large_system_hash("Inode-cache",sizeof(struct hlist_head),ihash_entries,14,HASH_EARLY,&i_hash_shift,&i_hash_mask,0);-->vfs_caches_init(num_physpages);/*1.kmem_cache用于名字*/-->struct kmem_cache *names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0,SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL);-->dcache_init();/*2.kmem_cache用于缓存dentry目录项*/-->struct kmem_cache *dentry_cache = KMEM_CACHE(dentry,SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|SLAB_MEM_SPREAD);-->inode_init();/*3.kmem_cache用于缓存inode*/-->struct kmem_cache *inode_cachep = kmem_cache_create("inode_cache",sizeof(struct inode),0,(SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|SLAB_MEM_SPREAD),init_once);-->files_init(mempages);/*4.kmem_cache用于缓存file结构体*/-->struct kmem_cache *filp_cachep = kmem_cache_create("filp", sizeof(struct file), 0,SLAB_HWCACHE_ALIGN | SLAB_PANIC, NULL);-->mnt_init();/*5.kmem_cache用于缓存vfsmount结构体*/-->struct kmem_cache *mnt_cache = kmem_cache_create("mnt_cache", sizeof(struct vfsmount),0, SLAB_HWCACHE_ALIGN | SLAB_PANIC, NULL);-->static struct list_head *mount_hashtable =(struct list_head *)__get_free_page(GFP_ATOMIC);/*注册&挂载sysfs虚拟文件系统*/-->sysfs_init()/*6.kmem_cache用于缓存sysfs_dirent结构体*/-->struct kmem_cache *sysfs_dir_cachep = kmem_cache_create("sysfs_dir_cache",/*对应的应该就是"/fs/"跟目录*/ sizeof(struct sysfs_dirent),0, 0, NULL);-->fs_kobj = kobject_create_and_add("fs", NULL);/*注册rootfs虚拟文件系统*/-->init_rootfs();/*挂载rootfs虚拟文件系统*/-->init_mount_tree();-->bdev_cache_init();/*7.kmem_cache用于缓存bdev_inode结构体*/-->struct kmem_cache *bdev_cachep = kmem_cache_create("bdev_cache", sizeof(struct bdev_inode),0, (SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD|SLAB_PANIC),init_once);/*注册的这是啥文件系统啊?*/-->register_filesystem(&bd_type);/*挂载*/-->struct vfsmount *bd_mnt = kern_mount(&bd_type);-->struct super_block *blockdev_superblock = bd_mnt->mnt_sb; /* For writeback *//*字符设备相关的初始化*/-->chrdev_init();
转载于:https://www.cnblogs.com/yangjiguang/p/8445357.html
vfs_caches_init函数解析相关推荐
- oracle rpad mysql_Oracle生成不重复票号与LPAD,RPAD与NEXTVAL函数解析
SELECT TO_CHAR(SYSDATE,'YYMMDD')||LPAD(REFUNDSEQ.NEXTVAL,6,'0') AS RES_ORDER_NO FROM DUAL 该语句拼接 时间 与 ...
- json数据解析_VBA 实践指南 -- Split函数解析Json数据
什么是JSON? JSON(JavaScript Object Notation) 是一种及其轻量级的数据交换格式,它是 ECMAScript (欧洲计算机协会制定的JavaScript规范)的一个子 ...
- C/C++ sizeof函数解析——解决sizeof求结构体大小的问题
C/C++ sizeof函数解析--解决sizeof求结构体大小的问题 参考文章: (1)C/C++ sizeof函数解析--解决sizeof求结构体大小的问题 (2)https://www.cnbl ...
- 【Socket网络编程】12. send()、recv()、sendto() 和 recvfrom() 函数解析
send().recv().sendto()和recvfrom()函数解析 一般情况下,send().recv()在TCP协议下使用,sendto().recvfrom()在UDP协议下使用,也可以在 ...
- main() 函数解析(一)——Linux-0.11 剖析笔记(六)
文章目录 1. 宏定义`_syscall0` 2. `setup.s`读取的参数 3. 读取CMOS实时时钟信息 3.1 `outb_p(value,port)` 3.2 `inb_p(port)` ...
- main 函数解析(二)—— Linux-0.11 学习笔记(六)
main函数解析(二)--Linux-0.11 学习笔记(六) 4.6 blk_dev_init函数 void blk_dev_init(void) {int i;for (i=0 ; i<NR ...
- main函数解析(一)——Linux-0.11 学习笔记(五)
main()函数解析(一)--Linux-0.11 学习笔记(五) 经过了前面的各种铺垫,终于来到了main函数.这篇博客的任务是把init/main.c讲清楚.由于牵扯到很多的函数调用,要想一次就说 ...
- OSTimeTick()函数解析
ucos V2.52 OSTimeTick()函数解析 调用处:os_cpu_a.asm里_OSTickISR 函数所有源文件:os_core.c 代码: void OSTimeTick (void ...
- c++ _int64转字符串_C语言 仿JS的eval函数 解析字符串
C语言 利用后缀表达式解析字符串(符合c98标准,很容易移植到计算器上) 最近用98标准的C语言写了个解析字符串,类似于JavaScript中的eval函数,感觉挺实用(移植到了计算器上,可以画F(X ...
最新文章
- linux下sql查询的使用,sql-server – 如何在Linux上查看SQL Server中的执行计划
- Selenium Web 自动化 - Selenium常用API
- 如何开发一个高性能的redis cluster proxy
- 循环嵌套-[扩展]print函数的结尾处理
- SQL日常维护的语句
- linux下开启dhcp服务器配置,CentOS下DHCP服务器的配置
- 关于软件定义IT基础设施的未来,深信服是这么思考的
- kotlin 复制对象属性_Kotlin 怎么学 ?遇到过哪些坑?
- python做的大型游戏_Python有做大型游戏的潜力吗?
- java string 去掉两边的引号_编写一个简单的java程序
- iOS--地图找房(类似链家、安居客等地图找房)
- R语言与抽样技术学习笔记(Randomize)
- 传感器技术-光电式传感器(学习笔记十)
- 计算机工程学院团总支学生会,凝聚团队力量,展现青春活力——计算机工程学院团总支学生会开展学生干部素质拓展活动...
- canvas画笔自定义笔触
- 过勇 清华计算机系,16位清华学霸的简历—比你牛的人还比你努力,膝盖已跪碎...
- 数据结构课程设计--学生信息管理系统
- 圆角 border-radius
- 计算机组装前工具的准备,计算机组装 必备工具
- 【C语言】结构体-求出学生的平均成绩放在成员ave中