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