Глава 7. Драйверы Ввода |
Предыдущая Содержание Следующая |
В этой главе
Подсистема ввода ядра была создана с целью объединить рассеянные драйверы, которые обрабатывают различные классы устройств ввода данных, таких как клавиатуры, мыши, трекболы, джойстики, роликовые колёса, сенсорные экраны, акселерометры и планшеты. Подсистема ввода даёт следующие преимущества, представленные в виде таблицы:
•Единообразную обработку функционально похожих устройств ввода, даже если они физически различны. Например, все мыши, такие, как PS/2, USB или Bluetooth, будут обрабатываться одинаково. •Удобный интерфейс событий для отправки пользовательским приложениям сообщений о вводе. Ваш драйвер не должен создавать и управлять узлами /dev и связанных с ними методов доступа. Вместо этого он может просто вызвать API для ввода, чтобы отправить движения мыши, нажатия клавиш или сообщения о касании вверх по направлению к пространству пользователя. Такие приложения, как X Windows, хорошо стыкуются с интерфейсами событий, экспортируемыми подсистемой ввода. •Выделение из входных драйверов общих частей и как результат - абстракция, которая упрощает драйверы и предоставляет взаимодействие. Например, подсистема ввода предлагает коллекцию низкоуровневых драйверов, названных serio, которые обеспечивают доступ к оборудованию ввода, такому, как последовательные порты и контроллеры клавиатуры.
Функционирование подсистемы ввода иллюстрирует Рисунок 7.1. Подсистема состоит из двух классов драйверов, которые работают в тандеме: драйверы событий и драйверы устройств. Драйверы событий отвечают за взаимодействие с приложениями, в то время как драйверы устройств отвечают за низкоуровневое взаимодействие с устройствами ввода. Генератор событий мыши, mousedev, является примером первого, а драйвер мыши PS/2 является примером последнего. И драйверы событий, и драйверы устройств могут воспользоваться услугами эффективного, свободного от ошибок, годного для многократного использования ядра, которое лежит в основе подсистемы ввода.
Рисунок 7.1. Подсистема ввода.
Поскольку драйверы событий являются стандартизированными и доступными для всех классов ввода, вам скорее потребуется реализовать драйвер устройства, чем драйвер событий. Для взаимодействия с пользовательскими приложениями ваш драйвер устройства может использовать подходящий существующий драйвер событий в ядре ввода. Обратите внимание, что в настоящей главе для обозначения драйвера устройства ввода используется термин драйвер устройства, а не драйвер входных событий. |
Предыдущая Содержание Следующая |