// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// DO NOT EDIT. Generated from FIDL library zx by zither, a Fuchsia platform
// tool.

#ifndef _ZX_SYSCALL_DECL
#error "<zircon/syscalls.h> is the public API header"
#endif

_ZX_SYSCALL_DECL(bti_create, int32_t, /* no attributes */, 4, (iommu, options, bti_id, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t iommu, uint32_t options,
                  uint64_t bti_id, _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(bti_pin, int32_t, /* no attributes */, 8,
                 (handle, options, vmo, offset, size, addrs, num_addrs, pmt),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo, uint64_t offset,
                  uint64_t size, zx_paddr_t* addrs, size_t num_addrs,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* pmt))

_ZX_SYSCALL_DECL(bti_release_quarantine, int32_t, /* no attributes */, 1, (handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(cache_flush, int32_t, /* no attributes */, 3, (addr, size, options),
                 (const void* addr, size_t size, uint32_t options))

_ZX_SYSCALL_DECL(channel_call, int32_t, /* no attributes */, 6,
                 (handle, options, deadline, args, actual_bytes, actual_handles),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  zx_time_t deadline, const zx_channel_call_args_t* args, uint32_t* actual_bytes,
                  uint32_t* actual_handles))

_ZX_SYSCALL_DECL(channel_call_etc, int32_t, /* no attributes */, 6,
                 (handle, options, deadline, args, actual_bytes, actual_handles),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  zx_time_t deadline, zx_channel_call_etc_args_t* args, uint32_t* actual_bytes,
                  uint32_t* actual_handles))

_ZX_SYSCALL_DECL(channel_create, int32_t, /* no attributes */, 3, (options, out0, out1),
                 (uint32_t options, _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out0,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out1))

_ZX_SYSCALL_DECL(
    channel_read, int32_t, /* no attributes */, 8,
    (handle, options, bytes, handles, num_bytes, num_handles, actual_bytes, actual_handles),
    (_ZX_SYSCALL_ANNO(use_handle("FuchsiaUnchecked")) zx_handle_t handle, uint32_t options,
     void* bytes, _ZX_SYSCALL_ANNO(acquire_handle("FuchsiaUnchecked")) zx_handle_t* handles,
     uint32_t num_bytes, uint32_t num_handles, uint32_t* actual_bytes, uint32_t* actual_handles))

_ZX_SYSCALL_DECL(channel_read_etc, int32_t, /* no attributes */, 8,
                 (handle, options, bytes, handles, num_bytes, num_handles, actual_bytes,
                  actual_handles),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  void* bytes, zx_handle_info_t* handles, uint32_t num_bytes, uint32_t num_handles,
                  uint32_t* actual_bytes, uint32_t* actual_handles))

_ZX_SYSCALL_DECL(channel_write, int32_t, /* no attributes */, 6,
                 (handle, options, bytes, num_bytes, handles, num_handles),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  const void* bytes, uint32_t num_bytes,
                  _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) const zx_handle_t* handles,
                  uint32_t num_handles))

_ZX_SYSCALL_DECL(channel_write_etc, int32_t, /* no attributes */, 6,
                 (handle, options, bytes, num_bytes, handles, num_handles),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  const void* bytes, uint32_t num_bytes, zx_handle_disposition_t* handles,
                  uint32_t num_handles))

_ZX_SYSCALL_DECL(clock_create, int32_t, /* no attributes */, 3, (options, args, out),
                 (uint64_t options, const void* args,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(clock_get_details, int32_t, /* no attributes */, 3, (handle, options, details),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint64_t options,
                  void* details))

_ZX_SYSCALL_DECL(clock_get_monotonic, zx_time_t, /* no attributes */, 0, (), (void))

_ZX_SYSCALL_DECL(clock_read, int32_t, /* no attributes */, 2, (handle, now),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, zx_time_t* now))

_ZX_SYSCALL_DECL(clock_update, int32_t, /* no attributes */, 3, (handle, options, args),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint64_t options,
                  const void* args))

_ZX_SYSCALL_DECL(cprng_add_entropy, int32_t, /* no attributes */, 2, (buffer, buffer_size),
                 (const void* buffer, size_t buffer_size))

