# zx::vmar

## Summary

### Inheritance

Inherits from: [zx::object\< vmar \>](https://fuchsia.dev/reference/cpp/class/zx/object)

| ### Constructors and Destructors ||
|---|---|
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a51de02d9ea13f0decabae5cec301dabb()` ||
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a2ee5af5c903a7b10740d66304515cd99(zx_handle_t value)` ||
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a0b2c98c6a54ac6e0d9eba5f419559246(https://fuchsia.dev/reference/cpp/class/zx/object#classzx_1_1object && h)` ||
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a71372e14c4163cf936cb4cc7a7680998(https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar && other)` ||

| ### Public static attributes ||
|---|---|
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a7cdeb22fee67b68c2ec22a49f152d58d = ZX_OBJ_TYPE_VMAR` | `constexpr zx_obj_type_t` |

| ### Public functions ||
|---|---|
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a68e06ff6414d2b16e56c2df99277d880(uint32_t options, size_t offset, size_t size, https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar *child, uintptr_t *child_addr)` | `zx_status_t` |
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a0b6e6a325a59ddb261236b13fd61be7f()` | `zx_status_t` |
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a8ea4f366ba05c9da55a83f6008c2007c(zx_vm_option_t options, size_t vmar_offset, const https://fuchsia.dev/reference/cpp/class/zx/vmo#classzx_1_1vmo & vmo_handle, uint64_t vmo_offset, size_t len, zx_vaddr_t *ptr)` | `zx_status_t` |
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a84de34aa9b263e47d213d0f3a465101b(zx_vm_option_t options, size_t vmar_offset, const https://fuchsia.dev/reference/cpp/class/zx/clock#classzx_1_1clock & clock_handle, size_t len, zx_vaddr_t *ptr)` | `zx_status_t` |
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a9839041fbf338de8bab04ca7326e606b(zx_vm_option_t options, size_t vmar_offset, const https://fuchsia.dev/reference/cpp/class/zx/iob#classzx_1_1iob & iob_handle, uint32_t region_index, uint64_t region_offset, size_t region_len, zx_vaddr_t *ptr)` | `zx_status_t` |
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1acbed176fa88ce6ffac39b56fe909673c(uint32_t op, uint64_t offset, uint64_t size, void *buffer, size_t buffer_size)` | `zx_status_t` |
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a28d37da919bc07c8cf77d481816b3ac9(https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar && other)` | `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar &` |
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a70e38dc659b8cb6e38e587a127c6d8f1(zx_vm_option_t prot, uintptr_t address, size_t len)` | `zx_status_t` |
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a1347e9e46fcada29d243dda644324936(uintptr_t address, size_t len)` | `zx_status_t` |

| ### Public static functions ||
|---|---|
| `https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar_1a3ddefa78f14307d4f1eadf3901b2c254()` | `https://fuchsia.dev/reference/cpp/other/singletonzx/unowned#singletonzx_1_1unowned< https://fuchsia.dev/reference/cpp/class/zx/vmar#classzx_1_1vmar >` |

## Public static attributes

### TYPE

```c++
constexpr zx_obj_type_t TYPE = ZX_OBJ_TYPE_VMAR
```

## Public functions

### allocate

```c++
zx_status_t allocate(
  uint32_t options,
  size_t offset,
  size_t size,
  vmar *child,
  uintptr_t *child_addr
)
```

### destroy

```c++
zx_status_t destroy()
```

### map

```c++
zx_status_t map(
  zx_vm_option_t options,
  size_t vmar_offset,
  const vmo & vmo_handle,
  uint64_t vmo_offset,
  size_t len,
  zx_vaddr_t *ptr
)
```

### map_clock

```c++
zx_status_t map_clock(
  zx_vm_option_t options,
  size_t vmar_offset,
  const clock & clock_handle,
  size_t len,
  zx_vaddr_t *ptr
)
```

### map_iob

```c++
zx_status_t map_iob(
  zx_vm_option_t options,
  size_t vmar_offset,
  const iob & iob_handle,
  uint32_t region_index,
  uint64_t region_offset,
  size_t region_len,
  zx_vaddr_t *ptr
)
```

### op_range

```c++
zx_status_t op_range(
  uint32_t op,
  uint64_t offset,
  uint64_t size,
  void *buffer,
  size_t buffer_size
)
```

### operator=

```c++
vmar & operator=(
  vmar && other
)
```

### protect

```c++
zx_status_t protect(
  zx_vm_option_t prot,
  uintptr_t address,
  size_t len
)
```

### unmap

```c++
zx_status_t unmap(
  uintptr_t address,
  size_t len
)
```

### vmar

```c++
constexpr vmar()=default
```

### vmar

```c++
 vmar(
  zx_handle_t value
)
```

### vmar

```c++
 vmar(
  handle && h
)
```

### vmar

```c++
 vmar(
  vmar && other
)
```

## Public static functions

### root_self

```c++
unowned< vmar > root_self()
```