research_linuxKernel_by_patch

步骤 (以研究slub为例子进行说明)

查找slub.c的第一个提交记录

$ git log --reverse --oneline mm/slub.c
81819f0fc828 SLUB core

slub.c的第一个提交记录81819f0fc828的上一个提交创建新分支slub

$ git branch slub 81819f0fc828~1

获得slub到目前为止的所有patch

$ i=0; for line in `git log --reverse --pretty=format:"%h" mm/slub.c`; do i=$[$i+1]; git format-patch -1 --start-number $i $line -o patches/; done

将第一个patch打在slub分支,进行研究

$ git checkout slub

$ git apply --check patches/0001-SLUB-core.patch
$ git am patches/0001-SLUB-core.patch

研究第一个patch一般会比较难入手,因为对slub不熟悉,不过也不用太担心,因为作者能够将patch push到linux kernel中,说明当初push到linux kernel时,他会提供很多说明/文档/演讲与maintainer进行解释,我们只要能够找到当时的资料足矣看懂此patch。

如何寻找相关说明/文档/演讲?

  • 说明/文档 在linux kernel 源码注释与Documentation/

  • 演讲 可以 google 查找一下,说不定能找到作者的博客。

  • 网上其它人的博客/书对源码的解释等等

将第二个patch打在slub分支,进行研究

$ git apply --check patches/0002-SLUB-change-default-alignments.patch
$ git am patches/0002-SLUB-change-default-alignments.patch

依此类推,第xx个patch打在slub分支,进行研究...

linux kernel网址

https://lore.kernel.org/

Last updated

Was this helpful?