Linux中的late_initcall机制是内核初始化时非常重要的一个环节。late_initcall机制是Linux内核启动时执行的一个函数,它在内核初始化的最后阶段被调用,用来进行一些系统级别的初始化操作。 late_initcall机制的作用是确保在内核初始化的各个阶段都完成后再执行特定的初始化操作,从而保证系统的稳定性和可靠性。在Linux内核启...
#define fs_initcall_sync(fn) __define_initcall(fn, 5s) #define rootfs_initcall(fn) __define_initcall(fn, rootfs) #define device_initcall(fn) __define_initcall(fn, 6) #define device_initcall_sync(fn) __define_initcall(fn, 6s) #definelate_initcall(fn) __define_initcall(fn, 7) #defin...
#define fs_initcall_sync(fn) __define_initcall(fn, 5s) #define rootfs_initcall(fn) __define_initcall(fn, rootfs) #define device_initcall(fn) __define_initcall(fn, 6) #define device_initcall_sync(fn) __define_initcall(fn, 6s) #define late_initcall(fn) __define_initcall(fn, 7) #def...
#define postcore_initcall(fn) __define_initcall(fn, 2) #define arch_initcall(fn) __define_initcall(fn, 3) #define subsys_initcall(fn) __define_initcall(fn, 4) #define fs_initcall(fn) __define_initcall(fn, 5) #define device_initcall(fn) __define_initcall(fn, 6) #define late_initc...
_initcall(fn, 5s)#define rootfs_initcall(fn) __define_initcall(fn, rootfs)#define device_initcall(fn) __define_initcall(fn, 6)#define device_initcall_sync(fn) __define_initcall(fn, 6s)#define late_initcall(fn) __define_initcall(fn, 7)#define late_initcall_sync(fn) __define_initcall(...
2)postcore_initcall 3)arch_initcall 4)subsys_initcall 5)fs_iitcall 6)device_initcall 7)late_initcall 这7个级别优先级递减,即先执行core_initcall, 最后执行late_initcall。通过使用初始化宏,gcc会将初始化代码按下面的结构安排: 在内核初始化时,从__initcall_start到__initcall_end之间的initcall被一次执行...
late_initcall:作为最后一个初始化阶段,late_initcall用于处理那些不需要立即加载的模块。例如,某些用户空间服务或辅助工具可以在系统启动后的某个时刻再进行初始化,从而缩短系统的启动时间,提升用户体验。 通过这种分层设计,initcall机制不仅提高了系统的稳定性和可靠性,还为开发者提供了一个清晰的框架,便于他们编写和维护...
rootfs_initcall(fn)__define_initcall(fn, rootfs)#definedevice_initcall(fn)__define_initcall(fn,6)#definedevice_initcall_sync(fn)__define_initcall(fn,6s)#definelate_initcall(fn)__define_initcall(fn,7)#definelate_initcall_sync(fn)__define_initcall(fn,7s)#define__initcall(fn)device_initcall(...
3.1 xxx_initcall的源码 在平台对应的init.h文件中,可以找到xxx_initcall的定义: n是一个数字或者是数字+s,这个数字代表这个fn执行的优先级,数字越小,优先级越高,带s的fn优先级低于不带s的fn优先级。可以看到上面的从pure_initcall到late_initcall优先级依次变低。
rootfs_initcall(fn)__define_initcall(fn,rootfs)#definedevice_initcall(fn)__define_initcall(fn,6)#definedevice_initcall_sync(fn)__define_initcall(fn,6s)#definelate_initcall(fn)__define_initcall(fn,7)#definelate_initcall_sync(fn)__define_initcall(fn,7s)#define__initcall(fn)device_initcall(fn...