。main()
逐步调用构成kernel模块的的初始化部分。
FreeBSD核心探讨(翻译)3
(续上,liangvy.icewolf.leon翻译)
但是,kernel构成的各个模块的初始化子程序一个个的列举出来运行很显然是
不行的。通常是利用时间连表的技能来运行它(ld command)。也就是,程序
是以很多个source分开编译和联结。相同的模块名字就对应于相同的地址来进
行调用。它在时间链表里面自动调节执行。
初始化时候,main()函数要call的模块利用在sys/kernel.h里面定义的宏
SYSINIT()和SYSINIT_KT()进行登记。这样,kernel在link的时候,ld命令就
能够得到那些信息和进行配置列表。这个列表就是kernel的组成模块的初始化
routine的登记。检查source,
就可以找到初始化routine的部分。
如表:
print_caddr_t(copyright) kern/init_main.c
vm_men_init(NULL) vm/vm_init.c
syctl_order(&sysctl_) kern/kern_sysctl.c
kmemnit(NULL) kern/kern_malloc.c
fpu_init(NULL) i386/i386/math_emulate.c
cpu_startup(NULL) i386/i386/machdep.c
gnufpu_init(NULL) miscfs/devfs/devfs_tree.c
...
各个device的major号与处理routine的登记 (major循序号)
...
configure(NULL) i386/i386/autoconf.c
上一页 1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 下一页
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 作者 入门 核心 文件 进行 设备 系统 调用 操作 v-node |
注册
个人空间
