# Copyright 2017 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
include <zircon/syscalls.h>
include <zircon/syscalls/object.h>
include <zircon/syscalls/exception.h>
resource koid[int64]: 0
# TODO: temporary disabled as it crashes kernel left and right.
# zx_object_get_child(handle zx_handle, koid koid, rights flags[zx_rights], out ptr[out, zx_handle])
zx_object_get_cookie(handle zx_handle, scope zx_handle, cookie ptr[out, int64])
zx_object_set_cookie(handle zx_handle, scope zx_handle, cookie int64)
zx_object_get_info$ZX_INFO_HANDLE_VALID(handle zx_handle, topic const[ZX_INFO_HANDLE_VALID], buffer const[0], buffer_size const[0], actual ptr[out, intptr], avail ptr[out, intptr])
zx_object_get_info$ZX_INFO_HANDLE_BASIC(handle zx_handle, topic const[ZX_INFO_HANDLE_BASIC], buffer ptr[out, zx_info_handle_basic], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
zx_object_get_info$ZX_INFO_PROCESS(handle zx_process, topic const[ZX_INFO_PROCESS], buffer ptr[out, zx_info_process], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
zx_object_get_info$ZX_INFO_PROCESS_THREADS(handle zx_process, topic const[ZX_INFO_PROCESS_THREADS], buffer ptr[out, array[koid]], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
zx_object_get_info$ZX_INFO_VMAR(handle zx_vmar, topic const[ZX_INFO_VMAR], buffer ptr[out, zx_info_vmar], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
zx_object_get_info$ZX_INFO_JOB_CHILDREN(handle zx_job, topic const[ZX_INFO_JOB_CHILDREN], buffer ptr[out, array[koid]], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
zx_object_get_info$ZX_INFO_JOB_PROCESSES(handle zx_job, topic const[ZX_INFO_JOB_PROCESSES], buffer ptr[out, zx_info_thread], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
zx_object_get_info$ZX_INFO_THREAD_EXCEPTION_REPORT(handle zx_thread, topic const[ZX_INFO_THREAD_EXCEPTION_REPORT], buffer ptr[out, zx_exception_report], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
zx_object_get_info$ZX_INFO_TASK_STATS(handle zx_process, topic const[ZX_INFO_TASK_STATS], buffer ptr[out, zx_info_task_stats], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
zx_object_get_info$ZX_INFO_PROCESS_MAPS(handle zx_process, topic const[ZX_INFO_PROCESS_MAPS], buffer ptr[out, array[zx_info_maps]], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
zx_object_get_info$ZX_INFO_PROCESS_VMOS(handle zx_process, topic const[ZX_INFO_PROCESS_VMOS], buffer ptr[out, array[zx_info_vmo]], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
zx_object_get_info$ZX_INFO_THREAD_STATS(handle zx_thread, topic const[ZX_INFO_THREAD_STATS], buffer ptr[out, zx_info_thread_stats], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
zx_object_get_info$ZX_INFO_CPU_STATS(root_resource zx_root_resource, topic const[ZX_INFO_CPU_STATS], buffer ptr[out, array[zx_info_cpu_stats]], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
zx_object_get_info$ZX_INFO_KMEM_STATS(root_resource zx_root_resource, topic const[ZX_INFO_KMEM_STATS], buffer ptr[out, zx_info_kmem_stats], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
# TODO: what is handle type here?
zx_object_get_info$ZX_INFO_RESOURCE(resource_handle zx_handle, topic const[ZX_INFO_RESOURCE], buffer ptr[out, zx_info_resource], buffer_size bytesize[buffer], actual ptr[out, intptr], avail ptr[out, intptr])
# TODO: detail properties
zx_object_get_property(handle zx_handle, property int32, value ptr[out, array[int8]], size len[value])
zx_object_set_property(handle zx_handle, property int32, value ptr[in, array[int8]], size len[value])
zx_object_signal(handle zx_handle, clear_mask int32, set_mask int32)
zx_object_signal_peer(handle zx_handle, clear_mask int32, set_mask int32)
zx_object_wait_one(handle zx_handle, signals int32, deadline zx_time, observed ptr[out, int32])
zx_object_wait_async(handle zx_handle, port zx_port, key proc[1000, 4], signals int32, options flags[wait_async_options])
zx_object_wait_many(items ptr[in, array[zx_wait_item]], count len[items], deadline zx_time)
zx_object_set_profile(handle zx_handle, profile zx_handle, options int32)
wait_async_options = ZX_WAIT_ASYNC_ONCE, ZX_WAIT_ASYNC_REPEATING
zx_info_handle_basic {
koid koid
rights int32
type int32
related_koid koid
props int32
}
zx_info_process {
return_code int32
started int8
exited int8
debugger_attached int8
}
zx_info_vmar {
base intptr
len intptr
}
zx_info_thread {
state int32
wait_exception_port_type int32
}
zx_info_thread_stats {
total_runtime int64
}
zx_info_task_stats {
mem_mapped_bytes intptr
mem_private_bytes intptr
mem_shared_bytes intptr
mem_scaled_shared_bytes intptr
}
zx_info_maps {
name array[int8, ZX_MAX_NAME_LEN]
base intptr
size intptr
depth intptr
type int32
mapping zx_info_maps_mapping
}
zx_info_maps_mapping {
mmu_flags int32
vmo_koid koid
committed_pages intptr
}
zx_info_vmo {
koid koid
name array[int8, ZX_MAX_NAME_LEN]
size_bytes int64
parent_koid koid
num_children intptr
num_mappings intptr
share_count intptr
flags int32
committed_bytes int64
handle_rights int32
}
zx_info_cpu_stats {
cpu_number int32
flags int32
idle_time int64
reschedules int64
context_switches int64
irq_preempts int64
preempts int64
yields int64
ints int64
timer_ints int64
timers int64
page_faults int64
exceptions int64
syscalls int64
reschedule_ipis int64
generic_ipis int64
}
zx_info_kmem_stats {
total_bytes int64
free_bytes int64
wired_bytes int64
total_heap_bytes int64
free_heap_bytes int64
vmo_bytes int64
mmu_overhead_bytes int64
other_bytes int64
}
zx_info_resource {
kind int32
low int64
high int64
}
zx_exception_report {
header zx_exception_header
context zx_exception_context
}
zx_exception_header {
size int32
type int32
}
zx_exception_context [
x86_64 x86_64_exc_data
arm_64 arm64_exc_data
]
x86_64_exc_data {
vector int64
err_code int64
cr2 int64
}
arm64_exc_data {
esr int32
far int64
}
zx_wait_item {
handle zx_handle
waitfor int32
pending int32
}