MSYNC(2)

BEZEICHNUNG
msync - synchronisiere eine Datei mit dem projizierten Speicherbereich

ÜBERSICHT
#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

BESCHREIBUNG
msync schreibt die Änderungen, die in der Kernelkopie der Datei gemacht wurden, die mittels mmap(2) in den Speicher projiziert wurde, auf die Platte. Ohne Verwendung dieses Aufrufs besteht keine Garantie, daß Änderungen auf die Platte geschrieben werden, bevor munmap(2) aufgerufen wird. Um genauer zu sein: Der Teil der Datei, der dem Speicherbereich entspricht, der bei start anfängt und length lang ist, wird neu geschrieben. Der Parameter flags kann die Bits MS_ASYNC, MS_SYNC und MS_INVALIDATE gesetzt haben, jedoch nicht MS_ASYNC und MS_SYNC gleichzeitig. MS_ASYNC bedeutet, daß die Bearbeitung in die Warteschlange aufgenommen werden darf, die Routine kehrt sofort zurück. MS_SYNC bewirkt, daß das Schreiben sofort erledigt wird, die Routine kehrt erst nach dessen Ausführung zurück. MS_INVALIDATE bewirkt, daß andere Projektionen von der gleichen Datei ungültig werden (sodaß sie nicht mit den neuen, gerade geschriebenen Werten aktualisiert werden können)

RÜCKGABEWERT
Bei Erfolg wird null zurückgegeben, bei Fehler -1 und errno wird entsprechend gesetzt.

FEHLER

EINVAL
    start ist kein Vielfaches von PAGESIZE oder ein Bit außer MS_ASYNC | MS_INVALIDATE | MS_SYNC ist in +.IR flags +gesetzt.

EFAULT
    Der angegebene Speicherbereich (oder ein Teil davon) ist keine Projektion

KONFORM ZU
POSIX.4.

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