안녕하세요? 허니데이즈입니다. 오늘은 지르콘 시스템콜이 뭐가 있는지 포스팅 하겠습니다.
지르콘 커널에서 사용되는 시스템콜은 현재까지 20여가지 기능을 하기 위한 세트로 정의되고 있으며 다음과 같다.
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_cookie - read an object cookie
object_get_info - obtain information about an object
object_get_property - read an object property
object_set_cookie - write an object cookie
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_policy - modify policies for a job and its descendants
Tasks (Thread, Process, or Job)
task_bind_exception_port - attach an exception port to a task
task_kill - cause a task to stop running
task_resume - cause a suspended task to continue running
task_resume_from_exception - resume a task from a previously caught exception
task_suspend - cause a task to be suspended
Channels
channel_call - synchronously send a message and receive a reply
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
Sockets
socket_create - create a new socket
socket_read - read data from a socket
socket_write - write data to a socket
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
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_clone - clone 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
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_destroy - destroy a VMAR and all of its children
Cryptographically Secure RNG
cprng_draw
cprng_add_entropy
Time
nanosleep - sleep for some number of nanoseconds
clock_get - read a system clock
clock_get_monotonic - read the monotonic system clock
ticks_get - read high-precision timer ticks
ticks_per_second - read the number of high-precision timer ticks in a second
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 virtual cpu
vcpu_resume - resume execution of a virtual cpu
vcpu_interrupt - raise an interrupt on a virtual cpu
vcpu_read_state - read state from a virtual cpu
vcpu_write_state - write state to a virtual cpu
Global system information
system_get_features - get hardware-specific features
system_get_num_cpus - get number of CPUs
system_get_physmem - get physical memory size
system_get_version - get version string
Logging
log_create - create a kernel managed log reader or writer
log_write - write log entry to log
log_read - read log entries from log
Multi-function
vmar_unmap_handle_close_thread_exit - three-in-one
futex_wake_handle_close_thread_exit - three-in-one
DDK
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
smc_call - Make an SMC call from user space
acpi_uefi_rsdp
ioports_request
framebuffer_set_range
vmo_create_contiguous
vmo_create_physical
출처: https://fuchsia.googlesource.com/zircon/+/master/docs/syscalls.md
지르콘 커널에 대해 더 알고 싶으시다면 아래 목차에서 클릭!
'Past Material' 카테고리의 다른 글
운영체제의 역사와 구체적으로 어떤 일들을 수행하나요? (1) | 2019.02.09 |
---|---|
운영체제를 시작하기 앞서 (0) | 2019.02.09 |
구글은 어떻게 안드로이드 생태계에서 퓨시아(Fuchsia) 생태계로 전환시킬 수 있을까? (0) | 2018.08.21 |
[Zircon Kernel] 지르콘 커널에서 사용되는 핸들(Handles)이란? - Fuchsia OS (0) | 2018.08.20 |
[Zircon Kernel] 지르콘 커널에서 사용되는 쓰레드(Thread)란? - Fuchsia OS (0) | 2018.08.08 |