_ZX_SYSCALL_DECL(cprng_draw, void, /* no attributes */, 2, (buffer, buffer_size),
                 (void* buffer, size_t buffer_size))

_ZX_SYSCALL_DECL(deadline_after, zx_time_t, /* no attributes */, 1, (nanoseconds),
                 (zx_duration_t nanoseconds))

_ZX_SYSCALL_DECL(debug_read, int32_t, /* no attributes */, 4, (handle, buffer, buffer_size, actual),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, char* buffer,
                  size_t buffer_size, size_t* actual))

_ZX_SYSCALL_DECL(debug_send_command, int32_t, /* no attributes */, 3,
                 (resource, buffer, buffer_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource, const char* buffer,
                  size_t buffer_size))

_ZX_SYSCALL_DECL(debug_write, int32_t, /* no attributes */, 2, (buffer, buffer_size),
                 (const char* buffer, size_t buffer_size))

_ZX_SYSCALL_DECL(debuglog_create, int32_t, /* no attributes */, 3, (resource, options, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource, uint32_t options,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(debuglog_read, int32_t, /* no attributes */, 4,
                 (handle, options, buffer, buffer_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  void* buffer, size_t buffer_size))

_ZX_SYSCALL_DECL(debuglog_write, int32_t, /* no attributes */, 4,
                 (handle, options, buffer, buffer_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  const void* buffer, size_t buffer_size))

_ZX_SYSCALL_DECL(event_create, int32_t, /* no attributes */, 2, (options, out),
                 (uint32_t options, _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(eventpair_create, int32_t, /* no attributes */, 3, (options, out0, out1),
                 (uint32_t options, _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out0,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out1))

_ZX_SYSCALL_DECL(exception_get_process, int32_t, /* no attributes */, 2, (handle, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(exception_get_thread, int32_t, /* no attributes */, 2, (handle, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(fifo_create, int32_t, /* no attributes */, 5,
                 (elem_count, elem_size, options, out0, out1),
                 (size_t elem_count, size_t elem_size, uint32_t options,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out0,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out1))

_ZX_SYSCALL_DECL(fifo_read, int32_t, /* no attributes */, 5,
                 (handle, elem_size, data, data_size, actual_count),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, size_t elem_size,
                  void* data, size_t data_size, size_t* actual_count))

_ZX_SYSCALL_DECL(fifo_write, int32_t, /* no attributes */, 5,
                 (handle, elem_size, data, count, actual_count),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, size_t elem_size,
                  const void* data, size_t count, size_t* actual_count))

_ZX_SYSCALL_DECL(framebuffer_get_info, int32_t, /* no attributes */, 5,
                 (resource, format, width, height, stride),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource, uint32_t* format,
                  uint32_t* width, uint32_t* height, uint32_t* stride))

_ZX_SYSCALL_DECL(framebuffer_set_range, int32_t, /* no attributes */, 7,
                 (resource, vmo, len, format, width, height, stride),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo, uint32_t len,
                  uint32_t format, uint32_t width, uint32_t height, uint32_t stride))

_ZX_SYSCALL_DECL(futex_get_owner, int32_t, /* no attributes */, 2, (value_ptr, koid),
                 (const zx_futex_t* value_ptr, zx_koid_t* koid))

_ZX_SYSCALL_DECL(futex_requeue, int32_t, /* no attributes */, 6,
                 (value_ptr, wake_count, current_value, requeue_ptr, requeue_count,
                  new_requeue_owner),
                 (const zx_futex_t* value_ptr, uint32_t wake_count, zx_futex_t current_value,
                  const zx_futex_t* requeue_ptr, uint32_t requeue_count,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t new_requeue_owner))

_ZX_SYSCALL_DECL(futex_requeue_single_owner, int32_t, /* no attributes */, 5,
                 (value_ptr, current_value, requeue_ptr, requeue_count, new_requeue_owner),
                 (const zx_futex_t* value_ptr, zx_futex_t current_value,
                  const zx_futex_t* requeue_ptr, uint32_t requeue_count,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t new_requeue_owner))

_ZX_SYSCALL_DECL(futex_wait, int32_t, /* no attributes */, 4,
                 (value_ptr, current_value, new_futex_owner, deadline),
                 (const zx_futex_t* value_ptr, int32_t current_value,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t new_futex_owner,
                  zx_time_t deadline))

_ZX_SYSCALL_DECL(futex_wake, int32_t, /* no attributes */, 2, (value_ptr, wake_count),
                 (const zx_futex_t* value_ptr, uint32_t wake_count))

_ZX_SYSCALL_DECL(futex_wake_handle_close_thread_exit, void, __NO_RETURN, 4,
                 (value_ptr, wake_count, new_value, close_handle),
                 (const zx_futex_t* value_ptr, uint32_t wake_count, int32_t new_value,
                  _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t close_handle))

_ZX_SYSCALL_DECL(futex_wake_single_owner, int32_t, /* no attributes */, 1, (value_ptr),
                 (const zx_futex_t* value_ptr))

_ZX_SYSCALL_DECL(guest_create, int32_t, /* no attributes */, 4,
                 (resource, options, guest_handle, vmar_handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource, uint32_t options,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* guest_handle,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* vmar_handle))

_ZX_SYSCALL_DECL(guest_set_trap, int32_t, /* no attributes */, 6,
                 (handle, kind, addr, size, port_handle, key),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t kind,
                  zx_vaddr_t addr, size_t size,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port_handle, uint64_t key))

_ZX_SYSCALL_DECL(handle_close, int32_t, /* no attributes */, 1, (handle),
                 (_ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(handle_close_many, int32_t, /* no attributes */, 2, (handles, num_handles),
                 (_ZX_SYSCALL_ANNO(release_handle("Fuchsia")) const zx_handle_t* handles,
                  size_t num_handles))

_ZX_SYSCALL_DECL(handle_duplicate, int32_t, /* no attributes */, 3, (handle, rights, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, zx_rights_t rights,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(handle_replace, int32_t, /* no attributes */, 3, (handle, rights, out),
                 (_ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle,
                  zx_rights_t rights, _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(interrupt_ack, int32_t, /* no attributes */, 1, (handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(interrupt_bind, int32_t, /* no attributes */, 4,
                 (handle, port_handle, key, options),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port_handle, uint64_t key,
                  uint32_t options))

_ZX_SYSCALL_DECL(interrupt_create, int32_t, /* no attributes */, 4,
                 (src_obj, src_num, options, out_handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t src_obj, uint32_t src_num,
                  uint32_t options,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_handle))

_ZX_SYSCALL_DECL(interrupt_destroy, int32_t, /* no attributes */, 1, (handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(interrupt_trigger, int32_t, /* no attributes */, 3, (handle, options, timestamp),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  zx_time_t timestamp))

_ZX_SYSCALL_DECL(interrupt_wait, int32_t, /* no attributes */, 2, (handle, out_timestamp),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  zx_time_t* out_timestamp))

_ZX_SYSCALL_DECL(iob_create, int32_t, /* no attributes */, 5,
                 (options, regions, num_regions, ep0_out, ep1_out),
                 (uint64_t options, const void* regions, size_t num_regions,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* ep0_out,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* ep1_out))

_ZX_SYSCALL_DECL(iommu_create, int32_t, /* no attributes */, 5,
                 (resource, type, desc, desc_size, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource, uint32_t type,
                  const void* desc, size_t desc_size,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(ioports_release, int32_t, /* no attributes */, 3, (resource, io_addr, len),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource, uint16_t io_addr,
                  uint32_t len))

_ZX_SYSCALL_DECL(ioports_request, int32_t, /* no attributes */, 3, (resource, io_addr, len),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource, uint16_t io_addr,
                  uint32_t len))

_ZX_SYSCALL_DECL(job_create, int32_t, /* no attributes */, 3, (parent_job, options, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t parent_job, uint32_t options,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(job_set_critical, int32_t, /* no attributes */, 3, (job, options, process),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t job, uint32_t options,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t process))

_ZX_SYSCALL_DECL(job_set_policy, int32_t, /* no attributes */, 5,
                 (handle, options, topic, policy, policy_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  uint32_t topic, const void* policy, uint32_t policy_size))

_ZX_SYSCALL_DECL(ktrace_control, int32_t, /* no attributes */, 4, (handle, action, options, ptr),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t action,
                  uint32_t options, void* ptr))

_ZX_SYSCALL_DECL(ktrace_read, int32_t, /* no attributes */, 5,
                 (handle, data, offset, data_size, actual),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, void* data,
                  uint32_t offset, size_t data_size, size_t* actual))

_ZX_SYSCALL_DECL(ktrace_write, int32_t, /* no attributes */, 4, (handle, id, arg0, arg1),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t id,
                  uint32_t arg0, uint32_t arg1))

_ZX_SYSCALL_DECL(msi_allocate, int32_t, /* no attributes */, 3, (handle, count, out_allocation),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t count,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_allocation))

_ZX_SYSCALL_DECL(msi_create, int32_t, /* no attributes */, 6,
                 (handle, options, msi_id, vmo, vmo_offset, out_interrupt),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  uint32_t msi_id, _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
                  size_t vmo_offset,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_interrupt))

_ZX_SYSCALL_DECL(mtrace_control, int32_t, /* no attributes */, 6,
                 (handle, kind, action, options, ptr, ptr_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t kind,
                  uint32_t action, uint32_t options, void* ptr, size_t ptr_size))

_ZX_SYSCALL_DECL(nanosleep, int32_t, /* no attributes */, 1, (deadline), (zx_time_t deadline))

_ZX_SYSCALL_DECL(object_get_child, int32_t, /* no attributes */, 4, (handle, koid, rights, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint64_t koid,
                  zx_rights_t rights, _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(object_get_info, int32_t, /* no attributes */, 6,
                 (handle, topic, buffer, buffer_size, actual, avail),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t topic,
                  void* buffer, size_t buffer_size, size_t* actual, size_t* avail))

_ZX_SYSCALL_DECL(object_get_property, int32_t, /* no attributes */, 4,
                 (handle, property, value, value_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t property,
                  void* value, size_t value_size))

_ZX_SYSCALL_DECL(object_set_profile, int32_t, /* no attributes */, 3, (handle, profile, options),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t profile, uint32_t options))

_ZX_SYSCALL_DECL(object_set_property, int32_t, /* no attributes */, 4,
                 (handle, property, value, value_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t property,
                  const void* value, size_t value_size))

_ZX_SYSCALL_DECL(object_signal, int32_t, /* no attributes */, 3, (handle, clear_mask, set_mask),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t clear_mask,
                  uint32_t set_mask))

_ZX_SYSCALL_DECL(object_signal_peer, int32_t, /* no attributes */, 3,
                 (handle, clear_mask, set_mask),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t clear_mask,
                  uint32_t set_mask))

_ZX_SYSCALL_DECL(object_wait_async, int32_t, /* no attributes */, 5,
                 (handle, port, key, signals, options),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port, uint64_t key,
                  zx_signals_t signals, uint32_t options))

_ZX_SYSCALL_DECL(object_wait_many, int32_t, /* no attributes */, 3, (items, num_items, deadline),
                 (zx_wait_item_t * items, size_t num_items, zx_time_t deadline))

_ZX_SYSCALL_DECL(object_wait_one, int32_t, /* no attributes */, 4,
                 (handle, signals, deadline, observed),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, zx_signals_t signals,
                  zx_time_t deadline, zx_signals_t* observed))

_ZX_SYSCALL_DECL(pager_create, int32_t, /* no attributes */, 2, (options, out),
                 (uint32_t options, _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(pager_create_vmo, int32_t, /* no attributes */, 6,
                 (pager, options, port, key, size, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager, uint32_t options,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t port, uint64_t key,
                  uint64_t size, _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(pager_detach_vmo, int32_t, /* no attributes */, 2, (pager, vmo),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo))

_ZX_SYSCALL_DECL(pager_op_range, int32_t, /* no attributes */, 6,
                 (pager, op, pager_vmo, offset, length, data),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager, uint32_t op,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo, uint64_t offset,
                  uint64_t length, uint64_t data))

_ZX_SYSCALL_DECL(pager_query_vmo_stats, int32_t, /* no attributes */, 5,
                 (pager, pager_vmo, options, buffer, buffer_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo, uint32_t options,
                  void* buffer, size_t buffer_size))

_ZX_SYSCALL_DECL(pager_supply_pages, int32_t, /* no attributes */, 6,
                 (pager, pager_vmo, offset, length, aux_vmo, aux_offset),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t pager_vmo, uint64_t offset,
                  uint64_t length, _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t aux_vmo,
                  uint64_t aux_offset))

_ZX_SYSCALL_DECL(pc_firmware_tables, int32_t, /* no attributes */, 3, (handle, acpi_rsdp, smbios),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, zx_paddr_t* acpi_rsdp,
                  zx_paddr_t* smbios))

_ZX_SYSCALL_DECL(pci_add_subtract_io_range, int32_t, /* no attributes */, 5,
                 (handle, mmio, base, len, add),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t mmio,
                  uint64_t base, uint64_t len, uint32_t add))

_ZX_SYSCALL_DECL(pci_cfg_pio_rw, int32_t, /* no attributes */, 8,
                 (handle, bus, dev, func, offset, val, width, write),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint8_t bus,
                  uint8_t dev, uint8_t func, uint8_t offset, uint32_t* val, size_t width,
                  uint32_t write))

