2.6. Подготовительные мероприятия
Мы подходим к рассмотрению фактического кода модулей. Но сначала нам нужно взглянуть на некоторые вещи, которые обязательно должны быть в вашем коде. Ядро -- это уникальное окружение, и оно налагает свои требования на код, взаимодействующий с ним.
Большая часть кода ядра заканчивается включением достаточно большого числа заголовочных файлов для получения определений функций, типов данных и переменных. Мы рассмотрим эти файлы по ходу того, как они будут нам встречаться, но есть несколько файлов, специфичных для модулей, обязательных для каждого модуля. Так, почти всем модули содержат следующие файлы:
#include
#include
module.h содержит огромное количество определений символов и функций, необходимых загружаемому модулю. Вам нужен init.h, чтобы указать функции инициализации и завершения, как видно из примера "hello world" выше, с которыми мы ещё встретимся в следующем разделе. Большинство модулей также включают ещё moduleparam.h, что бы позволить передачу параметров модулю во время загрузки; скоро мы до этого доберемся.
Это не является строго обязательным, но вашему модулю на самом деле стоит указать, какая лицензия распространяется на его код. Это всего лишь вопрос добавления строки MODULE_LICENSE:
MODULE_LICENSE("GPL");
Ядро знает следующие лицензии: "GPL" (для любой версии GNU General Public License), "GPL v2" (только для GPL второй версии), "GPL and additional rights" (GPL и дополнительные права), "Dual BSD/GPL" (двойная лицензия GPL/BSL), "Dual MPL/GPL" (двойная лицензия MPL/GPL), and "Proprietary" (проприетарная). Если в модуле явно не отмечено использование свободной лицензии, распознаваемой ядром, полагается что код распространяется под проприетарной лицензией, и ядро "пятнается" при загрузке такого модуля. Как мы отмечали в разделе 1.6, разработчики ядра без энтузиазма относятся к помощи пользователям, испытывающим проблемы после загрузки проприетарных модулей.
Кроме этого, в ядре могут содержаться следующие описательные определения: MODULE_AUTHOR (указывает, кто написал модуль), MODULE_DESCRIPTION (человеко-читаемое описание того, что делает модуль), MODULE_VERSION (номер ревизии кода, см. комментарии в
Различные определения вида MODULE_ могут встречаться в любом месте файла исходных кодов за пределами функции. Однако, в соответствии с относительно недавними соглашениями, они должны располагаться в конце файла.
Переведено на сайте www.notabenoid.com
http://notabenoid.com/book/11832/38206
Внимание! Этот перевод, возможно, ещё не готов,
так как модераторы установили для него статус
"перевод редактируется"
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.