Я не очень знаком с разработкой драйверов, но мне нужно выполнить простую адаптацию драйверов, и я не уверен в том, что делать дальше.Я не ищу подробных объяснений (которые я могу проверить в книге), но больше о том, какие «лучшие практики» показывают мне отправную точку моего сбора знаний.
Проблема заключается в следующем:
Изначально у нас был очень простой драйвер char, выполняющий эту операцию:
User "write" driver copies
Space ==== packets =====> the data
Code to open fd from user space
of the driver and passes it to
a hw controller
Простая адаптация заключается в том, что теперь контроллеру hw требуется дополнительный числовой тег для идентификациитип пакета.Обычно этот тег должен указываться вместе с каждым записанным пакетом.
Что более разумно сделать?
- создать отдельный вызов ioctl для предоставления этого тега, а затем выполнить "написать «вызов реальных данных пакета (а затем использовать« ioctl »и« запись »в пространстве пользователя).
- создать вызов ioctl для одновременной передачи тега и данных пакета (а затем использовать этот« ioctl »).«вызов в пользовательском пространстве»
- создание дополнительной структуры (совместно используемой пользовательским пространством и драйвером), содержащей тег и указатель на буфер, а затем «запись» этой структуры в пользовательское пространство (таким образом, копирование дваждыиз пространства пользователя: один для структуры и второй для пакетных данных).
- ...?
Любая подсказка / комментарий / предложение приветствуются.