create_module(2)
| CREATE_MODULE(2) | Руководство программиста Linux | 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).
СМОТРИТЕ ТАКЖЕ
| 2017-09-15 | Linux |