_ZX_SYSCALL_DECL(pci_config_read, int32_t, /* no attributes */, 4, (handle, offset, width, out_val),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint16_t offset,
                  size_t width, uint32_t* out_val))

_ZX_SYSCALL_DECL(pci_config_write, int32_t, /* no attributes */, 4, (handle, offset, width, val),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint16_t offset,
                  size_t width, uint32_t val))

_ZX_SYSCALL_DECL(pci_enable_bus_master, int32_t, /* no attributes */, 2, (handle, enable),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t enable))

_ZX_SYSCALL_DECL(pci_get_bar, int32_t, /* no attributes */, 4,
                 (handle, bar_num, out_bar, out_handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t bar_num,
                  zx_pci_bar_t* out_bar,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_handle))

_ZX_SYSCALL_DECL(pci_get_nth_device, int32_t, /* no attributes */, 4,
                 (handle, index, out_info, out_handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t index,
                  zx_pcie_device_info_t* out_info,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_handle))

_ZX_SYSCALL_DECL(pci_init, int32_t, /* no attributes */, 3, (handle, init_buf, len),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  const zx_pci_init_arg_t* init_buf, uint32_t len))

_ZX_SYSCALL_DECL(pci_map_interrupt, int32_t, /* no attributes */, 3,
                 (handle, which_irq, out_handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, int32_t which_irq,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_handle))

