該如何讀懂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來查看源碼,可以在源碼中直接跳轉,很方便
推薦閱讀: