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.

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

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