Как общаться с модулем ядра Linux от пространства пользователя, не соря/dev с новыми узлами?

Что пути состоят в том, чтобы общаться с модулем ядра от пространства пользователя? Коммуникацией я означаю отправлять информацию и команды между модулем ядра и процессом пространства пользователя.

Я в настоящее время знаю о двух путях:

  1. open/close/read/write/ioctl на опубликованном узле устройства.
  2. чтение-запись на экспортируемом и сцепленном/proc файле.

Строго говоря, может кто-то совет лучший способ общаться с модулем ядра, который не делает на самом деле управляет какими-либо аппаратными средствами и поэтому не должен замусорить/dev тупиковыми узлами, который существует только для вызовов ioctl? Я главным образом должен проверить его различные переменные состояния и отправить его, блок данных с типом запроса отмечает и видит если запрос, за которым следуют.

10
задан Ciro Santilli 新疆改造中心法轮功六四事件 23 July 2017 в 19:33
поделиться

4 ответа

Сокеты Netlink также предназначены для такого рода требований ...

Также см.

8
ответ дан 3 December 2019 в 18:32
поделиться

Вы также можете читать / писать с узлов устройства / dev.

IMHO, / dev уже завален разными вещами, и добавление собственных узлов не представляет большой проблемы. Не забывайте, что у вас может быть много кодов ioctl для одного узла устройства, а параметры ioctl передаются по ссылке, поэтому могут быть сколь угодно большими.

3
ответ дан 3 December 2019 в 18:32
поделиться

Также существует файловая система / sys (sysfs):

Sysfs экспортирует информацию о устройства и драйверы из ядра модель устройства в пользовательское пространство, а также используется для настройки.

(из Википедии )

8
ответ дан 3 December 2019 в 18:32
поделиться

Третий вариант - добавить новый вызов системы, но те два, которые вы написали, я думаю, являются предпочтительными. Я нашел этот документ, который может помочь, но я все еще думаю, что этот вариант не рекомендуется: http://www.csee.umbc.edu/courses/undergraduate/CMSC421/fall02/burt/projects/howto_add_systemcall.html

Другим приемлемым вариантом может быть совместное использование памяти.

2
ответ дан 3 December 2019 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: