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 Compatibility

"We don't break user space."

--- Linus Torvalds

Asterinas is dedicated to maintaining compatibility with the Linux ABI, ensuring that applications and administrative tools designed for Linux can seamlessly operate within Asterinas. While we prioritize compatibility, it is important to note that Asterinas does not, nor will it in the future, support the loading of Linux kernel modules.

System Calls

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💯
58vforkN/A
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
101ptraceN/A
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_rootN/A
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💯
200tkillN/A
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
434pidfd_open
435clone3
436close_range
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: