该如何读懂Linux内核源码?如何判断自己想了解的函数或模块在哪个c文件中?
Linux内核模块
可以借助一些IDE或者编辑器+相应插件辅助你,比如Visual Studio,Eclipse C/C++,Visual Code + C/C++插件,Vim + 相关插件等等。
内核代码阅读是一项非常艰难的事情,主要是代码量太大,并且模块间还有一定的耦合。如何阅读内核代码,可以从两方面考虑,一点是借助有效的工具,比如si或者vim,另外一个是要选择性阅读,比如按特性。
工具选择上,比较好的工具可以有效提高代码阅读的效率。因此首先要选好工具。
从代码阅读上,以特性为出发点,可以先从网上了解一下特性具体功能,然后再阅读。另外不建议一下子钻的太深,适当跳出来,先从大局理解,然后再细节。
ctags打标签,可以跳转到函数声明,也可以使用grep命令查找函数应该如何使用。
grep前提是你知道要搜什么
我从来都不知道该怎么教别人读懂代码 但是读log/blame通常是最好的方式
搜索的话 Mainline直接在Linus的github repo里搜索
https://github.com/torvalds/linux?github.com如果是要在特定旧版本里搜索的话
Linux source code: (v4.17.11)?elixir.bootlin.com搜索可以定位到Linux 2.6
命名比较common的就加个模块名字 比如"enabled_fops 模块名"
在linux下面用vim的插件ctags来查看源码,可以在源码中直接跳转,很方便
推荐阅读: