| // 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); |
| }; |