Syscall BSD#65
svc · unix #65
msync
Écrit sur disque les pages modifiées d'un mapping adossé à un fichier.
Prototype
int msync(caddr_t addr, size_t len, int flags);Retour: int
Arguments
| Name | Type | Dir | Description |
|---|---|---|---|
| addr | caddr_t | - | |
| len | size_t | - | |
| flags | int | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 65 |
| xnu-1486.2.11 | — | 65 |
| xnu-1504.15.3 | — | 65 |
| xnu-1504.3.12 | — | 65 |
| xnu-1504.7.4 | — | 65 |
| xnu-1504.9.17 | — | 65 |
| xnu-1504.9.26 | — | 65 |
| xnu-1504.9.37 | — | 65 |
Exemples
C — synchronous flush
msync(map, len, MS_SYNC);Notes
msync(2) accepte MS_ASYNC (queue l'I/O), MS_SYNC (bloque jusqu'à la fin) et MS_INVALIDATE (purge les pages propres en cache et force une relecture). Sur un mapping anonyme c'est un no-op. macOS route l'écriture par l'ubc (unified buffer cache), donc les données sont visibles aux read(2) suivants sur le même vnode.
API associées
mmapmunmapfsyncfdatasyncmadvise