Механизмы динамической загрузки для различных типов модулей сходны между собой, однако в этом разделе мы поговорим только о драйверах устройств. Загрузка драйвера в работающее ядро сводится к проведению нескольких действий.
Также вам может показаться, что такая тема как http://талеон.рф/index.php/plotternaya-rezka-plenki-rostov никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт талеон.рф. Тема плоттерная резка самоклеющейся пленки там представлена весьма широко. На том сайте можно узнать много интересного на тему плоттерная резка самоклеющейся пленки. Что означает вообще тема плоттерная резка самоклеющейся пленки, где найти плоттерная резка самоклеющейся пленки - про это написано на сайте талеон.рф. Это очень важная для многих людей тема - плоттерная резка самоклеющейся пленки. Спасибо сайту талеон.рф за информацию на тему плоттерная резка самоклеющейся пленки.
1. Присвоение и связывание идентификаторов (symbols) драйвера. За это отвечает загрузчик времени выполнения.
2. Инициализация драйвера и устройства.
3. Добавление драйвера в таблицы переключателя устройств, что дает возможность ядру обращаться к процедурам переключателя.
4. Установка обработчика прерываний, что обеспечивает реагирование драйвера на прерывания устройства.
Выгрузка драйвера также требует принятия некоторых мер, в число которых входит освобождение памяти, используемой драйвером, выполнение операций завершения работы драйвера и устройства, отключение обработчика прерываний и удаление всех ссылок на драйвер из прочей части ядра.
Система SVR4.2 поддерживает набор средств, решающих все перечисленные выше задачи. С появлением этой ОС в спецификацию DDI/DKI были добавлены новые процедуры1.
prefix_load()
Процедура раздела 2, ее реализация должна быть предоставлена драйвером. Процедура производит инициализацию драйвера, вызывается ядром системы при необходимости загрузки драйвера. Ее задачи сходны с действиями, производимыми start и init, так как эти функции не используются при динамической загрузке драйвера. Процедура выделяет память для закрытых данных и инициализирует различные структуры данных. Затем происходит вызов процедуры mod_drvattach() для установки обработчика прерываний. Последним этапом работы процедуры prefix_loadQ является инициализация всех устройств, ассоциированных с драйвером.
prefix_unload()
Процедура раздела 2 предоставляется драйвером. Загружается ядром для проведения «уборки» драйвера при его выгрузке. Как правило, она производит действия, противоположные задачам процедуры prefix_unload(). Она вызывает mod_drvattach() для отключения обработчика прерываний драйвера, освобождает занимаемую им память и производит все необходимые действия по завершению работы драйвера и устройств.
mod_drvattach()
Это процедура раздела 3, поддерживаемая ядром. Выполняет установку обработчика прерываний драйвера и разрешает прерывания от устройств драйвера. Должна вызываться из prefix_load() с единственным параметром, содержащим указатель на структуру pre/irattach_info драйвера. Эта структура определяется и инициализируется инструментами настройки ядра при проведении его конфигурирования. Структура является прозрачной для драйвера, который не имеет права обращаться к любому ее полю.
mod_drvdettach()
Раздел 3, поддерживается ядром. Запрещает поступления прерываний драйверу и отключает их обработчик. Должна вызываться изрге/іг_ипІоасі() с указателем на pre/£rattach_info в качестве входного параметра.
Опубликовал katy
June 24 2015 16:53:27 ·
0 Комментариев ·
2712 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.