Linux内核Modultils工具系列
wuhui_gdnt
这个作者很懒,什么都没留下…
展开
-
Modultils工具源码分析之insmod篇 (3)
在./modutils-2.4.0/depmod/目录下有一个配置文件的样式,Example.module.conf。 1 # This is an example of additional definitions you can put in /etc/modules.conf2 # Note that modprobe has some default alias原创 2010-02-23 11:58:00 · 1148 阅读 · 0 评论 -
Modultils工具源码分析之insmod篇 (完)
回到INSMOD_MAIN函数里。 1899 /* Do archdata again, this time we have the final addresses */1900 if (add_archdata(f, &archdata))1901 goto out;19021903 /* Do kallsym原创 2010-04-23 09:53:00 · 1258 阅读 · 0 评论 -
Modultils工具源码分析之insmod篇 (12)
回到INSMOD_MAIN里。 1893 if (!obj_relocate(f, m_addr)) { /* DEPMOD */1894 if (!noload)1895 delete_module(m_name);1896 goto out;1897原创 2010-04-23 09:50:00 · 848 阅读 · 0 评论 -
Modultils工具源码分析之insmod篇 (11)
回到INSMOD_MAIN。 1826 /**** No symbols or sections to be changed after kallsyms above ***/ 之前所有的操作都没动内核。下面就要来真的了。 1828 if (errors)1829 goto out;18301831 /*原创 2010-04-23 09:46:00 · 1266 阅读 · 0 评论 -
Modultils工具源码分析之ksyms篇
一般来说,内核只会导出由EXPORT_PARM宏指定的符号给模块使用。为了使debugger提供更好的调试功能,需要使用kallsyms工具为内核生成__kallsyms段数据,该段描述所有不处在堆栈上的内核符号。这样debugger就能更好地解析内核符号,而不仅仅是内核指定导出的符号。刚刚编译好的内核是不带__kallsyms段的。要在内核中加入__kallsyms段,man给出了一个方法,原创 2010-04-23 09:56:00 · 1294 阅读 · 0 评论 -
Modultils工具源码分析之insmod篇 (10)
回到INSMOD_MAIN。 1819 /* archdata based on relocatable addresses */1820 if (add_archdata(f, &archdata))1821 goto out;18221823 /* ka原创 2010-04-08 12:17:00 · 1011 阅读 · 0 评论 -
Modultils工具源码分析之insmod篇 (9)
处理完命令行参数,INSMOD_MAIN接下来调用arch_create_got。这个函数在./modutils-2.4.0/obj/obj_i386.c中。Insmod——arch_create_got函数158 int159 arch_create_got (struct obj_file *f)160 {161 struct i386_file *ifile原创 2010-04-07 11:52:00 · 941 阅读 · 0 评论 -
Modultils工具源码分析之insmod篇 (8)
回到INSMOD_MAIN。 1691 check_module_parameters(f, &persist_parms);1692 1693 if (optind 1694 if (!process_module_arguments(f, argc - optind, a原创 2010-03-19 12:01:00 · 1081 阅读 · 0 评论 -
Modultils工具源码分析之insmod篇 (7)
回到INSMOD_MAIN函数。 1638 /* Version correspondence? */1639 k_version = get_kernel_version(k_strversion);1640 m_version = get_module_version(f, m_strversio原创 2010-03-12 11:29:00 · 1023 阅读 · 0 评论 -
Modultils工具源码分析之insmod篇 (5)
回到主战场INSMOD_MAIN! 1610 /* And open it. */1611 if ((fp = gzf_open(filename, O_RDONLY)) == -1) {1612 error("%s: %m", filename);1613 return 1;1614原创 2010-03-01 12:07:00 · 1048 阅读 · 1 评论 -
Modultils工具源码分析之insmod篇 (6)
到了obj_load了。终于要开始干正事了! obj_load在./modutils-2.4.0/obj/obj_load.c中。Insmod——obj_load函数36 struct obj_file *37 obj_load (int fp, Elf32_Half e_type, const char *filename)38 {39 struc原创 2010-03-04 11:54:00 · 1516 阅读 · 0 评论 -
Modultils工具源码分析之insmod篇 (4)
至此,do_read的工作就完成了,接着config_read也结束。继续看INSMOD_MAIN。 1565 if (persist_name && !*persist_name &&1566 (!persistdir || !*persistdir)) {1567 free(pe原创 2010-02-25 13:16:00 · 868 阅读 · 0 评论 -
Modultils工具源码分析之insmod篇 (4续)
xftw在./modutils-2.4.0/util/xftw.c中。在ftw.c文件的开头有一大段注释,解释了这一族函数的由来。特摘录如下。Insmod——xftw函数24 /*25 modutils requires special processing during the file tree walk26 of /lib/modules原创 2010-02-25 13:39:00 · 1148 阅读 · 0 评论 -
Modultils工具源码分析之insmod篇 (3续)
我们继续看meta_expand余下的代码。251~255行处理“"/”这样的元符号,其实就是字符串引用符号。257~260行则是处理普通字符及仅有“=”的情况。函数split_line也在同一文件中。Insmod——split_line函数47 /*48 * Split into words delimited by whitespace,49 * handl原创 2010-02-23 12:05:00 · 903 阅读 · 1 评论 -
Modultils工具源码分析之insmod篇 (2)
insmod的入口在insmod.c,在./modultils-2.4.0/insmod/下。 1944 /* For common 3264 code, only compile main in the 64 bit version. */1945 #if defined(COMMON_3264) && defined(ONLY_32)1946原创 2010-02-22 13:25:00 · 3212 阅读 · 0 评论 -
Modultils工具源码分析之insmod篇 (1)
这系列是几年前发的。现在回过头看,还是蛮有意思的。把它们一起放上来。 Modultils工具源码分析之insmod篇 作者:吴晖2005年12月29日前言Linux的前身UNIX是一个巨内核操作系统,这样的系统运行效率高,但是内核占据的资源比较多,而且更要命的是系统在启动时必须把所有的设备驱动都加载,不管有没有用。另外,每添加或修改驱动都要重新编原创 2010-02-22 12:53:00 · 3457 阅读 · 0 评论