// Copyright 2019 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.

// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.

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

_ZX_SYSCALL_DECL(bti_create, zx_status_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, zx_status_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, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

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

_ZX_SYSCALL_DECL(channel_create, zx_status_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, zx_status_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, zx_status_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, zx_status_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(use_handle("Fuchsia")) const zx_handle_t* handles,
    uint32_t num_handles))

_ZX_SYSCALL_DECL(channel_write_etc, zx_status_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(channel_call, zx_status_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, zx_status_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(clock_get, zx_status_t, /* no attributes */, 2,
    (clock_id, out), (
    zx_clock_t clock_id,
    zx_time_t* out))

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

_ZX_SYSCALL_DECL(clock_adjust, zx_status_t, /* no attributes */, 3,
    (handle, clock_id, offset), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_clock_t clock_id,
    int64_t offset))

_ZX_SYSCALL_DECL(clock_create, zx_status_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_read, zx_status_t, /* no attributes */, 2,
    (handle, now), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    zx_time_t* now))

_ZX_SYSCALL_DECL(clock_get_details, zx_status_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_update, zx_status_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_draw, void, /* no attributes */, 2,
    (buffer, buffer_size), (
    void* buffer,
    size_t buffer_size))

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

_ZX_SYSCALL_DECL(debug_read, zx_status_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_write, zx_status_t, /* no attributes */, 2,
    (buffer, buffer_size), (
    const char* buffer,
    size_t buffer_size))

