Краткая справка

Предыдущая  Содержание  Следующая V*D*V

Этот раздел суммирует функции ядра, переменные, макросы и /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 для кода ядра.

 

Предыдущая  Содержание  Следующая