Zircon System Calls
Handles
- handle_close - close a handle
- handle_close_many - close several handles
- handle_duplicate - create a duplicate handle (optionally with reduced rights)
- handle_replace - create a new handle (optionally with reduced rights) and destroy the old one
Objects
- object_get_child - find the child of an object by its koid
- object_get_info - obtain information about an object
- object_get_property - read an object property
- object_set_profile - apply a profile to a thread
- object_set_property - modify an object property
- object_signal - set or clear the user signals on an object
- object_signal_peer - set or clear the user signals in the opposite end
- object_wait_many - wait for signals on multiple objects
- object_wait_one - wait for signals on one object
- object_wait_async - asynchronous notifications on signal change
Threads
- thread_create - create a new thread within a process
- thread_exit - exit the current thread
- thread_read_state - read register state from a thread
- thread_start - cause a new thread to start executing
- thread_write_state - modify register state of a thread
Processes
- process_create - create a new process within a job
- process_read_memory - read from a process's address space
- process_start - cause a new process to start executing
- process_write_memory - write to a process's address space
- process_exit - exit the current process
Jobs
- job_create - create a new job within a job
- job_set_critical - set a process as critical to a job
- job_set_policy - modify policies for a job and its descendants
Tasks (Thread, Process, or Job)
- task_create_exception_channel - create an exception channel on a task
- task_kill - cause a task to stop running
- task_suspend - cause a task to be suspended
Profiles
- profile_create - create a new profile object
Exceptions
- exception_get_thread - create a handle for the exception thread
- exception_get_process - create a handle for the exception process
Channels
- channel_call - synchronously send a message and receive a reply
- channel_call_etc - synchronously send a message and receive a reply with handle information
- channel_create - create a new channel
- channel_read - receive a message from a channel
- channel_read_etc - receive a message from a channel with handle information
- channel_write - write a message to a channel
- channel_write_etc - write a message to the channel and modify the handles
Sockets
- socket_create - create a new socket
- socket_read - read data from a socket
- socket_set_disposition - set write disposition of a socket
- socket_write - write data to a socket
Stream
- stream_create - create a stream from a VMO
- stream_readv - read data from the stream at the current seek offset
- stream_readv_at - read data from the stream at a given offset
- stream_writev - write data to the stream at the current seek offset
- stream_writev_at - write data to the stream at a given offset
- stream_seek - modify the current seek offset of the stream
Fifos
- fifo_create - create a new fifo
- fifo_read - read data from a fifo
- fifo_write - write data to a fifo
Events and Event Pairs
- event_create - create an event
- eventpair_create - create a connected pair of events
- system_get_event - retrieve a handle to a system event
Ports
- port_create - create a port
- port_queue - send a packet to a port
- port_wait - wait for packets to arrive on a port
- port_cancel - cancel notifications from async_wait
Futexes
- futex_wait - wait on a futex
- futex_wake - wake waiters on a futex
- futex_requeue - wake some waiters and requeue other waiters
Virtual Memory Objects (VMOs)
- vmo_create - create a new vmo
- vmo_read - read from a vmo
- vmo_write - write to a vmo
- vmo_create_child - creates a child of a vmo
- vmo_get_size - obtain the size of a vmo
- vmo_set_size - adjust the size of a vmo
- vmo_op_range - perform an operation on a range of a vmo
- vmo_replace_as_executable - add execute rights to a vmo
- vmo_create_physical - create a VM object referring to a specific contiguous range of physical memory
- vmo_set_cache_policy - set the caching policy for pages held by a VMO
Virtual Memory Address Regions (VMARs)
- vmar_allocate - create a new child VMAR
- vmar_map - map a VMO into a process
- vmar_unmap - unmap a memory region from a process
- vmar_protect - adjust memory access permissions
- vmar_op_range - perform an operation on VMOs mapped into a range of a VMAR
- vmar_destroy - destroy a VMAR and all of its children
Userspace Pagers
- pager_create - create a new pager object
- pager_create_vmo - create a pager owned vmo
- pager_detach_vmo - detaches a pager from a vmo
- pager_supply_pages - supply pages into a pager owned vmo
- pager_op_range - perform an operation on a range of a pager owned vmo
Cryptographically Secure RNG
Time
- nanosleep - sleep for some number of nanoseconds
- clock_get_monotonic - read the monotonic system clock
- clock_create - Create a new clock object
- clock_get_details - Fetch all of the low level details of the clock's current status
- clock_update - Make adjustments to a clock object
- ticks_get - read high-precision timer ticks
- ticks_per_second - read the number of high-precision timer ticks in a second
- deadline_after - Convert a time relative to now to an absolute deadline
Timers
- timer_create - create a timer object
- timer_set - start a timer
- timer_cancel - cancel a timer
Hypervisor guests
- guest_create - create a hypervisor guest
- guest_set_trap - set a trap in a hypervisor guest
Virtual CPUs
- vcpu_create - create a VCPU
- vcpu_enter - enter a VCPU, and start or continue execution
- vcpu_kick - kick a VCPU, and stop execution
- vcpu_interrupt - raise an interrupt on a VCPU
- vcpu_read_state - read state from a VCPU
- vcpu_write_state - write state to a VCPU
- interrupt_bind_vcpu - bind an interrupt object to a VCPU
Global system information
- system_get_dcache_line_size
- system_get_features - get hardware-specific features
- system_get_num_cpus - get number of CPUs
- system_get_page_size - get memory page size
- system_get_physmem - get physical memory size
- system_get_version_string - get version string
Debug Logging
- debuglog_create - create a kernel managed debuglog reader or writer
- debuglog_write - write log entry to debuglog
- debuglog_read - read log entries from debuglog
- debug_read - TODO(fxbug.dev/32938)
- debug_write - TODO(fxbug.dev/32938)
- debug_send_command - TODO(fxbug.dev/32938)
Multi-function
- vmar_unmap_handle_close_thread_exit - three-in-one
- futex_wake_handle_close_thread_exit - three-in-one
System
- system_mexec - Soft reboot the system with a new kernel and bootimage
- system_mexec_payload_get - Return a ZBI containing ZBI entries necessary to boot this system
- system_powerctl
- system_get_performance_info - Get CPU performance info
- system_set_performance_info - Set CPU performance info
DDK
- bti_create - create a new bus transaction initiator
- bti_pin - pin pages and grant devices access to them
- bti_release_quarantine - releases all quarantined PMTs
- cache_flush - Flush CPU data and/or instruction caches
- interrupt_ack - Acknowledge an interrupt object
- interrupt_bind - Bind an interrupt object to a port
- interrupt_create - Create a physical or virtual interrupt object
- interrupt_destroy - Destroy an interrupt object
- interrupt_trigger - Trigger a virtual interrupt object
- interrupt_wait - Wait on an interrupt object
- iommu_create - create a new IOMMU object in the kernel
- pmt_unpin - unpin pages and revoke device access to them
- resource_create - create a resource object
- smc_call - Make an SMC call from user space
Display drivers
Tracing
Others/Work in progress
- ioports_release
- pc_firmware_tables
- pci_add_subtract_io_range
- pci_cfg_pio_rw
- pci_config_read
- pci_config_write
- pci_enable_bus_master
- pci_get_bar
- pci_get_nth_device
- pci_init
- pci_map_interrupt
- pci_query_irq_mode
- pci_reset_device
- syscall_test_1
- syscall_test_2
- syscall_test_3
- syscall_test_4
- syscall_test_5
- syscall_test_6
- syscall_test_7
- syscall_test_8
- syscall_test_wrapper
- syscall_test_handle_create
Syscall generation
Syscall support is generated from //zircon/vdso. The FIDL files in that
directory are first run through fidlc, which produces an intermediate format.
That intermediate format is consumed by 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.
最后更新:
2022 年 12 月 31 日(Saturday) 21:07 CST