NAME
vm_object - Virtual memory containers
SYNOPSIS
A Virtual Memory Object (VMO) represents a contiguous region of virtual memory that may be mapped into multiple address spaces.
DESCRIPTION
VMOs are used in the kernel and userspace to represent both paged and physical memory. They are the standard method of sharing memory between processes, as well as between the kernel and userspace.
VMOs are created with zx_vmo_create()
and basic I/O can be
performed on them with zx_vmo_read()
and zx_vmo_write()
.
A VMO's size may be set using zx_vmo_set_size()
.
Conversely, zx_vmo_get_size()
will retrieve a VMO's current size.
The size of a VMO will be rounded up to the next page size boundary by the kernel.
Pages are committed (allocated) for VMOs on demand through zx_vmo_read()
, zx_vmo_write()
, or by writing to a mapping of the VMO created using zx_vmar_map()
. Pages can be committed and decommitted from a VMO manually by calling
zx_vmo_op_range()
with the ZX_VMO_OP_COMMIT and ZX_VMO_OP_DECOMMIT
operations, but this should be considered a low level operation. zx_vmo_op_range()
can also be used for cache and locking operations against pages a VMO holds.
Processes with special purpose use cases involving cache policy can use
zx_vmo_set_cache_policy()
to change the policy of a given VMO.
This use case typically applies to device drivers.
SYSCALLS
zx_vmo_create()
- create a new vmozx_vmo_create_child()
- create a new child vmozx_vmo_create_physical()
- create a new physical vmozx_vmo_get_size()
- obtain the size of a vmozx_vmo_op_range()
- perform an operation on a range of a vmozx_vmo_read()
- read from a vmozx_vmo_replace_as_executable()
- make an executable version of a vmozx_vmo_set_cache_policy()
- set the caching policy for pages held by a vmozx_vmo_set_size()
- adjust the size of a vmozx_vmo_write()
- write to a vmo
zx_vmar_map()
- map a VMO into a processzx_vmar_unmap()
- unmap memory from a process