master - основной файл с информацией об устройствах
Файл master используется утилитой для получения информации об устройствах, на основаниии которой генерируются конфигурационные файлы low.s и conf.c. Утилита config читает dfile и помещает информацию из каждого элемента первой части в массивы, заготовленные по основному файлу master. Для получения информации о получаемых файлах см. , а о значении полей в первой части поддерживаемого пользователем файла dfile см. . Файл master состоит из пяти частей, разделенных символом $ в первой колонке. Любая строка, содержащая звездочку в первой колонке или звездочку, перед которой находятся только пробелы и табуляции, считается строкой комментария.
Часть 1 содержит информацию об устройствах; в части 2 задаются дополнительные имена устройств; часть 3 содержит информацию о настраиваемых параметрах. В частях 4 и 5 располагается информация, относящаяся к конфигурации систем только для семейства M68000. Часть 4 (спецификация микропроцессора) должна присутствовать в файле master и не должна присутствовать в файле dfile. Часть 5 содержит строки в точности того же формата, что и специфическая для M68000 часть в .
Ниже описываются пять частей файла master. В качестве примера используется дисковый контроллер.
Первая часть
Часть 1 содержит строки по 10 полей в каждой. Поля разделяются пробелами.
Поле 1 - имя устройства (не более 8 символов).
Поле 2 - размер (десятичный) векторов прерываний; размер есть количество векторов, умноженное на четыре.
Поле 3 - спецификация программ выполнения управляющих действий (более кратко - обработчика) устройства. Для каждого нужного обработчика следует задать соответствующую букву; если обработчик не существует, вместо буквы указывается символ -. Допустимы следующие спецификации:
Самостоятельные программы открытия и закрытия для блочных и символьных устройств. Так, комбинация букв sO означает, что для диска программа открытия его как блочного устройства будет называться hdbopen, а как символьного - hdcopen. |
Устройство имеет структуру терминала. |
Обработка (выполнение) инициализации. |
Обработка ошибки питания. |
Обработка открытия. |
Обработка закрытия. |
Обработка чтения. |
Обработка записи. |
Обработка управляющих действий. |
Драйвер потока. Других обработчиков у него быть не должно. |
Создать массив векторов прерывания, например, hd_ivec [ ]. Для каждого вектора, описанного в файле dfile, в массив помещается (шестнадцатеричный) адрес вектора (номер вектора умножается на 4). |
Создать для устройства символьный старший номер и блочный старший номер (например, hd_cmaj и hd_bmaj). |
Создать массив уровней прерываний, например, hd_ilev [ ]; уровни прерывания указаны в четвертом поле, уровень, каждой строки в первой части файла dfile. |
Разрешить только одно данное устройство. |
Не вставлять счетчик в файл conf.c. |
Не вставлять вектор прерываний. |
Требуемое устройство. |
Блочное устройство. |
Символьное устройство. |
Устройство, управляемое прерываниями, не блочное и не символьное. |
Разрешить определения одного вектора с многими адресами. |