blob: a7a7f0956e67206189dfcc97dd12566e3c9a427a [file] [log] [blame]
// 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.
// TODO(fxb/39732): This should be read as "library zx".
library zz;
// TODO(scottmg): These syscalls don't match the general naming convention of
// zx_something_name(), they're just zx_name(), so NoProtocolPrefix tells the
// generator to exclude putting "Misc" in the name.
[Transport = "Syscall",
NoProtocolPrefix]
protocol misc {
/// High resolution sleep.
/// Rights: None.
[blocking]
nanosleep(time deadline) -> (status status);
/// Read the number of high-precision timer ticks since boot.
[vdsocall]
ticks_get() -> (ticks ticks);
/// Read the number of high-precision timer ticks in a second.
[const,
vdsocall]
ticks_per_second() -> (ticks ticks);
/// Convert a time relative to now to an absolute deadline.
[vdsocall]
deadline_after(duration nanoseconds) -> (time time);
/// Unmap memory, close handle, exit.
[vdsocall]
vmar_unmap_handle_close_thread_exit(handle<vmar> vmar_handle,
vaddr addr, usize size,
handle close_handle)
-> (status status);
/// Write to futex, wake futex, close handle, exit.
[noreturn,
vdsocall]
futex_wake_handle_close_thread_exit(const_futexptr value_ptr,
uint32 wake_count,
int32 new_value,
handle close_handle);
// Read the number of high-precision timer ticks since boot, but demand
// that the read be performed using a syscall, instead of a vdso call.
//
// Note that this is an internal syscall, not meant to be used by
// application code. By default, the vdso version of this syscall will do
// the proper thing, either directly reading from the hardware register
// backing the tick counter, or by making a syscall if the register is not
// accessible from user mode code (for whatever reason).
[internal]
ticks_get_via_kernel() -> (ticks ticks);
};