Я бы рекомендовал начать с инструмента статического анализа sparse
.Поскольку sparse
был специально разработан для того, чтобы помочь разработчикам ядра в проведении статического анализа на ядре, вы можете иметь определенный уровень уверенности в том, что он действительно должен анализировать комбинацию расширений C99 и GNU, которые используются в исходных кодах ядра.Код, который я изучил, выглядел чистым и понятным, но я никогда не пытался его расширять.Файл Documentation/sparse.txt
имеет очень краткий обзор использования sparse
в исходных текстах ядра, если вам нужен обзор очень высокого уровня.
Другой вариант - GCC MELT , инструментразработан для облегчения создания плагинов для компилятора gcc
.Чтобы использовать его, нужно знать достаточно gcc
внутренних компонентов, но MELT выглядит гораздо проще, чем кодировать аналогичный плагин непосредственно в C.