2016-09-16 15 views
3

Я разрабатываю модуль ядра Linux для встроенной системы.
Система содержит программируемую логику (PL), к которой необходимо получить доступ из процессов пользовательского пространства.Почему configfs не поддерживает mmap?

  • PL может измениться во время выполнения.

  • Мой модуль позволяет процессам получать доступ к указанным регистрам и страницам hw.
    Эти сопоставления настраиваются (во время выполнения) в привязке configfs моего модуля.

  • Каждое сопоставление получает запись в configfs, по которой ее доступно.

Я хотел бы разрешить процессам mmap целые страницы, чтобы они могли напрямую связываться с PL.

Но configfs не поддерживает mmap.

  • Есть ли причина, почему?
  • Sysfs поддерживает mmap, поэтому я не вижу проблем, почему configfs не должен.

Решение будет отражать мое configfs дерево в sysfs,
но побеждает все основания использовать configfs ... Любые идеи?

ответ

1

configfs не является заменой sysfs. Фактически, его можно рассматривать как противоположность sysfs.

sysfs обеспечивает представление объектов ядра, хотя интерфейс файловой системы. Его можно использовать для изменения вещей или для некоторых действий над этими объектами, но для этого это не предназначалось. Основной момент здесь заключается в том, что каждый объект, который представлен в sysfs, создается и уничтожается в ядре. Ядро управляет жизненным циклом представления sysfs, а sysfs - всего лишь окно на все это.

configfs, с другой стороны, обеспечивает способ создания или изменения объектов ядра через интерфейс файловой системы. Это принципиальная разница. Процесс пользовательского пространства может создавать каталоги в пределах configfs. Это действие вызовет выполнение обратного вызова в ядре и создание соответствующего объекта ядра. Файлы в каталоге будут представлять состояния различных компонентов объекта.

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

Не видя дизайна/архитектуры вашей системы, сложно сказать что-то определенное в вашем случае. Из вашего описания видно, что sysfs может быть тем, что вам нужно для удовлетворения желаемых целей. Все объекты, к которым вам нужен доступ, создаются, изменяются и уничтожаются из ядра. Ограниченные настройки/изменения существующих структур/объектов ядра в вашем модуле могут быть выполнены через интерфейс sysfs. Опять же, вполне возможно, что вы хотели бы иметь в своем модуле как интерфейсы sysfs, так и configfs, каждый для своей конкретной цели. В этом нет ничего плохого, если это сделает вещи чище и понятнее.

+0

Я думал, что это не лучший стиль для использования обоих интерфейсов. Но довольно удобно настраивать конфигурацию через configfs и все связанные с доступом вещи по сравнению с sysfs. Благодарю. – drechsler

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

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