Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Системные таблицы драйверов устройств



Для регистрации драйверов в системе используются две системные таблицы: таблицы блок-ориентированных устройств — bdevsw, и таблица байт-ориентированных устройств — cdevsw. Соответственно, старший номер хранит ссылку на драйвер, хранящийся в одной из таблиц; тип таблицы определяется типом файла устройств.

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

Стоит отметить следующие типовые имена точек входа в драйвер:

- βopen(), βclose();

- βread(), βwrite();

- βioctl();

- βintr() [R38].

Символ β является аббревиатурой имени устройства: обычно в Unix-системах для именования устройства используют двухсимвольные имена. Например, lp — принтер, mt — магнитная лента, и т.п.

В общем случае система специфицирует наиболее полный набор функций, который может предоставить драйвер пользователю. Если какая-либо функция отсутствует, то на ее месте в коммутаторе может стоять заглушка. Заглушки могут быть двух типов: заглушка типа nulldev(), которая при обращении сразу возвращает управление, и заглушка типа nodev(), которая при обращении возвращает управление с кодом ошибки. Например, для таймера скорее всего будут отсутствовать функции чтения и записи, причем при попытке чтения или записи система должна «ругнуться» (т.е. заглушка типа nodev()).

Некоторые из перечисленных точек входа являются специализированными. С помощью функции βioctl() можно производить разного рода настройки и управление драйвером. Функция βintr() вызывается при поступлении прерывания, ассоциированного с данным устройством[R39].

Традиционно часть функций драйверов может быть реализовано синхронным способом, а другая часть — асинхронным способом. Соответственно, синхронная часть драйвера называется top half, а асинхронная — bottom half.





Дата публикования: 2014-11-03; Прочитано: 351 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...