Готовый перевод Linux Device Drivers 3 / Драйверы устройств Линукс (третье издание): 2.10. Краткий обзор

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «перевод редактируется»

2.10. Краткий справочник

В этом разделе собраны описания функций ядра, переменных, макросов и файлов /proc, затронутых в данной главе. Они предназначены для использования в справочных целях. Каждый объект указывается после соответствующего заголовочного файла, если таковой есть. Подобные разделы, подводящие краткие итоги по новому материалу, есть почти в каждой главе, начиная с текущей. Объекты в данных разделах обычно перечисляются в том же порядке, в каком они были представлены в главе:

insmod
modprobe
rmmod

Пользовательский утилиты, служащие для загрузки модулей в работающее ядро и их выгрузки.

#include <init.h>
module_init(init_function);
module_exit(cleanup_function);

Макросы, обозначающие функции инициализации и очистки модулей.

__init
__initdata
__exit
__exitdata

Маркеры для функций (__init и __exit) и данных (__initdata и __exitdata), использующихся только во время инициализации и очистки модуля. Объекты, помеченные для инициализации, могут быть отброшены после окончания инициализации; объекты, помеченные для очистки, могут быть отброшены, если выгрузка модуля не предусмотрена конфигурацией ядра. Эти маркеры работают путем помещения соответствующих объектов в специальный ELF-раздел исполняемого файла.

#include <sched.h>

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

struct task_struct *current;
Текущий процесс.
current->pid
current->comm

Идентификатор процесса и имя команды для текущего процесса.

obj-m

Символ makefile'а, используемый системой сборки ядра для определения, какие модули должны быть собраны в текущем каталоге.

/sys/module
/proc/modules

/sys/module это иерархия каталогов, содержащая информацию о модулях, загруженных на данный момент. /proc/modules -- старый вариант представления этой информации в одном файле. Записи содержат имя модуля, количество памяти, занимаемое каждым модулем и количество обращений. Дополнительные данные в конце каждой строки указывают флаги, активные для модуля в данный момент.

vermagic.o

Объектный файл из каталога исходных кодов ядра, описывающий окружение, для которого был собран модуль.

#include <module.h>

Обязательный заголовочный файл, подключаемый в коде модуля.

#include <version.h>

Заголовочный файл, содержащий информацию о версии собираемого ядра.

LINUX_VERSION_CODE

Целочисленный макрос, полезный при проверке версий с помощью #ifdef.

EXPORT_SYMBOL (symbol);
EXPORT_SYMBOL_GPL (symbol);

Этот макрос используется для экспортирования символа в ядро. Вторая форма экспортирует без использования информации о версиях, а третья ограничивает экспорт модулями с лицензией GPL.

MODULE_AUTHOR(author);
MODULE_DESCRIPTION(description);
MODULE_VERSION(version_string);
MODULE_DEVICE_TABLE(table_info);
MODULE_ALIAS(alternate_name);

Помещает описание модуля в объектный файл.

module_init(init_function);
module_exit(exit_function);

Макросы, определяющие функции инициализации и завершения модуля.

<pre>
#include moduleparam.h&gt;
module_param(variable, type, perm);
</pre>

Макрос, создающий параметр модуля, который может определяться пользователем при загрузке модуля (или при загрузке ядра, если код модуля встраивается в ядро). Тип может быть bool, charp, int, invbool, long, short, ushort, uint, ulong, или intarray.

#include &lt;kernel.h&gt;
int printk(const char * fmt, ...);

Аналог printf для кода ядра

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется

Переведено на Нотабеноиде
http://notabenoid.org/book/11832/38235

Переводчики: ximen, allez

Настройки

Готово:

100.00% КП = 1.0