The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Предварительные замечания

Предварительные замечания

Предыдущая  Содержание  Следующая V*D*V

Мы приближаемся к просмотру некоторого фактического кода модуля. Но сначала нам необходимо взглянуть на некоторые другие вещи, которые должны появиться в ваших исходных файлах модуля. Ядро является уникальной окружающей средой и это накладывает свои требования на код, который будет с ним взаимодействовать.

 

Большинство кода ядра приходит к включению довольно большого числа заголовочных файлов для получения определения функций, типов данных и переменных. Мы будем рассматривать эти файлы по мере подхода к ним, но есть несколько, которые являются специфическими для модулей, и должны появиться в каждом загружаемом модуле. Таким образом, почти все коды модулей имеют следующее:

 

#include <linux/module.h>

#include <linux/init.h>

 

module.h содержит большое количество определений символов и функций, необходимых загружаемым модулям. Вам необходим init.h, чтобы указать ваши функции инициализации и очистки, как мы видели в вышеприведённом примере “hello world”, и к которому мы вернёмся в следующем разделе. Большинство модулей также подключают moduleparam.h, чтобы разрешить получение параметров модуля во время загрузки; мы будем делать это в ближайшее время. Это не является строго необходимым, но ваш модуль действительно должен указать, под какой лицензией распространяется код. Делается это просто включением строки MODULE_LICENSE:

 

MODULE_LICENSE("GPL");

 

Определёнными лицензиями, признаваемыми ядром являются “GPL” (для любой версии GNU General Public License), “GPL v2” (для GPL версии 2 только), “GPL and additional rights” ("GPL и дополнительные права"), “Dual BSD/GPL” (“Двойная BSD/GPL“), “Dual MPL/GPL” (“Двойная MPL/GPL”) и “Proprietary” (“Частная собственность”). Если ваш модуль не помечен явно находящимся под свободной лицензией, признающейся ядром, предполагается, что он будет частным, а ядро "испорчено", когда модуль загружен. Как уже упоминалось в разделе "Лицензионное соглашение" в Главе 1, разработчики ядра имеют склонность относиться без энтузиазма к помощи пользователям, у которых возникают проблемы после загрузки собственных модулей.

 

Другие описательные определения, которые могут содержаться внутри модуля включают MODULE_AUTHOR (где указывается, кто написал модуль), MODULE_DESCRIPTION (описание для человека, что делает модуль), MODULE_VERSION (номер ревизии кода; смотрите комментарии в <linux/module.h> для соглашений, используемых при создании строки версии), MODULE_ALIAS (другое имя, под которым этот модуль может быть известен) и MODULE_DEVICE_TABLE (говорит пространству пользователя, какие устройства поддерживает модуль). Мы обсудим MODULE_ALIAS в Главе 11 и MODULE_DEVICE_TABLE в Главе 12.

 

Различные декларации MODULE_ могут появиться в любом месте вашего исходного файла вне функции. Однако, по относительно недавнему соглашению, в коде ядра эти декларации размещаются в конце файла.

Предыдущая  Содержание  Следующая