在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,但是我不知道还要读取哪个头文件。
我尝试阅读它们,但不知道真正使用了哪个。