[Life of a Fuchsia syscall](https://fuchsia.dev/docs/concepts/kernel/life_of_a_syscall)

## Handles

- [handle_check_valid](https://fuchsia.dev/reference/syscalls/handle_check_valid) - Checks a handle's validity.
- [handle_close](https://fuchsia.dev/reference/syscalls/handle_close) - Close a handle.
- [handle_close_many](https://fuchsia.dev/reference/syscalls/handle_close_many) - Close a number of handles.
- [handle_duplicate](https://fuchsia.dev/reference/syscalls/handle_duplicate) - Duplicate a handle.
- [handle_replace](https://fuchsia.dev/reference/syscalls/handle_replace) - Replace a handle.

## Objects

- [object_get_child](https://fuchsia.dev/reference/syscalls/object_get_child) - Given a kernel object with children objects, obtain a handle to the child specified by the provided kernel object id.
- [object_get_info](https://fuchsia.dev/reference/syscalls/object_get_info) - Query information about an object.
- [object_get_property](https://fuchsia.dev/reference/syscalls/object_get_property) - Ask for various properties of various kernel objects.
- [object_set_profile](https://fuchsia.dev/reference/syscalls/object_set_profile) - Apply a scheduling profile to a thread.
- [object_set_property](https://fuchsia.dev/reference/syscalls/object_set_property) - Set various properties of various kernel objects.
- [object_signal](https://fuchsia.dev/reference/syscalls/object_signal) - Signal an object.
- [object_signal_peer](https://fuchsia.dev/reference/syscalls/object_signal_peer) - Signal an object's peer.
- [object_wait_async](https://fuchsia.dev/reference/syscalls/object_wait_async) - Subscribe for signals on an object.
- [object_wait_many](https://fuchsia.dev/reference/syscalls/object_wait_many) - Wait for signals on multiple objects.
- [object_wait_one](https://fuchsia.dev/reference/syscalls/object_wait_one) - Wait for signals on an object.

## Threads

- [thread_create](https://fuchsia.dev/reference/syscalls/thread_create) - Create a thread.
- [thread_exit](https://fuchsia.dev/reference/syscalls/thread_exit) - Terminate the current running thread.
- [thread_legacy_yield](https://fuchsia.dev/reference/syscalls/thread_legacy_yield) - Yield the CPU of the current thread back to the scheduler.
- [thread_raise_exception](https://fuchsia.dev/reference/syscalls/thread_raise_exception) - Raise a user-generated exception.
- [thread_read_state](https://fuchsia.dev/reference/syscalls/thread_read_state) - Read one aspect of thread state.
- [thread_set_rseq](https://fuchsia.dev/reference/syscalls/thread_set_rseq) - Register a restartable sequence for a thread.
- [thread_start](https://fuchsia.dev/reference/syscalls/thread_start) - Start execution on a thread.
- [thread_write_state](https://fuchsia.dev/reference/syscalls/thread_write_state) - Write one aspect of thread state.

## Thread Sampling

- [sampler_create](https://fuchsia.dev/reference/syscalls/sampler_create) - Create a sampler session, returning an IOBuffer containing a buffer allocated for each
- [sampler_read](https://fuchsia.dev/reference/syscalls/sampler_read) - Read out available samples.
- [sampler_start](https://fuchsia.dev/reference/syscalls/sampler_start) - Begin sampling to the provided IOBuffer.
- [sampler_stop](https://fuchsia.dev/reference/syscalls/sampler_stop) - Stop writing samples to the provided IOBuffer.

## IO Buffers

- [iob_allocate_id](https://fuchsia.dev/reference/syscalls/iob_allocate_id) - Allocates an ID out of an IOBuffer region of discipline
- [iob_create](https://fuchsia.dev/reference/syscalls/iob_create) - Create an IOBuffer with a set of options.
- [iob_create_shared_region](https://fuchsia.dev/reference/syscalls/iob_create_shared_region) - Creates a shared region that can be used with multiple IOBuffer objects.
- [iob_writev](https://fuchsia.dev/reference/syscalls/iob_writev) - Performs a mediated write to an IOBuffer region.

## Processes

- [process_create](https://fuchsia.dev/reference/syscalls/process_create) - Create a new process.
- [process_create_shared](https://fuchsia.dev/reference/syscalls/process_create_shared) - Create a new process that can share part of its address space with other processes.
- [process_exit](https://fuchsia.dev/reference/syscalls/process_exit) - Exits the currently running process.
- [process_read_memory](https://fuchsia.dev/reference/syscalls/process_read_memory) - Read from the given process's address space.
- [process_start](https://fuchsia.dev/reference/syscalls/process_start) - Start execution on a process.
- [process_write_memory](https://fuchsia.dev/reference/syscalls/process_write_memory) - Write into the given process's address space.

## Jobs

- [job_create](https://fuchsia.dev/reference/syscalls/job_create) - Create a new job.
- [job_set_critical](https://fuchsia.dev/reference/syscalls/job_set_critical) - Set a process as critical to a job.
- [job_set_policy](https://fuchsia.dev/reference/syscalls/job_set_policy) - Set job security and resource policies.

## Tasks (Thread, Process, or Job)

- [task_create_exception_channel](https://fuchsia.dev/reference/syscalls/task_create_exception_channel) - Create an exception channel for a given job, process, or thread.
- [task_kill](https://fuchsia.dev/reference/syscalls/task_kill) - Kill the provided job or process.
- [task_suspend](https://fuchsia.dev/reference/syscalls/task_suspend) - Suspend the given task. Currently only thread or process handles may be suspended.
- [task_suspend_token](https://fuchsia.dev/reference/syscalls/task_suspend_token) - Suspend the given task. Currently only thread or process handles may be suspended.

## Profiles

- [profile_create](https://fuchsia.dev/reference/syscalls/profile_create) - Create a scheduler profile.

## Exceptions

- [exception_get_process](https://fuchsia.dev/reference/syscalls/exception_get_process) - Create a handle for the exception's process.
- [exception_get_thread](https://fuchsia.dev/reference/syscalls/exception_get_thread) - Create a handle for the exception's thread.

## Channels

- [channel_call](https://fuchsia.dev/reference/syscalls/channel_call) - Send a message to a channel and await a reply.
- [channel_call_etc](https://fuchsia.dev/reference/syscalls/channel_call_etc) - Send a message to a channel and await a reply.
- [channel_create](https://fuchsia.dev/reference/syscalls/channel_create) - Create a channel.
- [channel_read](https://fuchsia.dev/reference/syscalls/channel_read) - Read a message from a channel.
- [channel_read_etc](https://fuchsia.dev/reference/syscalls/channel_read_etc) - Read a message from a channel.
- [channel_write](https://fuchsia.dev/reference/syscalls/channel_write) - Write a message to a channel.
- [channel_write_etc](https://fuchsia.dev/reference/syscalls/channel_write_etc) - Write a message to a channel.

## Sockets

- [socket_create](https://fuchsia.dev/reference/syscalls/socket_create) - Create a socket.
- [socket_read](https://fuchsia.dev/reference/syscalls/socket_read) - Read data from a socket.
- [socket_set_disposition](https://fuchsia.dev/reference/syscalls/socket_set_disposition) - Set disposition of writes.
- [socket_write](https://fuchsia.dev/reference/syscalls/socket_write) - Write data to a socket.

## Streams

- [stream_create](https://fuchsia.dev/reference/syscalls/stream_create) - Create a stream from a VMO.
- [stream_readv](https://fuchsia.dev/reference/syscalls/stream_readv) - Read data from a stream at the current seek offset.
- [stream_readv_at](https://fuchsia.dev/reference/syscalls/stream_readv_at) - Read data from a stream at the given offset.
- [stream_seek](https://fuchsia.dev/reference/syscalls/stream_seek) - Modify the seek offset.
- [stream_writev](https://fuchsia.dev/reference/syscalls/stream_writev) - Write data to a stream at the current seek offset.
- [stream_writev_at](https://fuchsia.dev/reference/syscalls/stream_writev_at) - Write data to a stream at the given offset.

## Fifos

- [fifo_create](https://fuchsia.dev/reference/syscalls/fifo_create) - Create a fifo.
- [fifo_read](https://fuchsia.dev/reference/syscalls/fifo_read) - Read data from a fifo.
- [fifo_write](https://fuchsia.dev/reference/syscalls/fifo_write) - Write data to a fifo.

## Events, Event Pairs, and Counters

- [counter_add](https://fuchsia.dev/reference/syscalls/counter_add) - Add a value to a counter.
- [counter_create](https://fuchsia.dev/reference/syscalls/counter_create) - Create a counter.
- [counter_read](https://fuchsia.dev/reference/syscalls/counter_read) - Read the value of a counter.
- [counter_write](https://fuchsia.dev/reference/syscalls/counter_write) - Write a value to a counter.
- [event_create](https://fuchsia.dev/reference/syscalls/event_create) - Create an event.
- [eventpair_create](https://fuchsia.dev/reference/syscalls/eventpair_create) - Create an event pair.
- [system_get_event](https://fuchsia.dev/reference/syscalls/system_get_event) - Retrieve a handle to a system event.

## Ports

- [port_cancel](https://fuchsia.dev/reference/syscalls/port_cancel) - Cancels async port notifications on an object.
- [port_cancel_key](https://fuchsia.dev/reference/syscalls/port_cancel_key) - Cancels all async port notifications matching a key.
- [port_create](https://fuchsia.dev/reference/syscalls/port_create) - Create an IO port.
- [port_queue](https://fuchsia.dev/reference/syscalls/port_queue) - Queue a packet to a port.
- [port_wait](https://fuchsia.dev/reference/syscalls/port_wait) - Wait for a packet arrival in a port.

## Futexes

- [futex_get_owner](https://fuchsia.dev/reference/syscalls/futex_get_owner) - Fetch the koid current owner of a futex, if any.
- [futex_requeue](https://fuchsia.dev/reference/syscalls/futex_requeue) - Wake some number of threads waiting on a futex, and move more waiters to another wait queue.
- [futex_requeue_single_owner](https://fuchsia.dev/reference/syscalls/futex_requeue_single_owner) - Wake one thread waiting on a futex, and requeue more waiters to another futex wait queue.
- [futex_wait](https://fuchsia.dev/reference/syscalls/futex_wait) - Wait on a futex.
- [futex_wake](https://fuchsia.dev/reference/syscalls/futex_wake) - Wake some number of threads waiting on a futex, and set the ownership of the futex to nothing.
- [futex_wake_handle_close_thread_exit](https://fuchsia.dev/reference/syscalls/futex_wake_handle_close_thread_exit) - Write to futex, wake futex, close handle, exit.
- [futex_wake_single_owner](https://fuchsia.dev/reference/syscalls/futex_wake_single_owner) - Wake one thread waiting on a futex, and set the ownership of the futex to that thread.

## Virtual Memory Objects (VMOs)

- [vmo_create](https://fuchsia.dev/reference/syscalls/vmo_create) - Create a VM object.
- [vmo_create_child](https://fuchsia.dev/reference/syscalls/vmo_create_child) -
- [vmo_create_contiguous](https://fuchsia.dev/reference/syscalls/vmo_create_contiguous) -
- [vmo_create_physical](https://fuchsia.dev/reference/syscalls/vmo_create_physical) -
- [vmo_get_size](https://fuchsia.dev/reference/syscalls/vmo_get_size) -
- [vmo_get_stream_size](https://fuchsia.dev/reference/syscalls/vmo_get_stream_size) -
- [vmo_op_range](https://fuchsia.dev/reference/syscalls/vmo_op_range) -
- [vmo_read](https://fuchsia.dev/reference/syscalls/vmo_read) - Read bytes from the VMO.
- [vmo_replace_as_executable](https://fuchsia.dev/reference/syscalls/vmo_replace_as_executable) -
- [vmo_set_cache_policy](https://fuchsia.dev/reference/syscalls/vmo_set_cache_policy) -
- [vmo_set_size](https://fuchsia.dev/reference/syscalls/vmo_set_size) -
- [vmo_set_stream_size](https://fuchsia.dev/reference/syscalls/vmo_set_stream_size) -
- [vmo_transfer_data](https://fuchsia.dev/reference/syscalls/vmo_transfer_data) -
- [vmo_write](https://fuchsia.dev/reference/syscalls/vmo_write) - Write bytes to the VMO.

## Virtual Memory Address Regions (VMARs)

- [vmar_allocate](https://fuchsia.dev/reference/syscalls/vmar_allocate) - Allocate a new subregion.
- [vmar_destroy](https://fuchsia.dev/reference/syscalls/vmar_destroy) - Destroy a virtual memory address region.
- [vmar_map](https://fuchsia.dev/reference/syscalls/vmar_map) - Add a memory mapping.
- [vmar_map_clock](https://fuchsia.dev/reference/syscalls/vmar_map_clock) - Map a kernel clock object's state.
- [vmar_map_iob](https://fuchsia.dev/reference/syscalls/vmar_map_iob) - Map the memory regions attached to an IOBuffer. This call has
- [vmar_op_range](https://fuchsia.dev/reference/syscalls/vmar_op_range) - Perform an operation on VMOs mapped into this VMAR.
- [vmar_protect](https://fuchsia.dev/reference/syscalls/vmar_protect) - Set protection of virtual memory pages.
- [vmar_unmap](https://fuchsia.dev/reference/syscalls/vmar_unmap) - Unmap virtual memory pages.

## Userspace Pagers

- [pager_create](https://fuchsia.dev/reference/syscalls/pager_create) - Create a new pager object.
- [pager_create_vmo](https://fuchsia.dev/reference/syscalls/pager_create_vmo) - Create a pager owned VMO.
- [pager_detach_vmo](https://fuchsia.dev/reference/syscalls/pager_detach_vmo) - Detaches a VMO from a pager.
- [pager_op_range](https://fuchsia.dev/reference/syscalls/pager_op_range) - Perform an operation on a range of a pager owned VMO.
- [pager_query_dirty_ranges](https://fuchsia.dev/reference/syscalls/pager_query_dirty_ranges) - Query contiguous ranges of dirty pages in a pager owned VMO.
- [pager_query_vmo_stats](https://fuchsia.dev/reference/syscalls/pager_query_vmo_stats) -
- [pager_supply_pages](https://fuchsia.dev/reference/syscalls/pager_supply_pages) - Supply pages into a pager owned VMO.

## Cryptographically Secure RNG

- [cprng_add_entropy](https://fuchsia.dev/reference/syscalls/cprng_add_entropy) - Add entropy to the kernel CPRNG.
- [cprng_draw](https://fuchsia.dev/reference/syscalls/cprng_draw) - Draw from the kernel's CPRNG.

## Time

- [clock_create](https://fuchsia.dev/reference/syscalls/clock_create) - Create a new clock object.
- [clock_get_boot](https://fuchsia.dev/reference/syscalls/clock_get_boot) - Acquire the current boot time.
- [clock_get_details](https://fuchsia.dev/reference/syscalls/clock_get_details) - Fetch all of the low level details of the clock's current state.
- [clock_get_details_mapped](https://fuchsia.dev/reference/syscalls/clock_get_details_mapped) - Fetch all of the low level details of a mapped clock's current state. Behaves identically to
- [clock_get_monotonic](https://fuchsia.dev/reference/syscalls/clock_get_monotonic) - Acquire the current monotonic time.
- [clock_read](https://fuchsia.dev/reference/syscalls/clock_read) - Perform a basic read of the clock.
- [clock_read_mapped](https://fuchsia.dev/reference/syscalls/clock_read_mapped) - Perform a basic read of a mapped clock's state. Behaves identically to a call to
- [clock_update](https://fuchsia.dev/reference/syscalls/clock_update) - Make adjustments to a clock object.
- [deadline_after](https://fuchsia.dev/reference/syscalls/deadline_after) - Convert a time relative to now to an absolute deadline.
- [nanosleep](https://fuchsia.dev/reference/syscalls/nanosleep) - High resolution sleep.
- [ticks_get](https://fuchsia.dev/reference/syscalls/ticks_get) - Read the number of high-precision timer ticks since boot, not including
- [ticks_get_boot](https://fuchsia.dev/reference/syscalls/ticks_get_boot) - Read the number of high-precision timer ticks since boot, including any time spent in a
- [ticks_per_second](https://fuchsia.dev/reference/syscalls/ticks_per_second) - Read the number of high-precision timer ticks in a second.

## Timers

- [timer_cancel](https://fuchsia.dev/reference/syscalls/timer_cancel) - Cancel a timer.
- [timer_create](https://fuchsia.dev/reference/syscalls/timer_create) - Create a timer.
- [timer_set](https://fuchsia.dev/reference/syscalls/timer_set) - Start a timer.

## Message Signaled Interrupts (MSIs)

- [msi_allocate](https://fuchsia.dev/reference/syscalls/msi_allocate) - Allocate Message-Signaled Interrupts (MSIs).
- [msi_create](https://fuchsia.dev/reference/syscalls/msi_create) - Create an Interrupt object from a Messaged-Signaled Interrupt (MSI) allocation.

## Hypervisor guests

- [guest_create](https://fuchsia.dev/reference/syscalls/guest_create) - Create a guest.
- [guest_set_trap](https://fuchsia.dev/reference/syscalls/guest_set_trap) - Sets a trap within a guest.

## Virtual CPUs

- [vcpu_create](https://fuchsia.dev/reference/syscalls/vcpu_create) - Create a VCPU.
- [vcpu_enter](https://fuchsia.dev/reference/syscalls/vcpu_enter) - Enter a VCPU, causing it to resume execution.
- [vcpu_interrupt](https://fuchsia.dev/reference/syscalls/vcpu_interrupt) - Raise an interrupt on a VCPU.
- [vcpu_kick](https://fuchsia.dev/reference/syscalls/vcpu_kick) - Kick a VCPU, causing it to stop execution.
- [vcpu_read_state](https://fuchsia.dev/reference/syscalls/vcpu_read_state) - Read the state of a VCPU.
- [vcpu_write_state](https://fuchsia.dev/reference/syscalls/vcpu_write_state) - Write the state of a VCPU.

## Global system information

- [system_get_dcache_line_size](https://fuchsia.dev/reference/syscalls/system_get_dcache_line_size) - TODO(https://fxbug.dev/42108078)
- [system_get_features](https://fuchsia.dev/reference/syscalls/system_get_features) - Get supported hardware capabilities.
- [system_get_num_cpus](https://fuchsia.dev/reference/syscalls/system_get_num_cpus) - Get number of logical processors on the system.
- [system_get_page_size](https://fuchsia.dev/reference/syscalls/system_get_page_size) - Get the page size for the system.
- [system_get_physmem](https://fuchsia.dev/reference/syscalls/system_get_physmem) - Get amount of physical memory on the system.
- [system_get_version_string](https://fuchsia.dev/reference/syscalls/system_get_version_string) - Get version string for system.

## Debug Logging

- [debug_read](https://fuchsia.dev/reference/syscalls/debug_read) - Read a message from the debug serial port.
- [debug_resume](https://fuchsia.dev/reference/syscalls/debug_resume) - Allow access to the debug serial port hardware after a successful
- [debug_send_command](https://fuchsia.dev/reference/syscalls/debug_send_command) - TODO(https://fxbug.dev/42108078)
- [debug_suspend](https://fuchsia.dev/reference/syscalls/debug_suspend) - Suspend access to the debug serial port hardware.
- [debug_write](https://fuchsia.dev/reference/syscalls/debug_write) - Write a message to the debug serial port.
- [debuglog_create](https://fuchsia.dev/reference/syscalls/debuglog_create) - Create an object allowing access to the kernel debuglog.
- [debuglog_read](https://fuchsia.dev/reference/syscalls/debuglog_read) - Read a single log record from the kernel debuglog.
- [debuglog_write](https://fuchsia.dev/reference/syscalls/debuglog_write) - Write a message to the kernel debuglog.

## Multi-function

- [vmar_unmap_handle_close_thread_exit](https://fuchsia.dev/reference/syscalls/vmar_unmap_handle_close_thread_exit) - Unmap memory, close handle, exit.

## System

- [system_get_performance_info](https://fuchsia.dev/reference/syscalls/system_get_performance_info) - Get CPU performance parameters.
- [system_powerctl](https://fuchsia.dev/reference/syscalls/system_powerctl) - TODO(https://fxbug.dev/42108078)
- [system_set_performance_info](https://fuchsia.dev/reference/syscalls/system_set_performance_info) - Set CPU performance parameters.
- [system_suspend_enter](https://fuchsia.dev/reference/syscalls/system_suspend_enter) -
- [system_watch_memory_stall](https://fuchsia.dev/reference/syscalls/system_watch_memory_stall) - Retrieve an event that becomes signaled if the memory stall level

## Driver

- [bti_create](https://fuchsia.dev/reference/syscalls/bti_create) - Create a new bus transaction initiator.
- [bti_pin](https://fuchsia.dev/reference/syscalls/bti_pin) - Pin pages and grant devices access to them.
- [bti_release_quarantine](https://fuchsia.dev/reference/syscalls/bti_release_quarantine) - Releases all quarantined PMTs.
- [cache_flush](https://fuchsia.dev/reference/syscalls/cache_flush) - Flush CPU data and/or instruction caches.
- [interrupt_ack](https://fuchsia.dev/reference/syscalls/interrupt_ack) - Acknowledge an interrupt and re-arm it.
- [interrupt_bind](https://fuchsia.dev/reference/syscalls/interrupt_bind) - Bind an interrupt object to a port.
- [interrupt_create](https://fuchsia.dev/reference/syscalls/interrupt_create) - Create an interrupt object.
- [interrupt_destroy](https://fuchsia.dev/reference/syscalls/interrupt_destroy) - Destroys an interrupt object.
- [interrupt_trigger](https://fuchsia.dev/reference/syscalls/interrupt_trigger) - Triggers a virtual interrupt object.
- [interrupt_wait](https://fuchsia.dev/reference/syscalls/interrupt_wait) - Wait for an interrupt.
- [iommu_create](https://fuchsia.dev/reference/syscalls/iommu_create) - Create a new IOMMU object in the kernel.
- [ioports_release](https://fuchsia.dev/reference/syscalls/ioports_release) - TODO(https://fxbug.dev/42108078)
- [ioports_request](https://fuchsia.dev/reference/syscalls/ioports_request) - TODO(https://fxbug.dev/42108078)
- [pmt_unpin](https://fuchsia.dev/reference/syscalls/pmt_unpin) - Unpin pages and revoke device access to them.
- [resource_create](https://fuchsia.dev/reference/syscalls/resource_create) - Create a resource object.
- [smc_call](https://fuchsia.dev/reference/syscalls/smc_call) - Make Secure Monitor Call (SMC) from user space.

## Tracing

- [ktrace_control](https://fuchsia.dev/reference/syscalls/ktrace_control) - TODO(https://fxbug.dev/42108078)
- [ktrace_read](https://fuchsia.dev/reference/syscalls/ktrace_read) - TODO(https://fxbug.dev/42108078)

## Memory Barriers

- [membarrier_sync_process_data](https://fuchsia.dev/reference/syscalls/membarrier_sync_process_data) - Issue a data membarrier on all running threads within this process.
- [membarrier_sync_process_insn](https://fuchsia.dev/reference/syscalls/membarrier_sync_process_insn) - Issue an instruction membarrier on all running threads within this

## Restricted Mode (Work in progress)

- [restricted_bind_state](https://fuchsia.dev/reference/syscalls/restricted_bind_state) - Create and bind a restricted state VMO to the current thread.
- [restricted_enter](https://fuchsia.dev/reference/syscalls/restricted_enter) - Enter restricted mode
- [restricted_kick](https://fuchsia.dev/reference/syscalls/restricted_kick) - Kick a thread out of restricted mode.
- [restricted_unbind_state](https://fuchsia.dev/reference/syscalls/restricted_unbind_state) - Unbind a restricted state VMO from the current thread.