Краткая справка |
Предыдущая Содержание Следующая |
Этот раздел суммирует функции ядра, переменные, макросы и /proc файлы, которых мы коснулись в этой главе. Он предназначен выступать как справочная информация. Каждый объект указывается после соответствующего заголовочного файла, если он необходим. Аналогичный раздел появляется в конце почти каждой главы, начиная с этой, суммируя новые обозначения, включённые в эту главу. Записи в этом разделе будет появляться в том же порядке, в котором они были введены в разделе:
insmod modprobe rmmod Утилиты пространства пользователя для загрузки модулей в работающее ядро и удаления их.
#include <linux/init.h> module_init(init_function); module_exit(cleanup_function); Макросы, которыми помечают функции модуля инициализации и очистки.
__init __initdata __exit __exitdata Маркеры для функций (__init и __exit) и данных (__initdata и __exitdata), которые используются только при инициализации модуля или во время очистки. Объекты, отмеченные для инициализации, могут быть отброшены после завершения инициализации; объекты выхода могут быть отброшены, если выгрузка модулей не была сконфигурирована в ядре. Эти маркеры работают, вызывая соответствующие объекты, находящиеся в специальной секции ELF исполняемого файла.
#include <linux/sched.h> Один из наиболее важных заголовочных файлов. Этот файл содержит определения многих API ядра, используемых драйвером, в том числе функции для бездействия (sleeping) и декларацию числовых переменных. struct task_struct *current; Указатель на текущий процесс. current->pid current->comm ID процесса и имя команды для текущего процесса. obj-m Символ в Makefile, используемый системой сборки ядра, чтобы определить, какие модули должны быть построены в текущем каталоге.
/sys/module /proc/modules /sys/module является иерархией каталогов sysfs, содержащих информацию о загруженных в данный момент модулях. /proc/modules является старейшей однофайловой версией этой информации. Записи содержат имя модуля, объём занимаемой каждым модулем памяти и счётчик использования. Чтобы указать флаги, которые в настоящее время активны для модуля, к каждой записи добавляются дополнительные строки. vermagic.o Объектный файл из каталога исходных текстов ядра, который описывает окружающую среду, для которой был построен модуль.
#include <linux/module.h> Обязательный заголовок. Он должен быть подключен в исходник модуля.
#include <linux/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_LICENSE(license); Объявляет лицензию, контролирующую данный модуль.
#include <linux/moduleparam.h> module_param(variable, type, nump, perm); Макрос, который создаёт параметр модуля, который может быть изменён пользователем, когда модуль загружается (или во время запуска для встроенного кода). Тип может быть одним из: bool, charp, int, invbool, long, short, ushort, uint, ulong или intarray.
#include <linux/kernel.h> int printk(const char * fmt, ...); Аналог printf для кода ядра.
|
Предыдущая Содержание Следующая |