안녕하세요? 허니데이즈입니다. 오늘은 지르콘 시스템콜이 뭐가 있는지 포스팅 하겠습니다.



지르콘 커널에서 사용되는 시스템콜은 현재까지 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



 

지르콘 커널에 대해 더 알고 싶으시다면 아래 목차에서 클릭! 

지르콘 커널이란?

Zircon

지르콘 커널 개발 환경 구축하기

Getting Started

지르콘 커널 개발에 기여하는 방법

Contributing Patches

지르콘 커널의 개념 알기

Concepts Overview

지르콘 커널 구성요소(Kernel Objects)는?

Kernel Objects

지르콘 커널에서 사용되는 프로세스(Process)란?

Process Objects

지르콘 커널에서 사용되는 쓰레드(Thread)란?

Thread Objects

지르콘 커널에서 사용되는 핸들(Handles)이란?

Handles

지르콘 커널의 시스템콜하는 방식은?

System Calls

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 장치 모델

Driver Development Kit

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 장치 프로토콜

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 지르콘 드라이버 개발

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 플랫폼 버스

지르콘 커널의 드라이버 개발 키트 사용하는 방법 - 장치 펌웨어

지르콘 커널을 시험하는 방법은?

Testing

지르콘 커널의 취약점은 무엇일까?

Hacking notes

지르콘 커널의 메모리와 자원 사용은 어떻게 할까?

Memory usage analysis tools

지르콘 커널과 LK(Little Kernel)의 관계는?

Relationship with LK

지르콘 커널을 위한 마이크로 벤츠마크는?

Micro-benchmarks


+ Recent posts