blob: 35a6165dba262e8b8642aa82d6514f7f9f9a0dad [file] [log] [blame] [view]
# zx_vmar_unmap
## NAME
vmar_unmap - unmap virtual memory pages
## SYNOPSIS
```
#include <zircon/syscalls.h>
zx_status_t zx_vmar_unmap(zx_handle_t handle, zx_vaddr_t addr, uint64_t len);
```
## DESCRIPTION
**vmar_unmap**() unmaps all VMO mappings and destroys (as if **vmar_destroy**
were called) all sub-regions within the absolute range including *addr* and ending
before exclusively at *addr* + *len*. Any sub-region that is in the range must
be fully in the range (i.e. partial overlaps are an error). If a mapping is
only partially in the range, the mapping is split and the requested portion is
unmapped.
If *len* is not page-aligned, it will be rounded up the next page boundary.
## RETURN VALUE
**vmar_unmap**() returns **ZX_OK** on success.
## ERRORS
**ZX_ERR_BAD_HANDLE** *vmar_handle* is not a valid handle.
**ZX_ERR_WRONG_TYPE** *vmar_handle* is not a VMAR handle.
**ZX_ERR_INVALID_ARGS** *addr* is not page-aligned, *len* is 0, or the
requested range partially overlaps a sub-region.
**ZX_ERR_BAD_STATE** *vmar_handle* refers to a destroyed handle.
**ZX_ERR_NOT_FOUND** Could not find the requested mapping.
## NOTES
## SEE ALSO
[vmar_allocate](vmar_allocate.md),
[vmar_destroy](vmar_destroy.md),
[vmar_map](vmar_map.md),
[vmar_protect](vmar_protect.md).