内核module加载顺序
来源:互联网 发布:bj单身日记 知乎 编辑:程序博客网 时间:2024/06/06 09:31
内核模块的启动顺序
驱动模块的加载顺序由什么决定的呢?
如何将模块加载的顺序提前或者延后呢?
#define module_init(x) __initcall(x);#define __initcall(fn) device_initcall(fn)#define core_initcall(fn) __define_initcall(fn, 1)#define core_initcall_sync(fn) __define_initcall(fn, 1s)#define postcore_initcall(fn) __define_initcall(fn, 2)#define postcore_initcall_sync(fn) __define_initcall(fn, 2s)#define arch_initcall(fn) __define_initcall(fn, 3)#define arch_initcall_sync(fn) __define_initcall(fn, 3s)#define subsys_initcall(fn) __define_initcall(fn, 4)#define subsys_initcall_sync(fn) __define_initcall(fn, 4s)#define fs_initcall(fn) __define_initcall(fn, 5)#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)#define late_initcall_sync(fn) __define_initcall(fn, 7s)
start_kernel -> rest_init -> kernel_init -> kernel_init_freeable -> do_basic_setup -> do_initcalls //遍历各个优先级 -> do_initcall_level//遍历相同优先级各个函数 -> do_one_initcall
遍历相同优先级的initcall时,是按照地址从低到高进行的,因此调用顺序就是编译时链接到initcall section的顺序,通过System.map可以查到顺序,例如:
62054:ffffffc000e61c38 T __initcall_start
62055:ffffffc000e61c38 t __initcall_trace_init_flags_sys_exitearly
62057:ffffffc000e61c40 t __initcall_trace_init_flags_sys_enterearly
62058:ffffffc000e61c48 t __initcall_init_hw_perf_eventsearly
62059:ffffffc000e61c50 t __initcall_cpu_suspend_initearly
链接顺序可以通过调整Makefile中的.o文件的先后进行调整。
0 0
- 内核module加载顺序
- 内核加载错误module license
- Linux内核驱动加载顺序
- 内核模块加载顺序详解
- Linux内核驱动加载顺序 3
- 调整内核驱动加载的顺序
- Linux内核驱动加载顺序 system.map
- 内核模块加载顺序的控制
- 调整Linux内核驱动加载顺序
- linux内核加载顺序(system.mp)
- 内核文件加载时 -l Invalid module format
- Linux 2.6.x 内核模块加载错误 “Invalid module format” 解决办法
- Linux 2.6.x 内核模块加载错误 “Invalid module format” 解决办法
- Linux 2.6.x 内核模块加载错误 “Invalid module format” 解决办法
- Linux 2.6.x 内核模块加载错误 “Invalid module format” 解决办法
- Linux 2.6.x 内核模块加载错误 “Invalid module format” 解决办法
- Linux 2.6内核配置说明(3----Loadable module support可加载模块支持)
- 内核module 参数
- CSDN日报20170505 ——《创业时该不该用新手程序员》
- tensorflow 实践(一)使用神经网络做中文情感分析
- linux命令指南之四
- Unity自定义创建脚本模板菜单
- How Many Answers Are Wrong HDU
- 内核module加载顺序
- 个人模板 最长公共子序列
- 规则和统计(下)
- mysql的默认端口、索引类型
- FEP
- [Java]自定义Jar库,Http简单的Get和Post请求封装
- codeforces Round 411 div2 A
- 统计语言模型(上)
- imge stitching图像拼接stitching