-
Notifications
You must be signed in to change notification settings - Fork 3
Программы репозитория
В данном репозитории собран ряд утилит для изучения исходных кодов модуля ядра Linux и для работы с ними. Программы имеют внешние зависимости. Для того, чтобы их установить необходимо выполнить команды:
cpan cpanm cpanm --installdeps .
Для удобства работы с программами можно задать переменные окружения:
- CURRENT_PROJECT - директория с исходными кодами исследуемого модуля ядра Linux
- CURRENT_KERNEL - директория с исходными кодами ядра Linux с которым сочетается модуль
Каждая из программ имеет собственную man документацию, которая доступна по ключу --help. Здесь сведено вместе краткое описание программ, их функциональности и предназначения.
Данные программы используются для работы с исходными кодами и разработки спецификаций.
- dismember - из исходных кодов вытаскиваются все зависимости для конкретных функций так, чтобы компилятор мог создать отдельный объектный файл. У инструментов верификации вызывает затруднение работа с большими объёмами кода, что проявляется в существенном замедлении их работы. Программа позволяет многократно сократить объём исходного кода за счёт того, что неиспользуемый код исключается. В получившемся коде функции расположены в соответствии с графом их вызовов, структуры и остальные сущности расположены так, чтобы программисту было наиболее удобного работать с получившимся набором исходных кодов.
- merge - спецификации переносятся с одного набора исходных кодов на другой. Осуществляется полуавтоматических образом. В случае невозможности автоматического разрешения конфликтов вызывается внешняя программа. Расположение функций в файлах не имеет значения.
Данные программы предназначены для изучения исходных кодов модуля ядра как самостоятельного объекта, так и их интерфейсов взаимодействия с ядром. Используются при исследовании новых релизов исходных кодов, для подготовки отчётов и планирования работ.
- graph - строит карту исходных кодов. Карта представляет собой граф вызовов функций модуля ядра.
- headers - строит карту подключений заголовочных файлов в исходном коде
- calls - программа для анализа и сбора статистики вызовов функций и функциональных макросов в модуле ядра. Автоматическое определение сущности функция/макрос, и места определения ядро/модуль.
- lsm_diff - программа для анализа интерфейса lsm ядра и его использования в модуле ядра
- stapgen - по исходным кодам ядра создаёт скрипт для systemtap. Скрипт в динамике перехватывает вызовы lsm интерфейса ядра, осуществляет логирование параметров и контекста вызова функции. Позволяет отследить какие действия в ОС, приводят к вызову конкретных функций интерфейса lsm.
- get_preprocessed - осуществляет частичный(раскрываются только макросы ядра) либо полный препроцессинг исходных кодов модуля ядра