Linux x86_64Sistema & diversos#175
init_module
Carrega um módulo do kernel a partir de uma imagem já em memória.
Descrição
Usada por `insmod(8)`; exige CAP_SYS_MODULE. Em sistemas com Secure Boot/verificação de assinatura habilitada, módulos não assinados corretamente são rejeitados.
Header:
linux/module.hman 2Assinatura
int init_module(
void * module_image,
unsigned long len,
const char * param_values
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| module_image | void * | Buffer com o conteúdo ELF do módulo. |
| len | unsigned long | Tamanho de `module_image`. |
| param_values | const char * | String de parâmetros do módulo (formato "chave=valor"). |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | module_imagevoid * |
| rsi | argumento 2 | lenunsigned long |
| rdx | argumento 3 | param_valuesconst char * |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EEXIST(17)
- Arquivo já existe.
- EINVAL(22)
- Argumento inválido.
- ENOMEM(12)
- Memória insuficiente para completar a operação.
- EPERM(1)
- Operação não permitida (falta de privilégio).
- EBADMSG(74)
- Mensagem inválida/corrompida.