insmod 加载模块的过程
来源:互联网 发布:vb object转换 编辑:程序博客网 时间:2024/06/06 11:01
insmod 加载模块的过程
insmod 是靠一个在kernel/module.c里定义的系统调用来实现的。
1. 此系统调用(sys_init_module )分配内核存储空间(kernel memory)给相关的模块,这个内存分配动作是由vmalloc完成;
2. 然后将该模块内容拷贝到这块存储空间里;
3. 接着声明内核引用该模块;
4. 呼叫该模块的初始化涵数
这样,一个插入模块的过程就完成了。
该函数准确应该是在 linux/kernel/module.c里, 但是在里面你不会找到sys_init_module这个函数,因为这个函数是通过一个宏来实现的,
> /* This is where the real work happens */
> SYSCALL_DEFINE3(init_module, void __user *, umod,
> unsigned long, len, const char __user *, uargs)
这个宏就代表了sys_init_module这个函数。
********************modprobe 与 insmod的区别********************
modprobe 能 实现 insmod的功能, 而且比insmod要强大一些。
它在加载模块的时候,自己检查模块里有没有一些symbol在内核里没有定义的,如果有这样的symbol,modprobe函数会搜索其他模块,看其他模块里有没有相关的symbol,如果有,则将此模块也一起加载,这样的话,就算模块里有一些没有定义的symbol也能成功加载。但如果用insmod去加载的话,遇到这种情况就会加载失败。会出现"unresolved symbols"信息。
********************lsmod 命令********************
lsmod命令用来查看当前已经被加载的模块。 它是通过读出/proc/modules 这个虚拟文件来实现。 更多的关于当前已加载模块的信息可以在/sys/module中查看
- insmod 加载模块的过程
- insmod 加载模块的过程
- insmod 加载模块的过程
- insmod加载模块过程
- insmod 加载模块过程、modprobe 与 insmod的区别 、lsmod命令
- 模块加载过程分析:INSMOD DEMODEV.KO
- Linux内核模块的加载 insmod
- insmod加载模块错误分析
- 模块加载——modprobe和insmod的区别
- modprobe,insmod内核模块加载函数
- insmod加载驱动模块传递参数方法
- Linux下加载.ko驱动模块的两种方法:insmod与modprobe
- Linux下加载.ko驱动模块的两种方法:insmod与modprobe
- Linux下加载.ko驱动模块的两种方法:insmod与modprobe
- Linux下加载.ko驱动模块的两种方法:insmod与modprobe
- [ARM-Linux开发]Linux下加载.ko驱动模块的两种方法:insmod与modprobe
- insmod 模块的时候出现的问题
- 模块加载时 insmod “Invalid module format ”问题解决
- Codeforces 363A Soroban(算盘模拟)
- Poj 1170 Shopping Offers dp背包
- 我的搬砖新工具libgdx系列 ----- 1. 写在前面的瞎BB
- 数据库解析——MySQL性能优化的最佳20+条经验
- Guava缓存器源码分析——LocalCache
- insmod 加载模块的过程
- maven+spring+springmvc+mybatis+ajax 框架下实现简单的聊天室
- 应用启动时间-性能测试
- 是看好款式
- Http状态码大全
- Effective C++——Study Notes
- Rational Rose 2003 逆向工程转换C++ / VC++ 6.0源代码成UML类图
- 约瑟夫环问题
- 毕业的感悟