Если я хочу выполнить пользовательскую программу (не модуль ядра) в пространстве ядра Linux, какие опции я имею?
Я посмотрел на KML (привилегированный режим Linux), но это характерно для архитектуры IA-32. Я хочу решение, которое является кросс-платформенным и может работать над встроенными системами Linux.
Пользовательские программы не выполняются в пространстве ядра - именно это делает их пользовательскими программами.
Если вы хотите выполнить код в пространстве ядра, у вас есть два варианта: встроить его в ядро или загрузить с помощью модуля ядра.
В другом вопросе вы написали, что являетесь новичком в программировании ядра. Использование KML весьма нетрадиционно, и будет намного сложнее, чем выполнение стандартных действий. Это сделает ваше обучение намного сложнее. Я бы предположил, что лучшим вариантом для вас будет переоценка причин, по которым вы хотите запускать приложения пользовательского пространства в пространстве ядра, и поиск способа не делать этого.
Возможно, для этого есть веская причина, но мне неясно, что это может быть за причина. Одна вещь, которую вы должны понять при разработке ядра, заключается в том, что если что-то возможно, это не обязательно то, что должно быть сделано.
Если вы действительно хотите получить кроссплатформенное решение, вам придется написать его самостоятельно. Единственные архитектуры, поддерживаемые KML, это IA32 и AMD64.
Программирование ядра практически по определению зависит от платформы, поскольку ядра для разных платформ все разные.
Взгляните на FemtoLinux . По сути, это KML для встроенных систем и встроенных процессоров, таких как ARM и MIPS