Готовый перевод 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>
module_param(variable, type, perm);
</pre>
Макрос, создающий параметр модуля, который может определяться пользователем при загрузке модуля (или при загрузке ядра, если код модуля встраивается в ядро). Тип может быть bool, charp, int, invbool, long, short, ushort, uint, ulong, или intarray.
#include <kernel.h>
int printk(const char * fmt, ...);
Аналог printf для кода ядра
Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется
Переведено на Нотабеноиде
http://notabenoid.org/book/11832/38235
Переводчики: ximen, allez
Настройки
Готово:
