|
НАЗВАНИЕ
dfile - файл с информацией об устройствах
ОПИСАНИЕ
Файл устройств, dfile, содержит информацию об устройствах, входящих в систему. Файл делится на три части.
Первая содержит спецификации физических устройств. Вторая - системно-зависимую информацию. Третья часть содержит информацию, относящуюся к конкретному микропроцессору. Первые две части являются обязательными,
третья - нет. Строка со звездочкой в начале или звездочкой, перед которой идут табуляции или пробелы, является комментарием.
Ниже описываются три части файла устройств. В качестве примера используется дисковый контроллер.
Первая часть файла устройств
Каждая строка состоит из четырех или пяти полей, разделенных табуляциями и/или пробелами и имеет следующий
формат:
имя_устройства вектор адрес уровень число
Имя_устройства задается так же, как в файле master(4), где оно располагается в поле 1 строк из первой части и состоит не более чем из 8 символов [см. master(4)].
Вектор задает шестнадцатеричный адрес вектора прерываний; это значение используется также в массиве векторов прерываний, который создается при указании буквы v в поле 4 файла master(4).
Адрес является шестнадцатеричным адресом устройства; массив адресов устройств создается автоматически (например, hd_addr [ ]).
Уровень - это уровень запроса шины или уровень прерываний (от 1 до 7). Он используется в массиве уровней прерываний (например, hd_ilev [ ]), который создается при указании буквы l в поле 4 строк первой части файла master(4).
Пятое поле, число - есть (десятичное) число устройств, ассоциированных с соответствующим контроллером. Поле число - необязательное и, если оно опущено, используется значение по умолчанию, которое является максимальным для данного контроллера. Данное поле означает то же, что и поле 9 строк первой части файла master(4), но значение из файла устройств перекрывает значение из файла master(4).
Имеется также несколько драйверов, которые могут поддерживаться системой, но которые являются драйверами псевдоустройств, то есть нет реального оборудования, ассоциированного с ними. В описании псевдоустройств значения полей вектор, адрес и уровень_запроса равны нулю.
Вторая часть файла устройств
Вторая часть содержит строки шести различных типов.
Обязательны только строки первых четырех типов. Порядок
спецификаций может быть произвольным.
root имя_устройства младший_номер pipe имя_устройства младший_номер dump имя_устройства младший_номерМладший_номер является восьмеричным.
swap имя_устройства младший_номер нач_блок числоНач_блок есть блок диска (десятичный), с которого начинается область подкачки; число задает размер области в блоках.
filesys ид_1 флаг_1 ид_2 флаги_2Ид_1 есть имя типа файловой системы (не более чем из четырех символов) в том виде, как оно выдается компонентом fs_namei ( ) структуры fstypsw [см. <sys/ conf.h>].
Установленный флаг_1 означает, что после очередного обращения к описателю файла будет вызван компонент fs_iput ( ) структуры fstypsw, что влияет на режим буферизации. Для файловых систем версии 5 этот флаг должен быть нулевым.
Ид_2 есть имя типа файловой системы (не более чем из восьми символов) в том виде, как оно хранится в структуре fsinfo [см. <sys/conf.h>].
Если файловая система должна уведомляться о некоторых действиях, следует установить соответствующие флаги из флагов_2. Уведомление состоит в вызове компонента fs_notify ( ) структуры fstypsw. Можно установить такие флаги (или их комбинацию):
1 | Изменение каталога. |
---|---|
2 | Изменение корня. |
4 | Позиционирование. |
Например, строка
fylesys s5 0 S51k 04описывает стандартную файловую систему версии 5.
linemod имя_режима список_обработчиковИмя_режима состоит не более чем из четырех символов.
Список_обработчиков задается как цепочка символов. Буква соответствует существующему обработчику, отсутствие обозначается символом -. Могут задаваться следующие обработчики:
m | Обработка прерываний модема. |
---|---|
o | Обработка вывода. |
i | Обработка ввода. |
O | Обработка открытия. |
C | Обработка закрытия. |
R | Обработка чтения. |
W | Обработка записи. |
I | Обработка управления. |
Стандартный режим задается как -oiOCRWI, то есть обрабатывать все, кроме прерываний модема.
имя_параметра значениеОтметим, что все параметры должны получить значение, либо в файле master(4), либо в описываемом файле устройств.
stream имя_модуля имя_структурыИмя_модуля задает модуль потока, который может встречаться в команде I_PUSH системного вызова ioctl(2) [см. streamio(7)].
Имя_структуры есть имя указателя на структуру типа streamtab. И имя_модуля, и имя_структуры должны состоять не более чем из восьми символов.
Третья часть файла устройств
Третья часть содержит строки, каждая из которых начинается с определенного ключевого слова. Играет роль порядок этих строк.
force идентификаторгде идентификатор есть имя уникального идентификатора, определенного внутри драйвера, находящегося в библиотеке ввода/вывода ядра ОС. В результате при редактировании связей будут правильно подключены нетаблично управляемые драйверы, такие, например, как драйверы часов, консоли и устройства управления памятью.
alien адрес_вектора сторонний_обработчикАдрес_вектора есть шестнадцатеричный адрес обычного вектора прерываний, подлежащих дополнительной обработке, а сторонний_обработчик задается шестнадцатеричным адресом точки входа. Если с адресом_вектора не ассоциирован обработчик прерываний, то сторонний_обработчик помещается в вектор. В противном случае в программе low.s порождаются команды [см. config(1M)], чтобы сторонний_обработчик получал управление, только если прерывание произошло в привилегированном режиме.
dup флаги адрес_вектора обработчик аргументФлаги представляют собой битную маску. Биты интерпретируются следующим образом:
1 | Если обработчик вернул 0, перейти на нормальную точку возврата из прерывания ("intret"). |
---|---|
2 | Если обработчик вернул 0, перейти на нормальную точку возврата из ловушки ("alltraps"). |
4 | Если обработчик вернул 0, перейти на точку возврата по равенству ("beq return"). |
10 | Программе обработки прерывания должен быть передан аргумент. |
Адрес_вектора есть шестнадцатеричный адрес вектора прерываний. Обработчик - есть имя программы обработки прерываний с необязательным аргументом. Цель данной спецификации - обеспечить возможность задания нескольких программ обработки для одного прерывания. Обработчики вызываются в порядке их указания в файле устройств; затем вызывается нормальная программа обработки прерываний. Если биты 1, 2 или 4 флагов равны 1, а обработчик вернул 0, оставшиеся обработчики не вызываются.
ram флаги мин_адрес макс_адрес [размер]Флаги представляют собой битную маску. Биты интерпретируются следующим образом:
1 | Память не имеет контроля четности и, следовательно, не требует инициализации после включения питания. |
---|---|
2 | Может существовать только единый блок памяти, от мин_адреса до макс_адреса-1. |
4 | В диапазоне от мин_адреса до макс_адреса-1 может располагаться несколько блоков памяти, каждый указанного размера. |
Мин_адрес, макс_адрес и размер являются шестнадцатеричными. Цель данной спецификации - предоставить ядру ОС информацию о конфигурации памяти, содержащей разрывы. Мин_адрес определяет минимальный адрес, по которому может находиться память, макс_адрес-1 есть верхняя граница. Если в этих пределах содержится несколько плат памяти, часть которых может отсутствовать, каждая из них должна иметь заданный размер.
Если память помечена флагами со значением 2, ядро ОС осуществляет запись в последовательные ячейки, начиная с мин_адреса, пока не возникнет ошибка памяти. Если установлен флаг 4, ядро ОС проверяет каждый поддиапазон указанного размера. Если память не нуждается в инициализации, для определения наличия памяти проверяется только первый байт диапазона (флаг 2) или поддиапазона (флаг 4).
Существенно, что строки, специфицирующие конфигурацию памяти, должны располагаться в порядке возрастания минимальных адресов. Если два минимальных адреса равны (в диапазоне могут располагаться блоки памяти разного размера), строки должны быть упорядочены по возрастанию размеров.
ФАЙЛЫ
/usr/src/uts/dfile /usr/src/uts/master /usr/src/uts/low.s /usr/src/uts/conf.c /usr/include/sys/conf.h
СМ. ТАКЖЕ
master(4).
config(1M) в Справочнике администратора.
|