Die Funktion msync() schreibt alle veränderten Kopien von Seiten im Bereich [addr, addr + len) auf die zugehörigen Speichermedien zurück oder macht Kopien im Speicher ungültig, so dass bei späteren Zugriffen auf diese Seiten auf das Speichermedium zugegriffen wird. Das Speichermedium für eine veränderte Abbildung vom Typ MAP_SHARED ist die Datei, auf die die Seite abgebildet wird; das Speichermedium für eine veränderte Abbildung vom Typ MAP_PRIVATE ist ihr Paging-Bereich. flags muss einen der folgenden Werte haben: MS_ASYNC
MS_SYNC
MS_INVALIDATE
| asynchrone Schreibzugriffe durchführen synchrone Schreibzugriffe durchführen Abbildungen als ungültig markieren | Wenn MS_ASYNC oder MS_SYNC gesetzt sind, synchronisiert msync() den Dateiinhalt mit dem aktuellen Inhalt des zugeordneten Speicherbereichs: Alle Schreibzugriffe auf den Speicherbereich, die vor dem Aufruf von msync() stattgefunden haben, sind nach msync() bei Lesezugriffen auf die Datei sichtbar. Vor dem Aufruf von msync() ist es dagegen undefiniert, ob Schreibzugriffe auf den entsprechenden Dateiabschnitt bei anschließenden Lesezugriffen sichtbar sind. Wenn MS_ASYNC gesetzt ist, kehrt msync() zurück, sobald alle Schreiboperationen veranlasst wurden; wird MS_SYNC gesetzt, kehrt msync() erst dann zurück, wenn alle Schreiboperationen durchgeführt wurden. Wenn MS_INVALIDATE gesetzt ist, synchronisiert msync() den Speicherbereich mit dem aktuellen Inhalt des zugeordneten Dateiabschnitts. Anschließend werden alle Kopien von Daten, die sich in einem Cache-Speicher befinden, als ungültig markiert. Spätere Referenzen auf diese Seiten werden vom System über das zu Grunde liegende Speichermedium bedient. Alle Schreibzugriffe auf den abgebildeten Dateiabschnitt, die vor dem Aufruf von msync() stattgefunden haben, sind bei anschließenden Lesezugriffen auf den zugeordneten Speicherbereich sichtbar. Vor dem Aufruf von msync() ist es dagegen undefiniert, ob Schreibzugriffe auf den entsprechenden Dateiabschnitt bei anschließenden Lesezugriffen sichtbar sind. |