CREATE_MODULE(2)

ИМЯ
create_module - создать элемент загружаемого модуля

ОБЗОР
#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.

ЗАМЕЧАНИЯ
Устаревший системный вызов, не поддерживается glibc. В заголовочных файлах glibc он не объявлен, но в недавнем прошлом версии glibc до 2.23 экспортировали ABI для этого системного вызова. Поэтому, чтобы получить данный системный вызов достаточно вручную объявить интерфейс в своём коде; или же можно вызвать его через syscall(2).

СМОТРИТЕ ТАКЖЕ
delete_module(2), init_module(2), query_module(2)