The msync() function writes all modified copies of pages over the range [addr, addr + len) to the underlying hardware, or invalidates any copies so that
further references to the pages will be obtained by the system from their permanent storage locations. The permanent storage for a modified MAP_SHARED mapping is
the file the page is mapped to; the permanent storage for a modified MAP_PRIVATE mapping is its swap area.
The flags argument is a bit pattern built from the following values:
- MS_ASYNC
- perform asynchronous writes
- MS_SYNC
- perform synchronous writes
- MS_INVALIDATE
- invalidate mappings
If flags is MS_ASYNC or MS_SYNC, the function synchronizes the file contents to match the current contents of the
memory region.
- All write references to the memory region made prior to the call are visible by subsequent read operations on the file.
- All writes to the same portion of the file prior to the call may or may not be visible by read references to the memory region.
- Unmodified pages in the specified range are not written to the underlying hardware.
If flags is MS_ASYNC, the function may return immediately once all write operations are scheduled; if flags is MS_SYNC,
the function does not return until all write operations are completed.
If flags is MS_INVALIDATE, the function synchronizes the contents of the memory region to match the current file contents.
- All writes to the mapped portion of the file made prior to the call are visible by subsequent read references to the mapped memory region.
- All write references prior to the call, by any process, to memory regions mapped to the same portion of the file using MAP_SHARED, are visible by read references
to the region.
If msync() causes any write to the file, then the file's st_ctime and st_mtime fields are marked for update.
|