_ZX_SYSCALL_DECL(pci_query_irq_mode, int32_t, /* no attributes */, 3, (handle, mode, out_max_irqs),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t mode,
                  uint32_t* out_max_irqs))

_ZX_SYSCALL_DECL(pci_reset_device, int32_t, /* no attributes */, 1, (handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(pci_set_irq_mode, int32_t, /* no attributes */, 3,
                 (handle, mode, requested_irq_count),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t mode,
                  uint32_t requested_irq_count))

_ZX_SYSCALL_DECL(pmt_unpin, int32_t, /* no attributes */, 1, (handle),
                 (_ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(port_cancel, int32_t, /* no attributes */, 3, (handle, source, key),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t source, uint64_t key))

_ZX_SYSCALL_DECL(port_create, int32_t, /* no attributes */, 2, (options, out),
                 (uint32_t options, _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(port_queue, int32_t, /* no attributes */, 2, (handle, packet),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  const zx_port_packet_t* packet))

_ZX_SYSCALL_DECL(port_wait, int32_t, /* no attributes */, 3, (handle, deadline, packet),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, zx_time_t deadline,
                  zx_port_packet_t* packet))

_ZX_SYSCALL_DECL(process_create, int32_t, /* no attributes */, 6,
                 (job, name, name_size, options, proc_handle, vmar_handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t job, const char* name,
                  size_t name_size, uint32_t options,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* proc_handle,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* vmar_handle))

_ZX_SYSCALL_DECL(process_exit, void, __NO_RETURN, 1, (retcode), (int64_t retcode))

_ZX_SYSCALL_DECL(process_read_memory, int32_t, /* no attributes */, 5,
                 (handle, vaddr, buffer, buffer_size, actual),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, zx_vaddr_t vaddr,
                  void* buffer, size_t buffer_size, size_t* actual))

_ZX_SYSCALL_DECL(process_start, int32_t, /* no attributes */, 6,
                 (handle, thread, entry, stack, arg1, arg2),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t thread, zx_vaddr_t entry,
                  zx_vaddr_t stack, _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t arg1,
                  uintptr_t arg2))

