2017-01-09 12 views
2

У меня есть модуль ядра, который выделяет память, и я хотел бы поделиться этой памятью с пользовательским процессом. В обычном режиме мы можем делать это только с помощью: mmap,/proc, shmem и т. Д., Но в однопользовательском режиме для встроенных устройств нет способа поделиться простым указателем?Обмен памятью из ядра linux в пользовательское пространство в однопользовательском режиме

ответ

1

"Единый пользовательский режим" является соглашением определяется пользовательским приложением. Это не имеет никакого значения для ядра; все те же правила применяются как «нормальный режим».

Если вы хотите получить доступ к памяти - любая память - из пользовательского пространства вам необходимо каким-то образом отобразить эту память в процессе. Использование mmap() на специальном файле или устройстве - самый естественный способ сделать это.

+0

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

+0

@PhilBouchard К сожалению, вы сами в этом думаете. Защита памяти столь же важна во встроенных устройствах, как и в других местах. – duskwuff

+0

Если вы тщательно протестировали свои процессы, и вы «доверяете им», то я думаю, что должен быть способ напрямую поговорить с ядром и делать все, что вы хотите (для встроенных устройств, конечно, конечно). –

1

Файловая система pseudo sysfs (/sys) предназначена для этой цели (выведите данные ядра в пользовательское пространство). Вы также можете записать эти структуры данных из пользовательского пространства.

Заканчивать Greg Kroah-Hartman's Driver Tutorial

Read SysFS Documentation

+0

Спасибо за информацию, я вижу, что sysfs похож на ramfs, что именно то, что я ищу! –

+0

@PhilBouchard Ты уверен? sysfs не имеет ничего общего с ramfs, кроме того, что они являются файловыми системами. – duskwuff

+0

Я имел в виду, что sysfs можно читать как ramfs (прямой доступ к памяти) –

 Смежные вопросы

  • Нет связанных вопросов^_^