blob: 464669cb7000ecfe8959ce67065e1e616d2b7f16 [file] [log] [blame] [view]
# Zircon System Calls
## Handles
+ [handle_close](handle_close.md) - close a handle
+ [handle_close_many](handle_close_many.md) - close several handles
+ [handle_duplicate](handle_duplicate.md) - create a duplicate handle (optionally with reduced rights)
+ [handle_replace](handle_replace.md) - create a new handle (optionally with reduced rights) and destroy the old one
## Objects
+ [object_get_child](object_get_child.md) - find the child of an object by its koid
+ [object_get_info](object_get_info.md) - obtain information about an object
+ [object_get_property](object_get_property.md) - read an object property
+ [object_set_profile](object_set_profile.md) - apply a profile to a thread
+ [object_set_property](object_set_property.md) - modify an object property
+ [object_signal](object_signal.md) - set or clear the user signals on an object
+ [object_signal_peer](object_signal_peer.md) - set or clear the user signals in the opposite end
+ [object_wait_many](object_wait_many.md) - wait for signals on multiple objects
+ [object_wait_one](object_wait_one.md) - wait for signals on one object
+ [object_wait_async](object_wait_async.md) - asynchronous notifications on signal change
## Threads
+ [thread_create](thread_create.md) - create a new thread within a process
+ [thread_exit](thread_exit.md) - exit the current thread
+ [thread_read_state](thread_read_state.md) - read register state from a thread
+ [thread_start](thread_start.md) - cause a new thread to start executing
+ [thread_write_state](thread_write_state.md) - modify register state of a thread
## Processes
+ [process_create](process_create.md) - create a new process within a job
+ [process_read_memory](process_read_memory.md) - read from a process's address space
+ [process_start](process_start.md) - cause a new process to start executing
+ [process_write_memory](process_write_memory.md) - write to a process's address space
+ [process_exit](process_exit.md) - exit the current process
## Jobs
+ [job_create](job_create.md) - create a new job within a job
+ [job_set_policy](job_set_policy.md) - modify policies for a job and its descendants
## Tasks (Thread, Process, or Job)
+ [task_create_exception_channel](task_create_exception_channel.md) - create an exception channel on a task
+ [task_kill](task_kill.md) - cause a task to stop running
+ [task_suspend](task_suspend.md) - cause a task to be suspended
## Profiles
+ [profile_create](profile_create.md) - create a new profile object
## Exceptions
+ [exception_get_thread](exception_get_thread.md) - create a handle for the exception thread
+ [exception_get_process](exception_get_process.md) - create a handle for the exception process
## Channels
+ [channel_call](channel_call.md) - synchronously send a message and receive a reply
+ [channel_create](channel_create.md) - create a new channel
+ [channel_read](channel_read.md) - receive a message from a channel
+ [channel_read_etc](channel_read_etc.md) - receive a message from a channel with handle information
+ [channel_write](channel_write.md) - write a message to a channel
+ [channel_write_etc](channel_write_etc.md) - write a message to the channel and modify the handles.
## Sockets
+ [socket_create](socket_create.md) - create a new socket
+ [socket_read](socket_read.md) - read data from a socket
+ [socket_shutdown](socket_shutdown.md) - prevent reading or writing
+ [socket_write](socket_write.md) - write data to a socket
## Fifos
+ [fifo_create](fifo_create.md) - create a new fifo
+ [fifo_read](fifo_read.md) - read data from a fifo
+ [fifo_write](fifo_write.md) - write data to a fifo
## Events and Event Pairs
+ [event_create](event_create.md) - create an event
+ [eventpair_create](eventpair_create.md) - create a connected pair of events
+ [system_get_event](system_get_event.md) - retrieve a handle to a system event
## Ports
+ [port_create](port_create.md) - create a port
+ [port_queue](port_queue.md) - send a packet to a port
+ [port_wait](port_wait.md) - wait for packets to arrive on a port
+ [port_cancel](port_cancel.md) - cancel notifications from async_wait
## Futexes
+ [futex_wait](futex_wait.md) - wait on a futex
+ [futex_wake](futex_wake.md) - wake waiters on a futex
+ [futex_requeue](futex_requeue.md) - wake some waiters and requeue other waiters
## Virtual Memory Objects (VMOs)
+ [vmo_create](vmo_create.md) - create a new vmo
+ [vmo_read](vmo_read.md) - read from a vmo
+ [vmo_write](vmo_write.md) - write to a vmo
+ [vmo_create_child](vmo_create_child.md) - creates a child of a vmo
+ [vmo_get_size](vmo_get_size.md) - obtain the size of a vmo
+ [vmo_set_size](vmo_set_size.md) - adjust the size of a vmo
+ [vmo_op_range](vmo_op_range.md) - perform an operation on a range of a vmo
+ [vmo_replace_as_executable](vmo_replace_as_executable.md) - add execute rights to a vmo
+ [vmo_create_physical](vmo_create_physical.md) - create a VM object referring to a specific contiguous range of physical memory
+ [vmo_set_cache_policy](vmo_set_cache_policy.md) - set the caching policy for pages held by a VMO
## Virtual Memory Address Regions (VMARs)
+ [vmar_allocate](vmar_allocate.md) - create a new child VMAR
+ [vmar_map](vmar_map.md) - map a VMO into a process
+ [vmar_unmap](vmar_unmap.md) - unmap a memory region from a process
+ [vmar_protect](vmar_protect.md) - adjust memory access permissions
+ [vmar_op_range](vmar_op_range.md) - perform an operation on VMOs mapped into a range of a VMAR
+ [vmar_destroy](vmar_destroy.md) - destroy a VMAR and all of its children
## Userspace Pagers
+ [pager_create](pager_create.md) - create a new pager object
+ [pager_create_vmo](pager_create_vmo.md) - create a pager owned vmo
+ [pager_detach_vmo](pager_detach_vmo.md) - detaches a pager from a vmo
+ [pager_supply_pages](pager_supply_pages.md) - supply pages into a pager owned vmo
## Cryptographically Secure RNG
+ [cprng_add_entropy](cprng_add_entropy.md)
+ [cprng_draw](cprng_draw.md)
## Time
+ [nanosleep](nanosleep.md) - sleep for some number of nanoseconds
+ [clock_get](clock_get.md) - read a system clock
+ [clock_get_monotonic](clock_get_monotonic.md) - read the monotonic system clock
+ [ticks_get](ticks_get.md) - read high-precision timer ticks
+ [ticks_per_second](ticks_per_second.md) - read the number of high-precision timer ticks in a second
+ [deadline_after](deadline_after.md) - Convert a time relative to now to an absolute deadline
+ [clock_adjust](clock_adjust.md) -
## Timers
+ [timer_create](timer_create.md) - create a timer object
+ [timer_set](timer_set.md) - start a timer
+ [timer_cancel](timer_cancel.md) - cancel a timer
## Hypervisor guests
+ [guest_create](guest_create.md) - create a hypervisor guest
+ [guest_set_trap](guest_set_trap.md) - set a trap in a hypervisor guest
## Virtual CPUs
+ [vcpu_create](vcpu_create.md) - create a virtual cpu
+ [vcpu_resume](vcpu_resume.md) - resume execution of a virtual cpu
+ [vcpu_interrupt](vcpu_interrupt.md) - raise an interrupt on a virtual cpu
+ [vcpu_read_state](vcpu_read_state.md) - read state from a virtual cpu
+ [vcpu_write_state](vcpu_write_state.md) - write state to a virtual cpu
+ [interrupt_bind_vcpu](interrupt_bind_vcpu.md) - Bind an interrupt object to a VCPU
## Global system information
+ [system_get_dcache_line_size](system_get_dcache_line_size.md)
+ [system_get_features](system_get_features.md) - get hardware-specific features
+ [system_get_num_cpus](system_get_num_cpus.md) - get number of CPUs
+ [system_get_physmem](system_get_physmem.md) - get physical memory size
+ [system_get_version](system_get_version.md) - get version string
## Debug Logging
+ [debuglog_create](debuglog_create.md) - create a kernel managed debuglog reader or writer
+ [debuglog_write](debuglog_write.md) - write log entry to debuglog
+ [debuglog_read](debuglog_read.md) - read log entries from debuglog
+ [debug_read](debug_read.md) - TODO(fxbug.dev/32938)
+ [debug_write](debug_write.md) - TODO(fxbug.dev/32938)
+ [debug_send_command](debug_send_command.md) - TODO(fxbug.dev/32938)
## Multi-function
+ [vmar_unmap_handle_close_thread_exit](vmar_unmap_handle_close_thread_exit.md) - three-in-one
+ [futex_wake_handle_close_thread_exit](futex_wake_handle_close_thread_exit.md) - three-in-one
## System
+ [system_mexec](system_mexec.md) - Soft reboot the system with a new kernel and bootimage
+ [system_mexec_payload_get](system_mexec_payload_get.md) - Return a ZBI containing ZBI entries necessary to boot this system
+ [system_powerctl](system_powerctl.md)
## DDK
+ [bti_create](bti_create.md) - create a new bus transaction initiator
+ [bti_pin](bti_pin.md) - pin pages and grant devices access to them
+ [bti_release_quarantine](bti_release_quarantine.md) - releases all quarantined PMTs
+ [cache_flush](cache_flush.md) - Flush CPU data and/or instruction caches
+ [interrupt_ack](interrupt_ack.md) - Acknowledge an interrupt object
+ [interrupt_bind](interrupt_bind.md) - Bind an interrupt object to a port
+ [interrupt_create](interrupt_create.md) - Create a physical or virtual interrupt object
+ [interrupt_destroy](interrupt_destroy.md) - Destroy an interrupt object
+ [interrupt_trigger](interrupt_trigger.md) - Trigger a virtual interrupt object
+ [interrupt_wait](interrupt_wait.md) - Wait on an interrupt object
+ [iommu_create](iommu_create.md) - create a new IOMMU object in the kernel
+ [pmt_unpin](pmt_unpin.md) - unpin pages and revoke device access to them
+ [resource_create](resource_create.md) - create a resource object
+ [smc_call](smc_call.md) - Make an SMC call from user space
## Display drivers
+ [framebuffer_get_info](framebuffer_get_info.md)
+ [framebugger_set_range](framebuffer_set_range.md)
## Tracing
+ [ktrace_control](ktrace_control.md)
+ [ktrace_read](ktrace_read.md)
+ [ktrace_write](ktrace_write.md)
+ [mtrace_control](mtrace_control.md)
## Others/Work in progress
+ [ioports_release](ioports_release.md)
+ [pc_firmware_tables](pc_firmware_tables.md)
+ [pci_add_subtract_io_range](pci_add_subtract_io_range.md)
+ [pci_cfg_pio_rw](pci_cfg_pio_rw.md)
+ [pci_config_read](pci_config_read.md)
+ [pci_config_write](pci_config_write.md)
+ [pci_enable_bus_master](pci_enable_bus_master.md)
+ [pci_get_bar](pci_get_bar.md)
+ [pci_get_nth_device](pci_get_nth_device.md)
+ [pci_init](pci_init.md)
+ [pci_map_interrupt](pci_map_interrupt.md)
+ [pci_query_irq_mode](pci_query_irq_mode.md)
+ [pci_reset_device](pci_reset_device.md)
+ [pci_set_irq_mode](pci_set_irq_mode.md)
+ [syscall_test_0](syscall_test_0.md)
+ [syscall_test_1](syscall_test_1.md)
+ [syscall_test_2](syscall_test_2.md)
+ [syscall_test_3](syscall_test_3.md)
+ [syscall_test_4](syscall_test_4.md)
+ [syscall_test_5](syscall_test_5.md)
+ [syscall_test_6](syscall_test_6.md)
+ [syscall_test_7](syscall_test_7.md)
+ [syscall_test_8](syscall_test_8.md)
+ [syscall_test_wrapper](syscall_test_wrapper.md)
+ [syscall_test_handle_create](syscall_test_handle_create.md)
## Syscall generation
Syscall support is generated from `//zircon/syscalls`. The FIDL files in that
directory are first run through `fidlc` which produces an intermediate format.
That intermediate format is consumed by [kazoo](/zircon/tools/kazoo) which
produces output for both the kernel and userspace in a variety of languages.
This output includes C or C++ headers for both the kernel and userspace, syscall
entry points, other language bindings, and so on.
This tool is invoked as a part of the build, rather than checking in its output.