MSYNC(2)

NOM
msync - Synchroniser un fichier et une projection en memoire (mapping).

SYNOPSIS
#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

DESCRIPTION
msync ecrit sur le disque les modifications qui ont ete effectuees sur la copie d'un fichier qui est projete en memoire par mmap(2). Si l'on utilise pas cette fonction, rien ne garantit que les changements soient ecrits avant la suppression de la projection par munmap(2). Pour etre plus precis, la portion du fichier correspondant a la zone memoire commencant en start et ayant une longueur de length est mise a jour. L'argument flags comprend les bits MS_ASYNC, MS_SYNC et MS_INVALIDATE. M_ASYNC et M_SYNC ne peuvent pas etre utiliser conjointement. MS_ASYNC indique que la mise a jour doit etre planifiee, mais l'appel systeme revient immediatement. MS_SYNC demande une mise a jour immediate, et attend qu'elle se termine avant de revenir. MS_INVALIDATE demande la desactivation de toutes les autres projections du meme fichier, afin qu'elles soient toutes remises a jour avec les nouvelles donnees ecrites.

VALEUR RENVOYEE
msync renvoie 0 s'il reussit, ou -1 s'il echoue, auquel cas errno contient le code d'erreur.

ERREURS

EINVAL
    start n'est pas aligne sur une frontiere de page, ou d'autres bits que MS_ASYNC | MS_INVALIDATE | MS_SYNC sont a 1 dans flags.

EFAULT
    La zone memoire indiquee (ou une partie de cette zone) n'est pas une projection.

CONFORMITE
POSIX 1.b (anciennement POSIX.4).

VOIR AUSSI
mmap(2), B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391.