Syscall BSD#73
svc · unix #73
munmap
Démappe une plage de pages précédemment créée par mmap de l'espace d'adressage du processus.
Prototype
int munmap(caddr_t addr, size_t len);Retour: int
Arguments
| Name | Type | Dir | Description |
|---|---|---|---|
| addr | caddr_t | - | |
| len | size_t | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 73 |
| xnu-1486.2.11 | — | 73 |
| xnu-1504.15.3 | — | 73 |
| xnu-1504.3.12 | — | 73 |
| xnu-1504.7.4 | — | 73 |
| xnu-1504.9.17 | — | 73 |
| xnu-1504.9.26 | — | 73 |
| xnu-1504.9.37 | — | 73 |
Exemples
C — release a mapping
if (munmap(p, 0x4000) != 0) {
perror("munmap");
}Notes
munmap(2) appelle mach_vm_deallocate() sur le vm_map de la tâche. La longueur doit être alignée à la page ; l'adresse de départ est arrondie vers le bas. Les démappages partiels sont autorisés et scindent les entrées VM environnantes — un usage intensif fragmente la map et ralentit les allocations futures.
Détection
Aucun événement Endpoint Security pour munmap. La sonde syscall::munmap:entry de DTrace est la plus directe ; en post-mortem, la région VM disparaît simplement de la sortie de vmmap(1).
API associées
mmapmprotectvm_deallocatemach_vm_deallocatemadvise