Запрос IRQ для многоканального устройства - PullRequest
0 голосов
/ 03 апреля 2019

Предположим, pci-драйвер для linux-kernel. Это устройство может иметь несколько каналов, которые могут быть «повышены» или «понижены» по отдельности.
Каждое «вверх» вызывает функцию .ndo_open, а каждое «вниз» вызывает .ndo_stop.
Для этого устройства требуется только одна линия прерывания, которую можно запросить с помощью request_irq (). Каждый запрос создаст одну строку прерывания. Здесь важно отметить, что строки прерываний редки и не должны создаваться бездумно. Мой вопрос к этой ситуации, где я должен использовать request_irq()?

На мой взгляд, у меня есть два возможных решения для этого.

  1. Прямо в probe(). Это создаст только одну линию прерывания, но она всегда будет создаваться при включении компьютера. Так что это может быть не использовано.
  2. В .ndo_open. Это создаст линию прерывания только тогда, когда это необходимо, но многоканальное устройство может создавать множественные вызовы .ndo_open, что приведет к множественным вызовам request_irq()

Мне не удалось найти какую-либо информацию об этой ситуации в документации по ядру. Если для этого есть какое-то руководство, не могли бы вы объяснить / показать его мне? Я также проверил другие pci-драйверы из git-repo , но ни у одного (или, по крайней мере, у тех, которые я проверял) не было этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...