2.10. Краткий справочник
В этом разделе собраны описания функций ядра, переменных, макросов и файлов /proc, затронутых в данной главе. Они предназначены для использования в справочных целях. Каждый объект указывается после соответствующего заголовочного файла, если таковой есть. Подобные разделы, подводящие краткие итоги по новому материалу, есть почти в каждой главе, начиная с текущей. Объекты в данных разделах обычно перечисляются в том же порядке, в каком они были представлены в главе:
insmod
modprobe
rmmod
- Пользовательский утилиты, служащие для загрузки модулей в работающее ядро и их выгрузки.
#include
module_init(init_function);
module_exit(cleanup_function);
- Макросы, обозначающие функции инициализации и очистки модулей.
__init
__initdata
__exit
__exitdata
- Маркеры для функций (__init и __exit) и данных (__initdata и __exitdata), использующихся только во время инициализации и очистки модуля. Объекты, помеченные для инициализации, могут быть отброшены после окончания инициализации; объекты, помеченные для очистки, могут быть отброшены, если выгрузка модуля не предусмотрена конфигурацией ядра. Эти маркеры работают путем помещения соответствующих объектов в специальный ELF-раздел исполняемого файла.
#include
- Один из наиболее важных заголовочных файлов. Он содержит определения большей части API ядра, используемого драйвером, включая функции для засыпания и многочисленные переменные.
struct task_struct *current;
Текущий процесс.
current->pid
current->comm
- Идентификатор процесса и имя команды для текущего процесса.
obj-m
- Символ makefile'а, используемый системой сборки ядра для определения, какие модули должны быть собраны в текущем каталоге.
/sys/module
/proc/modules
- /sys/module это иерархия каталогов, содержащая информацию о модулях, загруженных на данный момент. /proc/modules -- старый вариант представления этой информации в одном файле. Записи содержат имя модуля, количество памяти, занимаемое каждым модулем и количество обращений. Дополнительные данные в конце каждой строки указывают флаги, активные для модуля в данный момент.
vermagic.o
- Объектный файл из каталога исходных кодов ядра, описывающий окружение, для которого был собран модуль.
#include
- Обязательный заголовочный файл, подключаемый в коде модуля.
#include
- Заголовочный файл, содержащий информацию о версии собираемого ядра.
LINUX_VERSION_CODE
- Целочисленный макрос, полезный при проверке версий с помощью #ifdef.
EXPORT_SYMBOL (symbol);
EXPORT_SYMBOL_GPL (symbol);
- Этот макрос используется для экспортирования символа в ядро. Вторая форма экспортирует без использования информации о версиях, а третья ограничивает экспорт модулями с лицензией GPL.
MODULE_DESCRIPTION(description);
MODULE_VERSION(version_string);
MODULE_DEVICE_TABLE(table_info);
MODULE_ALIAS(alternate_name);
- Помещает описание модуля в объектный файл.
module_init(init_function);
module_exit(exit_function);
- Макросы, определяющие функции инициализации и завершения модуля.
#include moduleparam.h> module_param(variable, type, perm);
- Макрос, создающий параметр модуля, который может определяться пользователем при загрузке модуля (или при загрузке ядра, если код модуля встраивается в ядро). Тип может быть bool, charp, int, invbool, long, short, ushort, uint, ulong, или intarray.
#include
int printk(const char * fmt, ...);
- Аналог printf для кода ядра
http://notabenoid.com/book/11832/38235
Внимание! Этот перевод, возможно, ещё не готов,
так как модераторы установили для него статус
"перевод редактируется"
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.