http://wiki.rosalab.com/ru/index.php?title=%D0%91%D0%BB%D0%BE%D0%B3:%D0%A2%D0%BE%D1%87%D0%BA%D0%B0_%D0%A0%D0%BE%D1%81%D1%8B/Linux_Kernel_ABI_Tracker_-_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82_%D0%B4%D0%BB%D1%8F_%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%B2_ABI_%D1%8F%D0%B4%D1%80%D0%B0&feed=atom&action=historyБлог:Точка Росы/Linux Kernel ABI Tracker - инструмент для отслеживания изменений в ABI ядра - История изменений2024-03-28T23:25:51ZИстория изменений этой страницы в викиMediaWiki 1.26.4http://wiki.rosalab.com/ru/index.php?title=%D0%91%D0%BB%D0%BE%D0%B3:%D0%A2%D0%BE%D1%87%D0%BA%D0%B0_%D0%A0%D0%BE%D1%81%D1%8B/Linux_Kernel_ABI_Tracker_-_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82_%D0%B4%D0%BB%D1%8F_%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%B2_ABI_%D1%8F%D0%B4%D1%80%D0%B0&diff=10341&oldid=prevAndrey.ponomarenko в 08:29, 13 ноября 20132013-11-13T08:29:47Z<p></p>
<p><b>Новая страница</b></p><div>Ядро операционной системы Linux постоянно развивается: улучшается поддержка оборудования, оптимизируются различные подсистемы ядра и др. В результате этого размер ядра и количество его ABI/API интерфейсов постоянно растет от версии к версии. При этом, в процессе разработки, могут быть изменены некоторые старые интерфейсы, что может неблагоприятно повлиять на работу других программных компонентов, использующих интерфейсы ядра: модулей, драйверов, динамических средств тестирования и трассировки ядра и др.<br />
<br />
Для регулярного автоматического анализа изменений в интерфейсах ядра мы разработали инструмент [http://upstream-tracker.org/kernel/ Kernel ABI Tracker]. Этот инструмент следит за появлением новых версий ядра на офф. сайте [https://www.kernel.org/ kernel.org], собирает их и анализирует изменения с помощью набора базовых инструментов. Для каждой версии ядра создается так называемый ''ABI dump'' ("снимок" или "дамп" ABI ядра) из его debug-информации при помощи инструмента [https://github.com/lvc/abi-dumper ABI Dumper]. Дамп ABI включает в себя информацию о всех публичных экспортируемых интерфейсах ядра, их параметрах и структуре типов данных. Для получения отчета об изменениях в двух версиях ядра сравниваются два соответствующих дампа ABI при помощи инструмента [https://github.com/lvc/abi-compliance-checker ABI Compliance Checker]. В отчете описаны все изменения в интерфейсах ядра и разделены по уровню опасности для приложений. Отдельно описаны добавленные и удаленные интерфейсы, изменения в типах данных и в параметрах интерфейсов. Кроме своего прямого назначения дампы ABI могут также использоваться для других видов анализа интерфейса ядра сторонними разработчиками и поэтому доступны для скачивания всем желающим.<br />
<br />
Интерфейс инструмента предоставляет отчеты о результатах тестирования ''defconfig''-конфигураций всех последних ''longterm'', ''stable'' и ''mainline'' версий ядра. На главной странице показан график зависимости количества интерфейсов ядра от версии. На данный момент результаты получены для двух архитектур: ''x86'' и ''x86_64''. Поддержка архитектуры ''arm'' планируется в ближайшее время. Также планируется тестирование других конфигураций ядра, например, ''allyesconfig''.<br />
<br />
Базовые инструменты ''ABI Dumper'' и ''ABI Compliance Checker'', ранее разработанные в компании РОСА для проверки совместимости Си-библиотек, потребовали существенных изменений для возможности анализа изменений в ядре Linux. В силу огромной глубины дерева структур данных ядра и большого количества интерфейсов, требуемые для обработки одной версии ядра процессорное время и объем оперативной памяти были неудовлетворительными и вследствие были оптимизированы в несколько раз до нормальных величин. В результате этих улучшений, инструменты теперь работают быстрее при анализе библиотек большого объема. Код новых версий этих инструментов был выложен на их [https://github.com/lvc офф. сайте].<br />
<br />
[[File:Linux_Kernel_ABI_Tracker.jpg|800px|center]]<br />
<br />
[[Category:ToROSAPoint]]<br />
{{wl-publish: 2013-11-12 15:50:52 +0400 | Andrey.ponomarenko }}</div>Andrey.ponomarenko