Какова нижняя половина для драйвера, который на самом деле не имеет соответствующего оборудования? - PullRequest
1 голос
/ 31 мая 2010

Этот вопрос вдохновлен этим ответом ,

что делает нижняя половина для драйвера, который не имеет реального аппаратного устройства?

Ответы [ 3 ]

2 голосов
/ 31 октября 2011

Понятие нижней половины полезно только тогда, когда вы обслуживаете аппаратное прерывание в вашем драйвере. Маршрутизация службы аппаратных прерываний будет маскировать прерывания с более низким приоритетом, поэтому вы хотите выйти из аппаратного isr как можно быстрее. Нижние половины, будь то тасклеты или рабочие очереди, обрабатываются как мягкое прерывание, поэтому они обычно ничего не маскируют.

Что касается разделения задач, вы не хотите делать какие-либо вызовы, которые могут быть заблокированы, в аппаратном isr. Лучше всего сохранять данные в верхней половине, а затем выполнять обработку / системные вызовы / kmalloc / etc в нижней части.

1 голос
/ 31 мая 2010

Этот ответ использует метафору для объяснения драйверов устройств. Не обязательно деление на две половины, в которых нижняя контролирует аппаратное обеспечение.

В любом случае ответом может быть то, что эта «нижняя половина» имитирует какое-то оборудование, например, виртуальный привод CD-ROM или что-то в этом роде.

1 голос
/ 31 мая 2010

Это больше похоже на концептуальное разделение, чем на фактическое разделение, т.е.

  • нижняя половина - отправляет и получает сообщения на устройство и с устройства
  • верхняя половина - общение с платформой

В драйвере без фактического устройства «нижняя половина» делает то, что должен делать драйвер. Например, если это RAM-диск, он управляет блоками памяти.

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