Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Основные принципы системной разработки > Запуск системы, быстрая активация устройств > Быстрая активация устройств > API минидрайверов > mdriver_add()



mdriver_add()

Регистрация минидрайвера в системе

Прототип:

int mdriver_add( char *name,
int interrupt,
int (*handler)( int state, void *data ),
paddr32_t data_paddr,
unsigned data_size );

Аргументы:

name
Произвольная строка символов, идентифицирующая минидрайвер.
interrupt
Значение, которое передается в InterruptAttach() для присоединения к прерыванию. В первую очередь он проверяется на допустимость значения. По этой причине предварительно следует выполнить init_intrinfo() для добавления информации о прерывании в системную страницу. Только после этого можно будет зарегистрировать минидрайвер.
handler
Обработчик минидрайвера. Она будет вызываться в разное время, чтобы разработчик смог выполнить контроль и проверку устройства. Факт вызова обработчика не обязательно говорит о том, что устройству требуется внимание со стороны драйвера. Принятие решения о необходимости управляющих воздействий является компетенцией разработчика минидрайвера.
data_paddr
Физический адрес блока памяти, который доступен минидрайверу. Это может быть как предопределённое или зарезервированное пространство, так и выделенная с помощью функции startup alloc_ram() память.
data_size
Размер блока памяти, ассоциированного с data_paddr.

Библиотека:

libc

Описание:

Эта функция регистрирует минидрайвер в системе.

mdriver_handler()

Этот обработчик вызывается для зарегистрированного в системе минидрайвера.

Прототип имеет вид:

int mdriver_handler( int state, void *data );

Аргументы обработчика:

state
Указывает причину вызова обработчика:
MDRIVER_INIT
Драйвер инициализируется, обработчик вызван из mdriver_add(). Вызывается с этим состоянием только один раз.
MDRIVER_STARTUP
Драйвер вызывается откуда-то из startup.
MDRIVER_STARTUP_PREPARE
Подготовка к работе минидрайвера вне startup.
MDRIVER_STARTUP_FINI
Последний вызов драйвера из startup.
MDRIVER_KERNEL
Драйвер вызывается во время инициализации ядра.
MDRIVER_PROCESS
Драйвер вызывается во время инициализации системы и менеджера процессов.
MDRIVER_INTR_ATTACH
Процесс вызывает InterruptAttachEvent() с тем же номером прерывания, что использует минидрайвер.
data
Указатель на виртуальный адрес блока данных, соответствующий параметру data_paddr функции mdriver_add().

Возвращаемое значение:

Индекс в разделе mdriver системной страницы для вновь добавленного минидрайвера или -1, если минидрайвер не был зарегистрирован.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

struct mdriver_entry, mdriver_max




Предыдущий раздел: перейти