insmod源码分析

http://www.nsfocus.net/index.php?act=magazine&do=view&mid=1487
1.get_kernel_info函数负责取得kernel中先以注册的modules,放入module_stat中.
2.set_ncv_prefix(NULL);判断symbolname中是否有前缀,象_smp之类,一般没有。
3.检查是否已有同名的module。
4.obj_load,将。o文件读入到struct obj_file结构f中。
5.比较kernel版本和module的版本,在版本的判断中,不是想象中的那样简单,还有是否有checksum的逻辑关系。
6.add_kernel_symbols替换.o中的symbol为ksyms中的符号值
7.create_this_module(f, m_name)生成module结构,加入module_list中。
8.obj_check_undefineds检查是否还有un_def的symbol
9.add_archdata添加结构相关的section,不过i386没什么用。
10.add_kallsyms如果symbol使用的都是kernel提供的,就添加一个.kallsyms section
11.obj_load_size计算module的大小
12.create_module调用sys_create_module系统调用创建模块,分配module的空间
13.obj_relocate重定位module文件中.text中的地址
14.init_module先在用户空间创建module结构的image影响,是由sys_init_module系统调用实现向kernel的copy。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值