Linux x86_64Memória#26
msync
Sincroniza com o armazenamento subjacente as alterações feitas em um mapeamento de arquivo MAP_SHARED.
Descrição
Equivalente de `fsync` para memória mapeada — necessário para garantir durabilidade de escritas feitas diretamente na memória mapeada, já que o kernel não garante quando (ou se) elas seriam gravadas de outra forma.
Header:
sys/mman.hman 2Assinatura
int msync(void * addr, size_t length, int flags);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| addr | void * | Início da região mapeada a sincronizar. |
| length | size_t | Tamanho da região. |
| flags | int | MS_ASYNC, MS_SYNC, opcionalmente com MS_INVALIDATE. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | addrvoid * |
| rsi | argumento 2 | lengthsize_t |
| rdx | argumento 3 | flagsint |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EBUSY(16)
- Dispositivo ou recurso ocupado.
- EINVAL(22)
- Argumento inválido.
- ENOMEM(12)
- Memória insuficiente para completar a operação.