create_module(2) создать элемент загружаемого модуля

ОБЗОР

#include <linux/module.h>


caddr_t create_module(const char *name, size_t size);

Замечание: В заголовочных файлах glibc эта функция отсутствует; смотрите ЗАМЕЧАНИЯ.

ОПИСАНИЕ

Замечание: Данный системный вызов доступен только в ядрах до Linux 2.6.

create_module() пытается создать элемент загружаемого модуля и зарезервировать память ядра, которая необходима для хранения модуля. Данный системный вызов требует особых прав.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении возвращается адрес в ядре, где будет располагаться модуль. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.

ОШИБКИ

EEXIST
Модуль с таким именем уже существует.
EFAULT
name вне доступного программного адресного пространства.
EINVAL
Запрашиваемый размер мал даже для информационного заголовка модуля.
ENOMEM
Ядро не может выделить непрерывный блок памяти, необходимый для модуля.
ENOSYS
create_module() не поддерживается в этой версии ядра (например, в 2.6 или более поздних).
EPERM
Вызывающий не имеет прав (не имеет мандата CAP_SYS_MODULE).

ВЕРСИИ

Данный системный вызов есть только в Linux до версии 2.4; он был удалён в Linux 2.6.

СООТВЕТСТВИЕ СТАНДАРТАМ

create_module() есть только в Linux.

ЗАМЕЧАНИЯ

Системный вызов create_module() не поддерживается glibc. В заголовочных файлах glibc он не объявлен, но в недавнем прошлом glibc экспортировал ABI для этого системного вызова. Поэтому чтобы получить данный системный вызов достаточно вручную объявить интерфейс в своём коде; или же вы можете вызвать его через syscall(2).