msync
Section: System Calls (2)
Updated: 5 février 2023
Index
Return to Main Contents
NOM
msync - Synchroniser un fichier et une projection en mémoire
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
SYNOPSIS
#include <sys/mman.h>
int msync(void addr[.length], size_t length, int flags);
DESCRIPTION
msync() écrit les modifications qui ont été effectuées sur la copie d'un
fichier qui est projeté en mémoire par mmap(2) sur le système de
fichiers. Si l'on n'utilise pas cet appel, rien ne garantit que les
changements soient écrits avant la suppression de la projection par
munmap(2). Pour être plus précis, la portion du fichier correspondant à
la zone mémoire commençant en addr et ayant une longueur de length est
mise à jour.
Le paramètre flags devrait indiquer exactement MS_ASYNC et MS_SYNC
et il peut aussi inclure le bit MS_INVALIDATE. Ces bits ont la
signification suivante :
- MS_ASYNC
-
Indiquer la programmation d'une mise à jour, mais l'appel renvoie
immédiatement.
- MS_SYNC
-
Demander une mise à jour et attendre qu'elle se termine.
- MS_INVALIDATE
-
Demander d'invalider d'autres projections du même fichier (pour qu'elles
puissent être mises à jour avec les nouvelles valeurs écrites récemment).
VALEUR RENVOYÉE
En cas de succès, zéro est renvoyé. En cas d'erreur, -1 est renvoyé et
errno est définie pour préciser l'erreur.
ERREURS
- EBUSY
-
MS_INVALIDATE était positionné dans flags, mais un verrouillage
mémoire existe pour l'intervalle indiqué.
- EINVAL
-
addr n'est pas aligné sur une frontière de page (un multiple de PAGESIZE)
ou d'autres bits que MS_ASYNC | MS_INVALIDATE | MS_SYNC sont à 1
dans flags. Ou bien MS_SYNC et MS_ASYNC sont tous les deux
spécifiés dans flags.
- ENOMEM
-
La zone mémoire indiquée (ou une partie de cette zone) n'est pas une
projection.
STANDARDS
POSIX.1-2001, POSIX.1-2008.
Cet appel a été introduit dans Linux 1.3.21 et utilisait EFAULT au lieu
de ENOMEM. Dans Linux 2.4.19, ceci a été remplacé par la valeur POSIX
ENOMEM.
Sur les systèmes conformes à la spécification POSIX sur lesquels msync()
est disponible, les constantes symboliques _POSIX_MAPPED_FILES et
_POSIX_SYNCHRONIZED_IO sont définies dans <unistd.h> comme
étant des valeurs supérieures à 0. (Consultez aussi sysconf(3).)
NOTES
POSIX spécifie qu'au moins MS_SYNC ou MS_ASYNC doit être indiqué dans
flags, et que si aucun des deux n'est indiqué msync() échouera sur
certains systèmes. Cependant, Linux autorise d'appeler msync() sans
indiquer aucun des deux attributs, avec une sémantique actuellement
équivalente à indiquer MS_ASYNC. (Depuis Linux 2.6.19, MS_ASYNC est
sans effet, puisque le noyau suit correctement les pages modifiées et les
transfère vers le disque si besoin.) Malgré le comportement de Linux, les
applications portables et destinées à être pérennes doivent indiquer au
moins MS_SYNC ou MS_ASYNC dans flags.
VOIR AUSSI
mmap(2)
B.O. Gallmeister, POSIX.4, O'Reilly, p. 128-129 et 389-391.
TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>
et
Jean-Philippe MENGUAL <jpmengual@debian.org>
Cette traduction est une documentation libre ; veuillez vous reporter à la
GNU General Public License version 3
concernant les conditions de copie et
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- STANDARDS
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 13:57:08 GMT, May 22, 2024