NOME¶
msync - sincroniza um arquivo com o mapa de memória
SINOPSE¶
#include <unistd.h>
#include <sys/mman.h>
#ifdef _POSIX_MAPPED_FILES
#ifdef _POSIX_SYNCHRONIZED_IO
int msync(const void *start, size_t length, int
flags);
#endif
#endif
DESCRIÇÃO¶
msync envia as alterações feitas em um arquivo mapeado em
memória usando
mmap(2) de volta para o disco. Sem usar esta
chamada na há garantia de que alterações serão
escritas novamente depois que
munmap(2) é chamada. Para ser
preciso, a parte do arquivo que corresponde à área de
memória iniciando em
start e tendo comprimento
length
é atualizada. O argumento
flags pode ter os bits MS_ASYNC,
MS_SYNC e MS_INVALIDATE selecionados, mas não MS_ASYNC e MS_SYNC ao
mesmo tempo. MS_ASYNC especifica que uma atualização está
marcada, mas a chamada retorna imediatamente. MS_SYNC solicita por uma
atualização e aguarda até ela ser completada.
MS_INVALIDATE solicita para invalidar outros mapeamentos do mesmo arquivo
(assim que eles possam ser atualizados com os novos valores).
VALORES RETORNADOS¶
Em caso de sucesso, zero é retornado. Caso contrário, -1 é
retornado, e
errno é selecionado adequadamente.
ERROS¶
- EINVAL
- start não é um multiplo de PAGESIZE, ou qualquer bit
exceto MS_ASYNC | MS_INVALIDATE | MS_SYNC é selecionado em
flags.
- EFAULT
- A memória indicada (ou uma parte dela) não foi mapeada.
DE ACORDO COM¶
POSIX.1b (anteriormente POSIX.4)
VEJA TAMBÉM¶
mmap(2), B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391.
TRADUZIDO POR LDP-BR em 21/08/2000.¶
André L. Fassone Canova <lonelywolf@blv.com.br>
(tradução) Ademar de Souza Reis Jr. <ademar@ademar.org>
(revisão)