_ZX_SYSCALL_DECL(process_write_memory, int32_t, /* no attributes */, 5,
                 (handle, vaddr, buffer, buffer_size, actual),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, zx_vaddr_t vaddr,
                  const void* buffer, size_t buffer_size, size_t* actual))

_ZX_SYSCALL_DECL(profile_create, int32_t, /* no attributes */, 4, (root_job, options, profile, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t root_job, uint32_t options,
                  const zx_profile_info_t* profile,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(resource_create, int32_t, /* no attributes */, 7,
                 (parent_rsrc, options, base, size, name, name_size, resource_out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t parent_rsrc, uint32_t options,
                  uint64_t base, size_t size, const char* name, size_t name_size,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* resource_out))

_ZX_SYSCALL_DECL(smc_call, int32_t, /* no attributes */, 3, (handle, parameters, out_smc_result),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  const zx_smc_parameters_t* parameters, zx_smc_result_t* out_smc_result))

_ZX_SYSCALL_DECL(socket_create, int32_t, /* no attributes */, 3, (options, out0, out1),
                 (uint32_t options, _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out0,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out1))

_ZX_SYSCALL_DECL(socket_read, int32_t, /* no attributes */, 5,
                 (handle, options, buffer, buffer_size, actual),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  void* buffer, size_t buffer_size, size_t* actual))

