Linux x86_64Sistema & diversos#313
finit_module
Carrega um módulo do kernel a partir de um descritor de arquivo, em vez de um buffer já em memória.
Descrição
Evita ter que ler o módulo inteiro para a memória do processo antes de carregá-lo, como `init_module` exige — o kernel lê diretamente do arquivo referenciado pelo descritor.
man 2Desde o kernel 3.8
Assinatura
int finit_module(int fd, const char * param_values, int flags);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| fd | int | Descritor de arquivo aberto no módulo (imagem ELF). |
| param_values | const char * | String de parâmetros do módulo. |
| flags | int | MODULE_INIT_IGNORE_MODVERSIONS, MODULE_INIT_IGNORE_VERMAGIC. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | fdint |
| rsi | argumento 2 | param_valuesconst char * |
| rdx | argumento 3 | flagsint |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EBADF(9)
- Descritor de arquivo inválido.
- EEXIST(17)
- Arquivo já existe.
- EPERM(1)
- Operação não permitida (falta de privilégio).
- EBADMSG(74)
- Mensagem inválida/corrompida.