// 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(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(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(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,
    bool 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,
    bool 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,
    bool mmio,
    uint64_t base,
    uint64_t len,
    bool 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))

