ИМЯ 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)
|