_ZX_SYSCALL_DECL(socket_set_disposition, int32_t, /* no attributes */, 3,
                 (handle, disposition, disposition_peer),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t disposition,
                  uint32_t disposition_peer))

_ZX_SYSCALL_DECL(socket_write, int32_t, /* no attributes */, 5,
                 (handle, options, buffer, buffer_size, actual),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  const void* buffer, size_t buffer_size, size_t* actual))

_ZX_SYSCALL_DECL(stream_create, int32_t, /* no attributes */, 4, (options, vmo, seek, out_stream),
                 (uint32_t options, _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo,
                  zx_off_t seek,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out_stream))

_ZX_SYSCALL_DECL(stream_readv, int32_t, /* no attributes */, 5,
                 (handle, options, vectors, num_vectors, actual),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  zx_iovec_t* vectors, size_t num_vectors, size_t* actual))

_ZX_SYSCALL_DECL(stream_readv_at, int32_t, /* no attributes */, 6,
                 (handle, options, offset, vectors, num_vectors, actual),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  zx_off_t offset, zx_iovec_t* vectors, size_t num_vectors, size_t* actual))

_ZX_SYSCALL_DECL(stream_seek, int32_t, /* no attributes */, 4, (handle, whence, offset, out_seek),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  zx_stream_seek_origin_t whence, int64_t offset, zx_off_t* out_seek))

_ZX_SYSCALL_DECL(stream_writev, int32_t, /* no attributes */, 5,
                 (handle, options, vectors, num_vectors, actual),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  const zx_iovec_t* vectors, size_t num_vectors, size_t* actual))

_ZX_SYSCALL_DECL(stream_writev_at, int32_t, /* no attributes */, 6,
                 (handle, options, offset, vectors, num_vectors, actual),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  zx_off_t offset, const zx_iovec_t* vectors, size_t num_vectors, size_t* actual))

_ZX_SYSCALL_DECL(system_get_dcache_line_size, uint32_t, __CONST, 0, (), (void))

_ZX_SYSCALL_DECL(system_get_event, int32_t, /* no attributes */, 3, (root_job, kind, event),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t root_job, uint32_t kind,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* event))

_ZX_SYSCALL_DECL(system_get_features, int32_t, /* no attributes */, 2, (kind, features),
                 (uint32_t kind, uint32_t* features))

_ZX_SYSCALL_DECL(system_get_num_cpus, uint32_t, __CONST, 0, (), (void))

_ZX_SYSCALL_DECL(system_get_page_size, uint32_t, __CONST, 0, (), (void))

