今天必须吐槽一下!
我有个搞内核的同事说过:对现在的新人来说,内核的学习曲线越来越陡了,不知道搞内核的这些前辈退休以后,后辈能否扛起内核这个重担。。。开始的时候还不以为然,随着这几天陆续接触内核代码,才深刻的体会到这句话的滋味。
举一个最简单的例子,我看的内核代码是2.6.11,选这个版本的原因很简单,因为有ULK3,这对于新人来说很重要,结合代码看书
可以起到很好的效果。我用source insight建完工程之后发现一个很烦人的事情就是,内核里面的很多宏针对不同的arch有不同的定义,所以在查看定义或者声明的时候罗列出很多不相关的内容,找起来很乱。后来我打算把一些用不到的arch和其他代码都从工程里删掉,这样可以让搜索过程更清晰一些,于是我保留了arch下面i386,x86_64,ia64以及include下面asm-i386,asm-x86_64和asm-ia64等目录,其他的都删掉了。
后面麻烦来了,在我看到内核最终页表设置的时候,查看变量"pud_offset",发现只有asm-x86_64下面有一个定义,但是奇怪的是我当前正在看的文件是arch/i386/mm/init.c,引用asm-x86_64下的定义很不应该啊,但是又没有找到其他的地方有定义。fuck!怎么回事?纠结了很久,后来我又构建一个完整的内核代码工程,这次我搜索发现了这样一个目录asm-generic,速度google下,结果找到了答案:
“每个架构都有自己的asm文件夹,放一些架构相关的。但是有些架构没有实现某些函数,为了让编译通过,就把这些东西放在asm-generic”
后来我问了下公司那个搞内核的前辈,确认了此事!!!哎,弄巧成拙啊,但是我也真心无奈,有木有人提到过这个问题啊,那么多的博客,特别是那些所谓“一步步教你xxx”,“内核xxx入门”,代码流程我们都可以慢慢看,各位大神也并非必须给我们一步步地讲,像这些点才是应该着重指出的,对于菜鸟们来说。
允许我在这发点牢骚,请前辈们谅解!希望后来学习顺利吧。。。
分享到:
相关推荐
自己动手写内核系列自己动手写内核系列自己动手写内核系列自己动手写内核系列自己动手写内核系列
linux内核学习 Linus Torvalds本人是这样回答的:你必须使用过Linux。 这个……还是有点太泛了吧,我想下面几个基础可能还是需要的,尽管不一定必需: 1, 关于操作系统理论的最初级的知识。不需要通读并理解《操作...
fpga内构建51单片机内核, 亲测可用!
详细讲述了ARM内核,从ARM7到ARM11都有
关于Linux内核学习关于Linux内核学习关于Linux内核学习
Linux内核学习路径 Linux内核学习路径 Linux内核学习路径
此Linux内核学习资料包中有Linux内核--网络栈实现分析(二)--数据包的传递过程(上).pdf Linux内核--网络栈实现分析(三)--驱动程序层+链路层(上).pdf Linux内核--网络栈实现分析(四)--网络层之IP协议(上)....
该文档主要讲述了有关内核的学习,是入门级的,对于初学者来说是相当可贵的,值得好好学习
网友学习linux内核自己动手写的os,有源代码,主要参考了linux-2.4和2.6内核。 绝佳的操作系统和内核学习资料。
Linux内核学习 Linux内核学习 Linux内核学习
linux内核学习的经典书籍,内核、驱动学习
Windows内核培训材料,解密Windows内核!!
本文集是我用将近两年的时间写成的,大多数文章是关于linux内核的,另外还有一些我自己对计算机的理解,还有一些历史,音乐方面的东西。适合于对linux内核思想感兴趣的阅读,文章偏重于对于思想的理解。
关于POWER46超频内核,教你简单超频!n900
\Linux内核学习四库全书.rar \Linux内核学习四库全书.rar \Linux内核学习四库全书.rar \Linux内核学习四库全书.rar \Linux内核学习四库全书.rar \Linux内核学习四库全书.rar
linux内核学习必备,包含了三本电子书: Linux内核设计的艺术_图解Linux操作系统架构设计与实现原理 Linux内核完全注释 Understanding.the.Linux.Kernel.3rd.Edition
关于linux内核学习,这是一位轻身经历linux内核学习洗礼的战士的笔记,不看,就别学了
系统介绍Linux内核代码原理
Linux2.4.30内核文件系统学习,学习内核的很好的资料
想深入理解windows内核机制的一些好资料集结。 通过这些,可以让我们从内核理解windows的行为和机制。 对以后的编程和项目有很大的帮助。 也是走向“高手”的必读!