_ZX_SYSCALL_DECL(debug_send_command, zx_status_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(debuglog_create, zx_status_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_write, zx_status_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(debuglog_read, zx_status_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(event_create, zx_status_t, /* no attributes */, 2,
    (options, out), (
    uint32_t options,
    _ZX_SYSCALL_ANNO(acquire_handle("Fuchsia")) zx_handle_t* out))

_ZX_SYSCALL_DECL(eventpair_create, zx_status_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_thread, zx_status_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_process, zx_status_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, zx_status_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, zx_status_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, zx_status_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, zx_status_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, zx_status_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_wait, zx_status_t, /* no attributes */, 4,
    (value_ptr, current_value, new_futex_owner, deadline), (
    const zx_futex_t* value_ptr,
    zx_futex_t current_value,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t new_futex_owner,
    zx_time_t deadline))

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

_ZX_SYSCALL_DECL(futex_requeue, zx_status_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_wake_single_owner, zx_status_t, /* no attributes */, 1,
    (value_ptr), (
    const zx_futex_t* value_ptr))

_ZX_SYSCALL_DECL(futex_requeue_single_owner, zx_status_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_get_owner, zx_status_t, /* no attributes */, 2,
    (value_ptr, koid), (
    const zx_futex_t* value_ptr,
    zx_koid_t* koid))

_ZX_SYSCALL_DECL(guest_create, zx_status_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, zx_status_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, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(release_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(handle_close_many, zx_status_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, zx_status_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, zx_status_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_create, zx_status_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_bind, zx_status_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_wait, zx_status_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(interrupt_destroy, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

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

_ZX_SYSCALL_DECL(interrupt_trigger, zx_status_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_bind_vcpu, zx_status_t, /* no attributes */, 3,
    (handle, vcpu, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t vcpu,
    uint32_t options))

_ZX_SYSCALL_DECL(iommu_create, zx_status_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_request, zx_status_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_release, zx_status_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, zx_status_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_policy, zx_status_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(job_set_critical, zx_status_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(ktrace_read, zx_status_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_control, zx_status_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_write, zx_status_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(nanosleep, zx_status_t, /* no attributes */, 1,
    (deadline), (
    zx_time_t deadline))

_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(deadline_after, zx_time_t, /* no attributes */, 1,
    (nanoseconds), (
    zx_duration_t nanoseconds))

_ZX_SYSCALL_DECL(vmar_unmap_handle_close_thread_exit, zx_status_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(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(msi_allocate, zx_status_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, zx_status_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, zx_status_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(object_wait_one, zx_status_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(object_wait_many, zx_status_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_async, zx_status_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_signal, zx_status_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, zx_status_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_get_property, zx_status_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_property, zx_status_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_get_info, zx_status_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_child, zx_status_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_set_profile, zx_status_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(pager_create, zx_status_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, zx_status_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, zx_status_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_supply_pages, zx_status_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(pager_op_range, zx_status_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(pc_firmware_tables, zx_status_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_get_nth_device, zx_status_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_enable_bus_master, zx_status_t, /* no attributes */, 2,
    (handle, enable), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t enable))

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

_ZX_SYSCALL_DECL(pci_config_read, zx_status_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, zx_status_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_cfg_pio_rw, zx_status_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_get_bar, zx_status_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_map_interrupt, zx_status_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, zx_status_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_set_irq_mode, zx_status_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(pci_init, zx_status_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_add_subtract_io_range, zx_status_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(pmt_unpin, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

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

_ZX_SYSCALL_DECL(port_queue, zx_status_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, zx_status_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(port_cancel, zx_status_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(process_exit, void, __NO_RETURN, 1,
    (retcode), (
    int64_t retcode))

_ZX_SYSCALL_DECL(process_create, zx_status_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_start, zx_status_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(use_handle("Fuchsia")) zx_handle_t arg1,
    uintptr_t arg2))

_ZX_SYSCALL_DECL(process_read_memory, zx_status_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_write_memory, zx_status_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, zx_status_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, zx_status_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, zx_status_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, zx_status_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_write, zx_status_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(socket_read, zx_status_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_shutdown, zx_status_t, /* no attributes */, 2,
    (handle, options), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options))

_ZX_SYSCALL_DECL(stream_create, zx_status_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_writev, zx_status_t, /* no attributes */, 5,
    (handle, options, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    const zx_iovec_t* vector,
    size_t num_vector,
    size_t* actual))

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

_ZX_SYSCALL_DECL(stream_readv, zx_status_t, /* no attributes */, 5,
    (handle, options, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_iovec_t* vector,
    size_t num_vector,
    size_t* actual))

_ZX_SYSCALL_DECL(stream_readv_at, zx_status_t, /* no attributes */, 6,
    (handle, options, offset, vector, num_vector, actual), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t options,
    zx_off_t offset,
    zx_iovec_t* vector,
    size_t num_vector,
    size_t* actual))

_ZX_SYSCALL_DECL(stream_seek, zx_status_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(system_get_dcache_line_size, uint32_t, __CONST, 0,
    (), (void))

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

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

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

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

_ZX_SYSCALL_DECL(system_get_event, zx_status_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_mexec, zx_status_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, zx_status_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, zx_status_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(task_suspend, zx_status_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, zx_status_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_create_exception_channel, zx_status_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, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

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

_ZX_SYSCALL_DECL(thread_create, zx_status_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_start, zx_status_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_read_state, zx_status_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_write_state, zx_status_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(timer_create, zx_status_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, zx_status_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(timer_cancel, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(vcpu_create, zx_status_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_resume, zx_status_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, zx_status_t, /* no attributes */, 2,
    (handle, vector), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle,
    uint32_t vector))

_ZX_SYSCALL_DECL(vcpu_read_state, zx_status_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, zx_status_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, zx_status_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, zx_status_t, /* no attributes */, 1,
    (handle), (
    _ZX_SYSCALL_ANNO(use_handle("Fuchsia")) zx_handle_t handle))

_ZX_SYSCALL_DECL(vmar_map, zx_status_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_unmap, zx_status_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_protect, zx_status_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_op_range, zx_status_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(vmo_create, zx_status_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_read, zx_status_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_write, zx_status_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))

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

_ZX_SYSCALL_DECL(vmo_set_size, zx_status_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, zx_status_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_create_child, zx_status_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_set_cache_policy, zx_status_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_replace_as_executable, zx_status_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_create_contiguous, zx_status_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, zx_status_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))

