Хочу стать ядрёным хакером :)
Но документации в стиле QT-Assistent или MSDN нет.
Итак, список литературы, рекомендованный на ЛОРе.
- Linux Kernel Newbies
- Бовет "Ядро Linux"/"Understading the Linux Kernel"
- Роберт Лав "Разработка ядра Linux" 2 издание
- Kernel hacking For Dummies
- "Ядро Linux глазами хакера" (неоднозначные отзывы)
- "linux device drivers"
Ну и вне всякого сравнения идут
- Documentation
- исходники
На последнем пункте остановимся подробнее.
Читать ЭТО ВСЁ в текстовом редакторе - увольте, жизнь слишком коротка. ctags - отличная помощь, он может перейти к определению уже известной функции. Т.е. вы читаете в vim исходник, обнаруживаете вызов функции, жмете ^] - и уже читаете её определение. Если, конечно, база ctags создана и подключена.
Но:
- Нужно ещё найти Самую Главную Функцию
- переход может быть хитрым: вызов функции, чей адрес выбран из массива. Сплошь и рядом.
- Держать всё это в голове, даже при наличии стека переходов - сложно
А вот cscope - наш выбор :) И лучше графическая морда kscope.
Можно получить (и перейти к результатам поиска)
- определение функции, переменной или макроса
- список функций, вызванных из текущей.
- список функций, вызывающих текущую ( !!! )
- результат поиска по словам и регулярным выражениям во всём дереве исходников.
Дерево переходов можно получить в графическом виде (kscope. Есть ли в cscope?). И вообще, очень удобно.
Недостатки
- всё те же хитрые переходы
- поддерживается меньший список языков
- Размер базы сравним с размером исходников, т.е. ~ 300 Мб. И при её генерации нужно ~ 0,5 Гб места в /tmp
Если в пути к базе cscope есть русские буквы - ничего работать не будет (вероятно, виноват utf-8. насчёт пробелов - не проверял). Есть и другие багофичи, но плюсы перевешивают.
Добавил фотки.
Поиск
Результат поиска
Построение графа
http://www.makelinux.net/kern
http://www.makelinux.net/kernel_map
--
Signature invent in progress 24% ##........