Linux Kernel ABI Tracker - инструмент для отслеживания изменений в ABI ядра

Материал из Rosalab Wiki
Перейти к: навигация, поиск

Ядро операционной системы Linux постоянно развивается: улучшается поддержка оборудования, оптимизируются различные подсистемы ядра и др. В результате этого размер ядра и количество его ABI/API интерфейсов постоянно растет от версии к версии. При этом, в процессе разработки, могут быть изменены некоторые старые интерфейсы, что может неблагоприятно повлиять на работу других программных компонентов, использующих интерфейсы ядра: модулей, драйверов, динамических средств тестирования и трассировки ядра и др.

Для регулярного автоматического анализа изменений в интерфейсах ядра мы разработали инструмент Kernel ABI Tracker. Этот инструмент следит за появлением новых версий ядра на офф. сайте kernel.org, собирает их и анализирует изменения с помощью набора базовых инструментов. Для каждой версии ядра создается так называемый ABI dump ("снимок" или "дамп" ABI ядра) из его debug-информации при помощи инструмента ABI Dumper. Дамп ABI включает в себя информацию о всех публичных экспортируемых интерфейсах ядра, их параметрах и структуре типов данных. Для получения отчета об изменениях в двух версиях ядра сравниваются два соответствующих дампа ABI при помощи инструмента ABI Compliance Checker. В отчете описаны все изменения в интерфейсах ядра и разделены по уровню опасности для приложений. Отдельно описаны добавленные и удаленные интерфейсы, изменения в типах данных и в параметрах интерфейсов. Кроме своего прямого назначения дампы ABI могут также использоваться для других видов анализа интерфейса ядра сторонними разработчиками и поэтому доступны для скачивания всем желающим.

Интерфейс инструмента предоставляет отчеты о результатах тестирования defconfig-конфигураций всех последних longterm, stable и mainline версий ядра. На главной странице показан график зависимости количества интерфейсов ядра от версии. На данный момент результаты получены для двух архитектур: x86 и x86_64. Поддержка архитектуры arm планируется в ближайшее время. Также планируется тестирование других конфигураций ядра, например, allyesconfig.

Базовые инструменты ABI Dumper и ABI Compliance Checker, ранее разработанные в компании РОСА для проверки совместимости Си-библиотек, потребовали существенных изменений для возможности анализа изменений в ядре Linux. В силу огромной глубины дерева структур данных ядра и большого количества интерфейсов, требуемые для обработки одной версии ядра процессорное время и объем оперативной памяти были неудовлетворительными и вследствие были оптимизированы в несколько раз до нормальных величин. В результате этих улучшений, инструменты теперь работают быстрее при анализе библиотек большого объема. Код новых версий этих инструментов был выложен на их офф. сайте.

Linux Kernel ABI Tracker.jpg

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.