Как я могу использовать cscope, чтобы найти task_struct в ядре Linux - PullRequest
0 голосов
/ 05 апреля 2019

я учусь о ос особенно ядро ​​linux

Я расскажу свою ситуацию.

Я скачал ядро ​​Linux на kernel.org и получил несколько инструментов, таких как ctags, cscope и добавил несколько плагинов на vimrc и я думаю, я тоже скомпилировал ядро. в папке есть linux-header.deb и linux-image.deb, и они что-то сделали для cscope. поэтому я получил cscope.out и знаю команду cscope -d

и теперь мой вопрос что я могу сделать с помощью cscope-d?

мне нужно найти task_struct и thread_struct, и что такое переменная типа thread_struct в task_struct

Я не знаю, что я могу сделать с помощью cscope. Есть «найти символ», «глобальное определение», «текстовая строка» и т. д.

когда я набрал task_struct в 'найди этот символ c' Есть много заголовочных файлов. когда я набрал task_struct в «глобальном определении» там тоже много 1) какая разница с этими двумя?

и когда я ввел заголовок, есть просто утверждение без подробностей структуры. 2) что-то я пропустил? или мне нужно проверить все заголовочные файлы?

это было долго, но вопросы 1) и 2) мне нужна твоя помощь: (

1 Ответ

0 голосов
/ 05 апреля 2019

Пожалуйста, посмотрите на некоторые существующие статьи или сообщения, такие как здесь , здесь и здесь .

Я не использовал cscope, ноЯ склонен рекомендовать генерацию тегов, тем более что для ядра вы можете генерировать теги, просто вызывая «make tags» из корня директории с исходным кодом ядра.Для перехода к определению вы можете затем нажать Ctrl + [.Вы можете увидеть остальные привязки здесь .Обратите внимание, что, если быть более точным, это ctags и работает без каких-либо специальных настроек для vim.

Чтобы ответить на ваш вопрос о «большом количестве заголовочных файлов».task_struct определяется в lockdep.h или sched.h и имеет разные поля и информацию в зависимости от этого контекста.Остальные экземпляры, которые вы видите, например, как в arch / directory, имеют тенденцию быть предварительными объявлениями.Чтобы получить представление о task_struct, вы можете взглянуть на this .

Чтобы узнать о предварительном объявлении, см. здесь .

...