Как включить программу уровня C пользователя в исходный код Linux для компиляции с ядром Linux? - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть программа на C, связанная с определенной версией исходного кода ядра Linux.
Я хочу скомпилировать приложение только с исходным кодом ядра, а затем запустить двоичный файл в оболочке.
Я буду запускатькод как приложение пользовательского пространства, а не в пространстве ядра, после сборки ядра Linux.

Как и где я могу включить эту программу в исходный код Linux, чтобы ее можно было скомпилировать с ядром Linux

1 Ответ

1 голос
/ 28 сентября 2019

Программы пользовательского пространства существуют в дереве исходных текстов ядра Linux в подкаталоге tools / .
Кажется, что нет четкого (или какого-либо) определениякакая программа представляет собой «инструмент», который требует / заслуживает включения / распространения с исходным кодом ядра.

Типы утилит, которые (в настоящее время) существуют в дереве исходных кодов ядра, включают программу администратора для проверки битов состояния страниц памяти ( tools / vm / page-types.c ) длятри простые программы, которые используют / демонстрируют («новый») интерфейс chardev GPIO ( tools / gpio / gpio-event-mon.c и другие).

Самая большая категория программ пользовательского пространстваили инструменты в исходном коде ядра находятся в подкаталоге ядра tools / testing / selftests / .
Документация находится в Документация / dev-tools / kselftest.rst

======================
Linux Kernel Selftests
======================

The kernel contains a set of "self tests" under the tools/testing/selftests/
directory. These are intended to be small tests to exercise individual code
paths in the kernel. Tests are intended to be run after building, installing
and booting a kernel.  
...  
kselftest runs as a userspace process.  Tests that can be written/run in
userspace may wish to use the `Test Harness`_.  Tests that need to be
run in kernel space may wish to use a `Test Module`_.

В качестве альтернативы существует множество подсистем ядра и аппаратных компонентов, которые не имеют своих инструментов в исходном коде ядра, но имеют этот код в виде отдельных пакетов исходного кода / проекта.

Учитывая стабильность двоичного API, который ядро ​​Linux предоставляет пользователям, программа редко привязана к конкретной версии ядра.Поддерживающие ядро ​​по возможности избегают регрессии (то есть изменения, которое приводит к тому, что что-то нарушается для существующих пользователей)

Одной из причин включения программ в исходный код ядра является удобство для разработчиков ядра.
Сборщикам ядра рекомендуется также создавать и запускать программы самотестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...