Как выбрать исходный код для чтения при обращении к функции, определенной в нескольких файлах в ядре Linux - PullRequest
0 голосов
/ 23 декабря 2018

В ядре Linux, как выбрать исходный код для чтения, когда вы сталкиваетесь с функцией, определенной в нескольких файлах, когда пытаетесь ее исследовать?

Меня интересует, какcopy-on-write реализован в ядре Linux x86_64, поэтому я читаю исходный код системного вызова fork (clone) (kernel / fork.c), потому что я думаю, что настройки защиты от записи для копирования при записи выполняются всистемный вызов.

Когда я нырнул в часть памяти исходного кода (mm / memory.c), я столкнулся с функциями, которые определены в нескольких исходных файлах.Например, «p4d_offset» в copy_p4d_range определяется в нескольких заголовках, как показано ниже, когда я искал его в vim с помощью ctags.

# 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, но я не знаю, какой еще заголовок прочитать.

Я пытался их прочитать, но не понял, какой из них действительно используется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...