kern/init_main.c
mi_startup(), 171行. 由 locore 呼叫, locore 为 kernel binary 最先被执行
的程式区段. locore 对机器环境进行初始, 准备一个让 kernel 可以
顺利执行的环境, 例如准备一个可以让 gcc compile 的式码执行的
环境. 在 locore 的最後会呼叫, mi_startup(). mi_startup() 利
用 linker 会主动将同一 section 的资料组合成连续区块的特性, 收
集所有 sub-system 的 initial function. 这部分功能由 Macro
SYSINIT(), sys/kernel.h, 225行, 达成. mi_startup 依据收集到
的资料, 依其顺序执行各 sub-system 的 initial function. 各个
sub-system 的执行顺序定义在 sysinit_sub_id, sys/kernel.h, 107行,
mi_startup 从小到大依序执行. 同一 sub-system 若有多个 initial
function, 则由 sysinit_elem_order, sys/kernel.h, 163行, 定
义之次序执行.
推荐阅读
- 如何在一个系统中使用 Linux 和 FreeBSD
- FreeBSD对硬件的支持
- 制作FreeBSD引导盘
- FreeBSD handbook中文版 8 用户和基本的帐户管理
- FreeBSD handbook中文版 14 声卡
- 3 FreeBSD handbook中文版 11 打印 使用打印机
- 送给FreeBSD和UNIX的初学者
- 关于在FreeBSD上安装GD库的问题解决
- 指令版 qmail的安装for FreeBSD
- 2 FreeBSD handbook中文版 11 打印 高级打印机设置 A.过滤器