Linux x86_64Memória#149
mlock
Trava uma região de memória em RAM, impedindo que seja enviada para swap.
Descrição
Usada por aplicações sensíveis a latência (áudio em tempo real) ou segurança (evitar que segredos criptográficos sejam escritos em disco via swap).
Header:
sys/mman.hman 2Nota
Sujeita ao limite de recurso RLIMIT_MEMLOCK para processos sem CAP_IPC_LOCK.
Assinatura
int mlock(const void * addr, size_t len);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| addr | const void * | Início da região, alinhado ao tamanho de página. |
| len | size_t | Tamanho da região. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | addrconst void * |
| rsi | argumento 2 | lensize_t |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EAGAIN(11)
- Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
- 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).