_ZX_SYSCALL_DECL(system_get_performance_info, int32_t, /* no attributes */, 5,
                 (resource, topic, count, info, output_count),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource, uint32_t topic,
                  size_t count, void* info, size_t* output_count))

_ZX_SYSCALL_DECL(system_get_physmem, uint64_t, /* no attributes */, 0, (), (void))

_ZX_SYSCALL_DECL(system_get_version_string, zx_string_view_t, __CONST, 0, (), (void))

_ZX_SYSCALL_DECL(system_mexec, int32_t, /* no attributes */, 3,
                 (resource, kernel_vmo, bootimage_vmo),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t kernel_vmo,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t bootimage_vmo))

_ZX_SYSCALL_DECL(system_mexec_payload_get, int32_t, /* no attributes */, 3,
                 (resource, buffer, buffer_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource, void* buffer,
                  size_t buffer_size))

_ZX_SYSCALL_DECL(system_powerctl, int32_t, /* no attributes */, 3, (resource, cmd, arg),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource, uint32_t cmd,
                  const zx_system_powerctl_arg_t* arg))

_ZX_SYSCALL_DECL(system_set_performance_info, int32_t, /* no attributes */, 4,
                 (resource, topic, info, count),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource, uint32_t topic,
                  const void* info, size_t count))

