1# Zircon System Calls 2 3## Handles 4+ [handle_close](syscalls/handle_close.md) - close a handle 5+ [handle_close_many](syscalls/handle_close_many.md) - close several handles 6+ [handle_duplicate](syscalls/handle_duplicate.md) - create a duplicate handle (optionally with reduced rights) 7+ [handle_replace](syscalls/handle_replace.md) - create a new handle (optionally with reduced rights) and destroy the old one 8 9## Objects 10+ [object_get_child](syscalls/object_get_child.md) - find the child of an object by its koid 11+ [object_get_cookie](syscalls/object_get_cookie.md) - read an object cookie 12+ [object_get_info](syscalls/object_get_info.md) - obtain information about an object 13+ [object_get_property](syscalls/object_get_property.md) - read an object property 14+ [object_set_cookie](syscalls/object_set_cookie.md) - write an object cookie 15+ [object_set_property](syscalls/object_set_property.md) - modify an object property 16+ [object_signal](syscalls/object_signal.md) - set or clear the user signals on an object 17+ [object_signal_peer](syscalls/object_signal.md) - set or clear the user signals in the opposite end 18+ [object_wait_many](syscalls/object_wait_many.md) - wait for signals on multiple objects 19+ [object_wait_one](syscalls/object_wait_one.md) - wait for signals on one object 20+ [object_wait_async](syscalls/object_wait_async.md) - asynchronous notifications on signal change 21 22## Threads 23+ [thread_create](syscalls/thread_create.md) - create a new thread within a process 24+ [thread_exit](syscalls/thread_exit.md) - exit the current thread 25+ [thread_read_state](syscalls/thread_read_state.md) - read register state from a thread 26+ [thread_start](syscalls/thread_start.md) - cause a new thread to start executing 27+ [thread_write_state](syscalls/thread_write_state.md) - modify register state of a thread 28 29## Processes 30+ [process_create](syscalls/process_create.md) - create a new process within a job 31+ [process_read_memory](syscalls/process_read_memory.md) - read from a process's address space 32+ [process_start](syscalls/process_start.md) - cause a new process to start executing 33+ [process_write_memory](syscalls/process_write_memory.md) - write to a process's address space 34+ [process_exit](syscalls/process_exit.md) - exit the current process 35 36## Jobs 37+ [job_create](syscalls/job_create.md) - create a new job within a job 38+ [job_set_policy](syscalls/job_set_policy.md) - modify policies for a job and its descendants 39 40## Tasks (Thread, Process, or Job) 41+ [task_bind_exception_port](syscalls/task_bind_exception_port.md) - attach an exception port to a task 42+ [task_kill](syscalls/task_kill.md) - cause a task to stop running 43+ [task_resume_from_exception](syscalls/task_resume_from_exception.md) - resume a task from a previously caught exception 44+ [task_suspend](syscalls/task_suspend.md) - cause a task to be suspended 45 46## Channels 47+ [channel_call](syscalls/channel_call.md) - synchronously send a message and receive a reply 48+ [channel_create](syscalls/channel_create.md) - create a new channel 49+ [channel_read](syscalls/channel_read.md) - receive a message from a channel 50+ [channel_read_etc](syscalls/channel_read.md) - receive a message from a channel with handle information 51+ [channel_write](syscalls/channel_write.md) - write a message to a channel 52 53## Sockets 54+ [socket_accept](syscalls/socket_accept.md) - receive a socket via a socket 55+ [socket_create](syscalls/socket_create.md) - create a new socket 56+ [socket_read](syscalls/socket_read.md) - read data from a socket 57+ [socket_share](syscalls/socket_share.md) - share a socket via a socket 58+ [socket_shutdown](syscalls/socket_shutdown.md) - prevent reading or writing 59+ [socket_write](syscalls/socket_write.md) - write data to a socket 60 61## Fifos 62+ [fifo_create](syscalls/fifo_create.md) - create a new fifo 63+ [fifo_read](syscalls/fifo_read.md) - read data from a fifo 64+ [fifo_write](syscalls/fifo_write.md) - write data to a fifo 65 66## Events and Event Pairs 67+ [event_create](syscalls/event_create.md) - create an event 68+ [eventpair_create](syscalls/eventpair_create.md) - create a connected pair of events 69 70## Ports 71+ [port_create](syscalls/port_create.md) - create a port 72+ [port_queue](syscalls/port_queue.md) - send a packet to a port 73+ [port_wait](syscalls/port_wait.md) - wait for packets to arrive on a port 74+ [port_cancel](syscalls/port_cancel.md) - cancel notifications from async_wait 75 76## Futexes 77+ [futex_wait](syscalls/futex_wait.md) - wait on a futex 78+ [futex_wake](syscalls/futex_wake.md) - wake waiters on a futex 79+ [futex_requeue](syscalls/futex_requeue.md) - wake some waiters and requeue other waiters 80 81## Virtual Memory Objects (VMOs) 82+ [vmo_create](syscalls/vmo_create.md) - create a new vmo 83+ [vmo_read](syscalls/vmo_read.md) - read from a vmo 84+ [vmo_write](syscalls/vmo_write.md) - write to a vmo 85+ [vmo_clone](syscalls/vmo_clone.md) - clone a vmo 86+ [vmo_get_size](syscalls/vmo_get_size.md) - obtain the size of a vmo 87+ [vmo_set_size](syscalls/vmo_set_size.md) - adjust the size of a vmo 88+ [vmo_op_range](syscalls/vmo_op_range.md) - perform an operation on a range of a vmo 89+ [vmo_replace_as_executable](syscalls/vmo_replace_as_executable.md) - add execute rights to a vmo 90+ [vmo_create_physical](syscalls/vmo_create_physical.md) - create a VM object referring to a specific contiguous range of physical memory 91+ [vmo_clone](syscalls/vmo_clone.md) - clone a vmo 92+ [vmo_set_cache_policy](syscalls/vmo_set_cache_policy.md) - set the caching policy for pages held by a VMO. 93 94## Virtual Memory Address Regions (VMARs) 95+ [vmar_allocate](syscalls/vmar_allocate.md) - create a new child VMAR 96+ [vmar_map](syscalls/vmar_map.md) - map a VMO into a process 97+ [vmar_unmap](syscalls/vmar_unmap.md) - unmap a memory region from a process 98+ [vmar_protect](syscalls/vmar_protect.md) - adjust memory access permissions 99+ [vmar_destroy](syscalls/vmar_destroy.md) - destroy a VMAR and all of its children 100 101## Cryptographically Secure RNG 102+ [cprng_draw](syscalls/cprng_draw.md) 103+ [cprng_add_entropy](syscalls/cprng_add_entropy.md) 104 105## Time 106+ [nanosleep](syscalls/nanosleep.md) - sleep for some number of nanoseconds 107+ [clock_get](syscalls/clock_get.md) - read a system clock 108+ [clock_get_monotonic](syscalls/clock_get_monotonic.md) - read the monotonic system clock 109+ [ticks_get](syscalls/ticks_get.md) - read high-precision timer ticks 110+ [ticks_per_second](syscalls/ticks_per_second.md) - read the number of high-precision timer ticks in a second 111+ [deadline_after](syscalls/deadline_after.md) - Convert a time relative to now to an absolute deadline 112 113## Timers 114+ [timer_create](syscalls/timer_create.md) - create a timer object 115+ [timer_set](syscalls/timer_set.md) - start a timer 116+ [timer_cancel](syscalls/timer_cancel.md) - cancel a timer 117 118## Hypervisor guests 119+ [guest_create](syscalls/guest_create.md) - create a hypervisor guest 120+ [guest_set_trap](syscalls/guest_set_trap.md) - set a trap in a hypervisor guest 121 122## Virtual CPUs 123+ [vcpu_create](syscalls/vcpu_create.md) - create a virtual cpu 124+ [vcpu_resume](syscalls/vcpu_resume.md) - resume execution of a virtual cpu 125+ [vcpu_interrupt](syscalls/vcpu_interrupt.md) - raise an interrupt on a virtual cpu 126+ [vcpu_read_state](syscalls/vcpu_read_state.md) - read state from a virtual cpu 127+ [vcpu_write_state](syscalls/vcpu_write_state.md) - write state to a virtual cpu 128 129## Global system information 130+ [system_get_features](syscalls/system_get_features.md) - get hardware-specific features 131+ [system_get_num_cpus](syscalls/system_get_num_cpus.md) - get number of CPUs 132+ [system_get_physmem](syscalls/system_get_physmem.md) - get physical memory size 133+ [system_get_version](syscalls/system_get_version.md) - get version string 134 135## Logging 136+ [debuglog_create](syscalls/debuglog_create.md) - create a kernel managed log reader or writer 137+ [log_write](syscalls/log_write.md) - write log entry to log 138+ [log_read](syscalls/log_read.md) - read log entries from log 139 140## Multi-function 141+ [vmar_unmap_handle_close_thread_exit](syscalls/vmar_unmap_handle_close_thread_exit.md) - three-in-one 142+ [futex_wake_handle_close_thread_exit](syscalls/futex_wake_handle_close_thread_exit.md) - three-in-one 143 144## System 145+ [system_mexec](syscalls/system_mexec.md) - Soft reboot the system with a new kernel and bootimage 146+ [system_mexec_payload_get](syscalls/system_mexec_payload_get.md) - Return a ZBI containing ZBI entries necessary to boot this system 147 148## DDK 149+ [bti_create](syscalls/bti_create.md) - create a new bus transaction initiator 150+ [bti_pin](syscalls/bti_pin.md) - pin pages and grant devices access to them 151+ [bti_release_quarantine](syscalls/bti_release_quarantine.md) - releases all quarantined PMTs 152+ [cache_flush](syscalls/cache_flush.md) - Flush CPU data and/or instruction caches 153+ [interrupt_ack](syscalls/interrupt_ack.md) - Acknowledge an interrupt object 154+ [interrupt_bind](syscalls/interrupt_bind.md) - Bind an interrupt object to a port 155+ [interrupt_create](syscalls/interrupt_create.md) - Create a physical or virtual interrupt object 156+ [interrupt_destroy](syscalls/interrupt_destroy.md) - Destroy an interrupt object 157+ [interrupt_trigger](syscalls/interrupt_trigger.md) - Trigger a virtual interrupt object 158+ [interrupt_wait](syscalls/interrupt_wait.md) - Wait on an interrupt object 159+ [iommu_create](syscalls/iommu_create.md) - create a new IOMMU object in the kernel 160+ [pmt_unpin](syscalls/pmt_unpin.md) - unpin pages and revoke device access to them 161+ [resource_create](syscalls/resource_create.md) - create a resource object 162+ [smc_call](syscalls/smc_call.md) - Make an SMC call from user space 163