// 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(release_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_monotonic, zx_time_t, /* no attributes */, 0,
    (), (void))

_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(release_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(release_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(socket_set_disposition, zx_status_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(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_page_size, uint32_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))

