Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Linux 相容性

“We don’t break user space.”

-– Linus Torvalds

Asterinas 致力於保持與 Linux ABI 的相容性,確保專為 Linux 設計的應用程式和管理工具能在 Asterinas 中無縫運行。雖然我們優先考慮相容性,但必須注意的是,Asterinas 目前不支援、未來也不會支援載入 Linux 內核模組。

系統呼叫

At the time of writing, Asterinas supports over 230 Linux system calls for the x86-64 architecture, which are summarized in the table below.

NumbersNamesSupportedFlag Coverage
0read💯
1write💯
2open⚠️
3close💯
4stat💯
5fstat💯
6lstat💯
7poll⚠️
8lseek⚠️
9mmap⚠️
10mprotect⚠️
11munmap💯
12brk💯
13rt_sigaction⚠️
14rt_sigprocmask⚠️
15rt_sigreturn💯
16ioctl⚠️
17pread64💯
18pwrite64💯
19readv💯
20writev💯
21access💯
22pipe💯
23select💯
24sched_yield💯
25mremap⚠️
26msync⚠️
27mincoreN/A
28madvise⚠️
29shmgetN/A
30shmatN/A
31shmctlN/A
32dup💯
33dup2💯
34pause💯
35nanosleep💯
36getitimer💯
37alarm💯
38setitimer💯
39getpid💯
40sendfile💯
41socket⚠️
42connect⚠️
43accept⚠️
44sendto⚠️
45recvfrom⚠️
46sendmsg⚠️
47recvmsg⚠️
48shutdown💯
49bind⚠️
50listen💯
51getsockname💯
52getpeername💯
53socketpair⚠️
54setsockopt⚠️
55getsockopt⚠️
56clone⚠️
57fork💯
58vfork💯
59execve💯
60exit💯
61wait4⚠️
62kill💯
63uname💯
64semget⚠️
65semop⚠️
66semctl⚠️
67shmdtN/A
68msggetN/A
69msgsndN/A
70msgrcvN/A
71msgctlN/A
72fcntl⚠️
73flock💯
74fsync💯
75fdatasync💯
76truncate💯
77ftruncate💯
78getdents💯
79getcwd💯
80chdir💯
81fchdir💯
82rename💯
83mkdir💯
84rmdir💯
85creat💯
86link💯
87unlink💯
88symlink💯
89readlink💯
90chmod💯
91fchmod💯
92chown💯
93fchown💯
94lchown💯
95umask💯
96gettimeofday💯
97getrlimit💯
98getrusage⚠️
99sysinfo💯
100timesN/A
101ptrace⚠️
102getuid💯
103syslogN/A
104getgid💯
105setuid💯
106setgid💯
107geteuid💯
108getegid💯
109setpgid💯
110getppid💯
111getpgrp💯
112setsid💯
113setreuid💯
114setregid💯
115getgroups💯
116setgroups💯
117setresuid💯
118getresuid💯
119setresgid💯
120getresgid💯
121getpgid💯
122setfsuid💯
123setfsgid💯
124getsid💯
125capget⚠️
126capset⚠️
127rt_sigpending💯
128rt_sigtimedwait💯
129rt_sigqueueinfoN/A
130rt_sigsuspend💯
131sigaltstack💯
132utime💯
133mknod💯
134uselibN/A
135personalityN/A
136ustatN/A
137statfs💯
138fstatfs💯
139sysfsN/A
140getpriority💯
141setpriority💯
142sched_setparam💯
143sched_getparam💯
144sched_setscheduler⚠️
145sched_getscheduler💯
146sched_get_priority_max💯
147sched_get_priority_min💯
148sched_rr_get_intervalN/A
149mlockN/A
150munlockN/A
151mlockallN/A
152munlockallN/A
153vhangupN/A
154modify_ldtN/A
155pivot_root💯
156_sysctlN/A
157prctl⚠️
158arch_prctl⚠️
159adjtimexN/A
160setrlimit💯
161chroot💯
162sync💯
163acctN/A
164settimeofdayN/A
165mount⚠️
166umount2⚠️
167swaponN/A
168swapoffN/A
169reboot⚠️
170sethostname💯
171setdomainname💯
172ioplN/A
173iopermN/A
174create_moduleN/A
175init_moduleN/A
176delete_moduleN/A
177get_kernel_symsN/A
178query_moduleN/A
179quotactlN/A
180nfsservctlN/A
181getpmsgN/A
182putpmsgN/A
183afs_syscallN/A
184tuxcallN/A
185securityN/A
186gettid💯
187readaheadN/A
188setxattr💯
189lsetxattr💯
190fsetxattr💯
191getxattr💯
192lgetxattr💯
193fgetxattr💯
194listxattr💯
195llistxattr💯
196flistxattr💯
197removexattr💯
198lremovexattr💯
199fremovexattr💯
200tkill💯
201time💯
202futex⚠️
203sched_setaffinity💯
204sched_getaffinity💯
205set_thread_areaN/A
206io_setupN/A
207io_destroyN/A
208io_geteventsN/A
209io_submitN/A
210io_cancelN/A
211get_thread_areaN/A
212lookup_dcookieN/A
213epoll_create💯
214epoll_ctl_oldN/A
215epoll_wait_oldN/A
216remap_file_pagesN/A
217getdents64💯
218set_tid_address💯
219restart_syscallN/A
220semtimedop⚠️
221fadvise64⚠️
222timer_create⚠️
223timer_settime💯
224timer_gettime💯
225timer_getoverrunN/A
226timer_delete💯
227clock_settimeN/A
228clock_gettime⚠️
229clock_getresN/A
230clock_nanosleep⚠️
231exit_group💯
232epoll_wait💯
233epoll_ctl⚠️
234tgkill💯
235utimes💯
236vserverN/A
237mbindN/A
238set_mempolicyN/A
239get_mempolicyN/A
240mq_openN/A
241mq_unlinkN/A
242mq_timedsendN/A
243mq_timedreceiveN/A
244mq_notifyN/A
245mq_getsetattrN/A
246kexec_loadN/A
247waitid⚠️
248add_keyN/A
249request_keyN/A
250keyctlN/A
251ioprio_set⚠️
252ioprio_get⚠️
253inotify_init💯
254inotify_add_watch⚠️
255inotify_rm_watch💯
256migrate_pagesN/A
257openat⚠️
258mkdirat💯
259mknodat💯
260fchownat💯
261futimesat💯
262newfstatat⚠️
263unlinkat💯
264renameat💯
265linkat💯
266symlinkat💯
267readlinkat💯
268fchmodat💯
269faccessat💯
270pselect6💯
271ppoll⚠️
272unshare⚠️
273set_robust_list💯
274get_robust_listN/A
275spliceN/A
276teeN/A
277sync_file_rangeN/A
278vmspliceN/A
279move_pagesN/A
280utimensat⚠️
281epoll_pwait💯
282signalfd💯
283timerfd_create⚠️
284eventfd💯
285fallocate⚠️
286timerfd_settime⚠️
287timerfd_gettime💯
288accept4⚠️
289signalfd4💯
290eventfd2⚠️
291epoll_create1💯
292dup3💯
293pipe2⚠️
294inotify_init1⚠️
295preadv💯
296pwritev💯
297rt_tgsigqueueinfoN/A
298perf_event_openN/A
299recvmmsgN/A
300fanotify_initN/A
301fanotify_markN/A
302prlimit64💯
303name_to_handle_atN/A
304open_by_handle_atN/A
305clock_adjtimeN/A
306syncfs💯
307sendmmsg⚠️
308setns⚠️
309getcpu💯
310process_vm_readvN/A
311process_vm_writevN/A
312kcmpN/A
313finit_moduleN/A
314sched_setattr⚠️
315sched_getattr⚠️
316renameat2⚠️
318getrandom⚠️
319memfd_create⚠️
322execveat💯
327preadv2⚠️
328pwritev2⚠️
332statx⚠️
424pidfd_send_signal💯
434pidfd_open💯
435clone3⚠️
436close_range💯
438pidfd_getfd💯
439faccessat2⚠️
441epoll_pwait2💯
452fchmodat2💯
  • Supported:

    • ✅ = syscall supported
    • ❌ = not supported
  • Flag Coverage:

    • 💯 = all flags/commands/modes are supported
    • ⚠️ = syscall works, but some flags/modes are not implemented
    • ❓ = implementation exists, but we have not audited its coverage yet
    • N/A = not applicable (e.g., syscall not supported)

Most of these system calls (or their variants) are also supported for the RISC-V and LoongArch architectures.

File Systems

Here is the list of supported file systems:

  • Devfs
  • Devpts
  • Ext2
  • Procfs
  • Ramfs

Sockets

Here is the list of supported socket types:

  • TCP sockets over IPv4
  • UDP sockets over IPv4
  • Unix sockets

vDSO

Here is the list of supported symbols in vDSO:

  • __vdso_clock_gettime
  • __vdso_gettimeofday
  • __vdso_time

Boot Protocols

Here is the list of supported boot protocols: