Выполнить программу в пространстве ядра в Linux - PullRequest
6 голосов
/ 20 июля 2010

Если я хочу выполнить пользовательскую программу (не модуль ядра) в пространстве ядра Linux, какие варианты у меня есть?

Я посмотрел на KML (режим ядра Linux), но это специфично для IA-32 архитектура.Мне нужно решение, которое является кроссплатформенным и может работать на встроенных системах Linux.

Ответы [ 6 ]

5 голосов
/ 20 июля 2010

Пользовательские программы не выполняются в пространстве ядра - вот что делает их пользовательскими программами.

Если вы хотите выполнить код в пространстве ядра, у вас есть два варианта: встроить его вядро, или загрузите его с модулем ядра.

4 голосов
/ 20 июля 2010

Вы написали в другом вопросе, что вы новичок в программировании ядра.Использование KML весьма нетрадиционно и намного сложнее, чем обычные действия.Это сделает ваше обучение намного сложнее.Я бы посоветовал вам лучше всего переоценить, почему вы хотите запустить приложение из пространства пользователя в пространстве ядра и найти способ этого не делать.

Может быть, для этого есть веская причина, но мне не ясно, что это за причина.При разработке ядра вы должны понимать одну вещь: если что-то возможно, это не обязательно то, что нужно делать.

Если вы действительно хотите кросс-платформенное решение, вам придется написать его самостоятельно.KML поддерживает только архитектуры IA32 и AMD64.

3 голосов
/ 09 августа 2010

call_usrmodehelper

3 голосов
/ 29 июля 2010

Взгляните на FemtoLinux . По сути, это KML для встроенных систем и встроенных процессоров, таких как ARM и MIPS

3 голосов
/ 20 июля 2010

Программирование ядра в значительной степени зависит от платформы, поскольку ядра для разных платформ различны.

0 голосов
/ 05 февраля 2018

Если вы хотите запустить пользовательскую программу из пространства ядра, взгляните на run_init_process (). Так ядро ​​запускает программу init.

...