面对Linux内核中几个文件中定义的函数时,如何选择要读取的源代码

时间:2018-12-23 07:07:25

标签: linux kernel

在Linux内核中,当您尝试调查几个文件中定义的函数时,如何选择要读取的源代码?

我对如何在x86_64 Linux内核中实现写时复制感兴趣,所以我正在阅读fork(clone)系统调用(kernel / fork.c)的源代码,因为我认为针对写时复制是在系统调用中完成的。

当我进入源代码(mm / memory.c)的内存部分时,我遇到了在几个源文件中定义的函数。 例如,当我使用ctags在vim上搜索时,在多个标头中定义了copy_p4d_range中的“ p4d_offset”。

# pri kind tag               file
  1 F   f    p4d_offset        arch/s390/include/asm/pgtable.h
             static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address)
  2 F   f    p4d_offset        arch/x86/include/asm/pgtable.h
                 static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address)
  3 F   d    p4d_offset        include/asm-generic/5level-fixup.h
                 21
  4 F   f    p4d_offset        include/asm-generic/pgtable-nop4d.h
                  static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address)

当然我知道我可以消除s390的头文件(下面的#1),因为我正在使用x86_64,但是我不知道还要读取哪个头文件。

我尝试阅读它们,但不知道真正使用了哪个。

0 个答案:

没有答案