_ZX_SYSCALL_DECL(task_create_exception_channel, int32_t, /* no attributes */, 3,
                 (handle, options, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(task_kill, int32_t, /* no attributes */, 1, (handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(task_suspend, int32_t, /* no attributes */, 2, (handle, token),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* token))

_ZX_SYSCALL_DECL(task_suspend_token, int32_t, /* no attributes */, 2, (handle, token),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* token))

_ZX_SYSCALL_DECL(thread_create, int32_t, /* no attributes */, 5,
                 (process, name, name_size, options, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t process, const char* name,
                  size_t name_size, uint32_t options,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(thread_exit, void, __NO_RETURN, 0, (), (void))

_ZX_SYSCALL_DECL(thread_legacy_yield, int32_t, /* no attributes */, 1, (options),
                 (uint32_t options))

_ZX_SYSCALL_DECL(thread_read_state, int32_t, /* no attributes */, 4,
                 (handle, kind, buffer, buffer_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t kind,
                  void* buffer, size_t buffer_size))

_ZX_SYSCALL_DECL(thread_start, int32_t, /* no attributes */, 5,
                 (handle, thread_entry, stack, arg1, arg2),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  zx_vaddr_t thread_entry, zx_vaddr_t stack, uintptr_t arg1, uintptr_t arg2))

_ZX_SYSCALL_DECL(thread_write_state, int32_t, /* no attributes */, 4,
                 (handle, kind, buffer, buffer_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t kind,
                  const void* buffer, size_t buffer_size))

_ZX_SYSCALL_DECL(ticks_get, zx_ticks_t, /* no attributes */, 0, (), (void))

_ZX_SYSCALL_DECL(ticks_per_second, zx_ticks_t, __CONST, 0, (), (void))

_ZX_SYSCALL_DECL(timer_cancel, int32_t, /* no attributes */, 1, (handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(timer_create, int32_t, /* no attributes */, 3, (options, clock_id, out),
                 (uint32_t options, zx_clock_t clock_id,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(timer_set, int32_t, /* no attributes */, 3, (handle, deadline, slack),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, zx_time_t deadline,
                  zx_duration_t slack))

_ZX_SYSCALL_DECL(vcpu_create, int32_t, /* no attributes */, 4, (guest, options, entry, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t guest, uint32_t options,
                  zx_vaddr_t entry, _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(vcpu_enter, int32_t, /* no attributes */, 2, (handle, packet),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  zx_port_packet_t* packet))

_ZX_SYSCALL_DECL(vcpu_interrupt, int32_t, /* no attributes */, 2, (handle, vector),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t vector))

_ZX_SYSCALL_DECL(vcpu_kick, int32_t, /* no attributes */, 1, (handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(vcpu_read_state, int32_t, /* no attributes */, 4,
                 (handle, kind, buffer, buffer_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t kind,
                  void* buffer, size_t buffer_size))

_ZX_SYSCALL_DECL(vcpu_write_state, int32_t, /* no attributes */, 4,
                 (handle, kind, buffer, buffer_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t kind,
                  const void* buffer, size_t buffer_size))

_ZX_SYSCALL_DECL(vmar_allocate, int32_t, /* no attributes */, 6,
                 (parent_vmar, options, offset, size, child_vmar, child_addr),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t parent_vmar,
                  zx_vm_option_t options, size_t offset, size_t size,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* child_vmar,
                  zx_vaddr_t* child_addr))

_ZX_SYSCALL_DECL(vmar_destroy, int32_t, /* no attributes */, 1, (handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(vmar_map, int32_t, /* no attributes */, 7,
                 (handle, options, vmar_offset, vmo, vmo_offset, len, mapped_addr),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  zx_vm_option_t options, size_t vmar_offset,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmo, uint64_t vmo_offset,
                  size_t len, zx_vaddr_t* mapped_addr))

_ZX_SYSCALL_DECL(vmar_map_iob, int32_t, /* no attributes */, 8,
                 (handle, options, vmar_offset, ep, region_index, region_offset, region_length,
                  mapped_addr),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  zx_vm_option_t options, size_t vmar_offset,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t ep, uint32_t region_index,
                  uint64_t region_offset, size_t region_length, zx_vaddr_t* mapped_addr))

_ZX_SYSCALL_DECL(vmar_op_range, int32_t, /* no attributes */, 6,
                 (handle, op, address, size, buffer, buffer_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t op,
                  zx_vaddr_t address, size_t size, void* buffer, size_t buffer_size))

_ZX_SYSCALL_DECL(vmar_protect, int32_t, /* no attributes */, 4, (handle, options, addr, len),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  zx_vm_option_t options, zx_vaddr_t addr, size_t len))

_ZX_SYSCALL_DECL(vmar_unmap, int32_t, /* no attributes */, 3, (handle, addr, len),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, zx_vaddr_t addr,
                  size_t len))

_ZX_SYSCALL_DECL(vmar_unmap_handle_close_thread_exit, int32_t, /* no attributes */, 4,
                 (vmar_handle, addr, size, close_handle),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmar_handle, zx_vaddr_t addr,
                  size_t size,
                  _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t close_handle))

_ZX_SYSCALL_DECL(vmo_create, int32_t, /* no attributes */, 3, (size, options, out),
                 (uint64_t size, uint32_t options,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(vmo_create_child, int32_t, /* no attributes */, 5,
                 (handle, options, offset, size, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t options,
                  uint64_t offset, uint64_t size,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(vmo_create_contiguous, int32_t, /* no attributes */, 4,
                 (bti, size, alignment_log2, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t bti, size_t size,
                  uint32_t alignment_log2,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(vmo_create_physical, int32_t, /* no attributes */, 4, (resource, paddr, size, out),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t resource, zx_paddr_t paddr,
                  size_t size, _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(vmo_get_size, int32_t, /* no attributes */, 2, (handle, size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint64_t* size))

_ZX_SYSCALL_DECL(vmo_op_range, int32_t, /* no attributes */, 6,
                 (handle, op, offset, size, buffer, buffer_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint32_t op,
                  uint64_t offset, uint64_t size, void* buffer, size_t buffer_size))

_ZX_SYSCALL_DECL(vmo_read, int32_t, /* no attributes */, 4, (handle, buffer, offset, buffer_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, void* buffer,
                  uint64_t offset, size_t buffer_size))

_ZX_SYSCALL_DECL(vmo_replace_as_executable, int32_t, /* no attributes */, 3, (handle, vmex, out),
                 (_ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle,
                  _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vmex,
                  _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(vmo_set_cache_policy, int32_t, /* no attributes */, 2, (handle, cache_policy),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
                  uint32_t cache_policy))

_ZX_SYSCALL_DECL(vmo_set_size, int32_t, /* no attributes */, 2, (handle, size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, uint64_t size))

_ZX_SYSCALL_DECL(vmo_write, int32_t, /* no attributes */, 4, (handle, buffer, offset, buffer_size),
                 (_ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle, const void* buffer,
                  uint64_t offset, size_t buffer_size))
