Available in

(2) (3) (2)/de (2)/es (2)/fr (2)/ja (2)/ko (2)/pt

Contents

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, dass Ä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, dass die Bearbeitung in die Warteschlange aufgenommen werden darf, die Routine kehrt sofort zurück. MS_SYNC bewirkt, dass das Schreiben sofort erledigt wird, die Routine kehrt erst nach dessen Ausführung zurück. MS_INVALIDATE bewirkt, dass andere Projektionen von der gleichen Datei ungültig werden (sodass 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.

COMMENTS

blog comments powered by Disqus