1#![allow(dead_code)]
6mod cred;
7mod fcntl;
8mod fs;
9pub mod io;
10mod ioctl;
11mod ipc;
12mod mm;
13mod network;
14mod signal;
15mod sys;
16mod task;
17mod util;
18
19use core::ffi::{c_char, c_int, c_uint, c_ulong, c_void};
20
21use crate::{
22 impl_syscall,
23 uapi::{
24 fs::LinuxStatFs,
25 futex::RobustListHead,
26 iovec::IoVec,
27 resource::{Rlimit, Rusage},
28 signal::{SigInfoT, SignalAction},
29 sysinfo::SysInfo,
30 time::{Itimerval, TimeSpec},
31 types::{SigSetT, SizeT, StackT},
32 uts_namespace::UtsNamespace,
33 },
34 vfs::Stat,
35};
36use cred::*;
37use fcntl::*;
38use fs::*;
39use io::*;
40use ioctl::*;
41use ipc::*;
42use mm::*;
43use network::*;
44use signal::*;
45use sys::*;
46use task::*;
47
48impl_syscall!(sys_getcwd, getcwd, (*mut u8, usize));
53
54impl_syscall!(sys_dup, dup, (usize));
56impl_syscall!(sys_dup3, dup3, (usize, usize, u32));
57impl_syscall!(sys_fcntl, fcntl, (usize, i32, usize));
58impl_syscall!(sys_ioctl, ioctl, (i32, u32, usize));
59
60impl_syscall!(sys_mknodat, mknodat, (i32, *const c_char, u32, u64));
62impl_syscall!(sys_mkdirat, mkdirat, (i32, *const c_char, u32));
63impl_syscall!(sys_unlinkat, unlinkat, (i32, *const c_char, u32));
64impl_syscall!(
65 sys_symlinkat,
66 symlinkat,
67 (*const c_char, i32, *const c_char)
68);
69
70impl_syscall!(sys_statfs, statfs, (*const c_char, *mut LinuxStatFs));
72
73impl_syscall!(sys_faccessat, faccessat, (i32, *const c_char, i32, u32));
75impl_syscall!(sys_chdir, chdir, (*const c_char));
76impl_syscall!(sys_fchmodat, fchmodat, (i32, *const c_char, u32, u32));
77impl_syscall!(sys_fchownat, fchownat, (i32, *const c_char, u32, u32, u32));
78
79impl_syscall!(sys_openat, openat, (i32, *const c_char, u32, u32));
81impl_syscall!(sys_close, close, (usize));
82impl_syscall!(sys_pipe2, pipe2, (*mut i32, u32));
83impl_syscall!(sys_getdents64, getdents64, (usize, *mut u8, usize));
84impl_syscall!(sys_lseek, lseek, (usize, isize, usize));
85
86impl_syscall!(sys_read, read, (usize, *mut u8, usize));
88impl_syscall!(sys_write, write, (usize, *const u8, usize));
89impl_syscall!(sys_readv, readv, (usize, *const IoVec, usize));
90impl_syscall!(sys_writev, writev, (usize, *const IoVec, usize));
91impl_syscall!(sys_pread64, pread64, (usize, *mut u8, usize, i64));
92impl_syscall!(sys_pwrite64, pwrite64, (usize, *const u8, usize, i64));
93impl_syscall!(sys_preadv, preadv, (usize, *const IoVec, usize, i64));
94impl_syscall!(sys_pwritev, pwritev, (usize, *const IoVec, usize, i64));
95impl_syscall!(sys_sendfile, sendfile, (usize, usize, *mut i64, usize));
96impl_syscall!(
97 sys_pselect6,
98 pselect6,
99 (usize, usize, usize, usize, usize, usize)
100);
101impl_syscall!(sys_ppoll, ppoll, (usize, usize, usize, usize));
102
103impl_syscall!(
105 sys_readlinkat,
106 readlinkat,
107 (i32, *const c_char, *mut u8, usize)
108);
109impl_syscall!(
110 sys_newfstatat,
111 newfstatat,
112 (i32, *const c_char, *mut Stat, u32)
113);
114impl_syscall!(sys_fstat, fstat, (usize, *mut Stat));
115impl_syscall!(sys_sync, sync, ());
116impl_syscall!(sys_fsync, fsync, (usize));
117impl_syscall!(sys_fdatasync, fdatasync, (usize));
118
119impl_syscall!(
121 sys_utimensat,
122 utimensat,
123 (i32, *const c_char, *const TimeSpec, u32)
124);
125
126impl_syscall!(sys_exit, exit, (c_int));
128impl_syscall!(sys_exit_group, exit_group, noreturn, (c_int));
129impl_syscall!(sys_set_tid_address, set_tid_address, (*mut c_int));
130
131impl_syscall!(sys_nanosleep, nanosleep, (*const TimeSpec, *mut TimeSpec));
133impl_syscall!(
134 sys_futex,
135 futex,
136 (*mut u32, c_int, u32, *const TimeSpec, *mut u32, u32)
137);
138impl_syscall!(
139 sys_set_robust_list,
140 set_robust_list,
141 (*const RobustListHead, SizeT)
142);
143impl_syscall!(
144 sys_get_robust_list,
145 get_robust_list,
146 (c_int, *mut *mut RobustListHead, *mut SizeT)
147);
148impl_syscall!(sys_getitimmer, getitimer, (c_int, *mut Itimerval));
149impl_syscall!(
150 sys_setitimmer,
151 setitimer,
152 (c_int, *const Itimerval, *mut Itimerval)
153);
154
155impl_syscall!(sys_clock_settime, clock_settime, (c_int, *const TimeSpec));
157impl_syscall!(sys_clock_gettime, clock_gettime, (c_int, *mut TimeSpec));
158impl_syscall!(sys_clock_getres, clock_getres, (c_int, *mut TimeSpec));
159impl_syscall!(sys_syslog, syslog, (i32, *mut u8, i32));
160
161impl_syscall!(sys_kill, kill, (c_int, c_int));
163impl_syscall!(sys_tkill, tkill, (c_int, c_int));
164impl_syscall!(sys_tgkill, tgkill, (c_int, c_int, c_int));
165impl_syscall!(sys_sigaltstack, signal_stack, (*const StackT, *mut StackT));
166impl_syscall!(sys_rt_sigsuspend, rt_sigsuspend, (*const SigSetT, c_uint));
167impl_syscall!(
168 sys_rt_sigaction,
169 rt_sigaction,
170 (c_int, *const SignalAction, *mut SignalAction)
171);
172impl_syscall!(
173 sys_rt_sigprocmask,
174 rt_sigprocmask,
175 (c_int, *const SigSetT, *mut SigSetT, c_uint)
176);
177impl_syscall!(sys_rt_sigpending, rt_sigpending, (*mut SigSetT, c_uint));
178impl_syscall!(
179 sys_rt_sigtimedwait,
180 rt_sigtimedwait,
181 (*const SigSetT, *mut SigInfoT, *const TimeSpec, c_uint)
182);
183impl_syscall!(sys_rt_sigreturn, rt_sigreturn, noreturn, ());
184
185impl_syscall!(sys_reboot, reboot, (c_int, c_int, c_int, *mut c_void));
187impl_syscall!(sys_setgid, setgid, (u32));
188impl_syscall!(sys_setuid, setuid, (u32));
189impl_syscall!(sys_setresuid, setresuid, (u32, u32, u32));
190impl_syscall!(sys_getresuid, getresuid, (*mut u32, *mut u32, *mut u32));
191impl_syscall!(sys_setresgid, setresgid, (u32, u32, u32));
192impl_syscall!(sys_getresgid, getresgid, (*mut u32, *mut u32, *mut u32));
193impl_syscall!(sys_setsid, setsid, ());
194impl_syscall!(sys_setpgid, set_pgid, (c_int, c_int));
195
196impl_syscall!(sys_uname, uname, (*mut UtsNamespace));
198impl_syscall!(sys_sethostname, set_hostname, (*const c_char, usize));
199impl_syscall!(sys_getrlimit, getrlimit, (c_int, *mut Rlimit));
200impl_syscall!(sys_setrlimit, setrlimit, (c_int, *const Rlimit));
201impl_syscall!(sys_umask, umask, (u32));
202impl_syscall!(sys_getpid, get_pid, ());
203impl_syscall!(sys_getppid, get_ppid, ());
204impl_syscall!(sys_getpgid, get_pgid, (c_int));
205impl_syscall!(sys_getuid, getuid, ());
206impl_syscall!(sys_geteuid, geteuid, ());
207impl_syscall!(sys_getgid, getgid, ());
208impl_syscall!(sys_getegid, getegid, ());
209impl_syscall!(sys_gettid, gettid, ());
210impl_syscall!(sys_sysinfo, sysinfo, (*mut SysInfo));
211
212impl_syscall!(sys_socket, socket, (i32, i32, i32));
214impl_syscall!(sys_bind, bind, (i32, *const u8, u32));
215impl_syscall!(sys_listen, listen, (i32, i32));
216impl_syscall!(sys_accept, accept, (i32, *mut u8, *mut u32));
217impl_syscall!(sys_connect, connect, (i32, *const u8, u32));
218impl_syscall!(sys_getsockname, getsockname, (i32, *mut u8, *mut u32));
219impl_syscall!(sys_getpeername, getpeername, (i32, *mut u8, *mut u32));
220impl_syscall!(
221 sys_sendto,
222 sendto,
223 (i32, *const u8, usize, i32, *const u8, u32)
224);
225impl_syscall!(
226 sys_recvfrom,
227 recvfrom,
228 (i32, *mut u8, usize, i32, *mut u8, *mut u32)
229);
230impl_syscall!(sys_setsockopt, setsockopt, (i32, i32, i32, *const u8, u32));
231impl_syscall!(
232 sys_getsockopt,
233 getsockopt,
234 (i32, i32, i32, *mut u8, *mut u32)
235);
236
237impl_syscall!(
239 sys_clone,
240 clone,
241 (
242 c_ulong, c_ulong, *mut c_int, *mut c_void, *mut c_int )
248);
249impl_syscall!(
250 sys_execve,
251 execve,
252 (*const c_char, *const *const c_char, *const *const c_char)
253);
254
255impl_syscall!(sys_accept4, accept4, (i32, *mut u8, *mut u32, i32));
257
258impl_syscall!(sys_wait4, wait4, (c_int, *mut c_int, c_int, *mut Rusage));
260impl_syscall!(
261 sys_prlimit,
262 prlimit,
263 (c_int, c_int, *const Rlimit, *mut Rlimit)
264);
265
266impl_syscall!(sys_brk, brk, (usize));
268impl_syscall!(sys_mmap, mmap, (*mut c_void, usize, i32, i32, i32, i64));
269impl_syscall!(sys_munmap, munmap, (*mut c_void, usize));
270impl_syscall!(sys_mprotect, mprotect, (*mut c_void, usize, i32));
271
272impl_syscall!(sys_syncfs, syncfs, (usize));
274
275impl_syscall!(
277 sys_renameat2,
278 renameat2,
279 (i32, *const c_char, i32, *const c_char, u32)
280);
281
282impl_syscall!(sys_umount2, umount2, (*const c_char, i32));
284impl_syscall!(
285 sys_mount,
286 mount,
287 (
288 *const c_char,
289 *const c_char,
290 *const c_char,
291 u64,
292 *const c_void
293 )
294);
295
296impl_syscall!(sys_getrandom, getrandom, (*mut c_void, SizeT, c_uint));
298
299impl_syscall!(sys_getifaddrs, getifaddrs, (*mut *mut u8));
301impl_syscall!(sys_freeifaddrs, freeifaddrs, (*mut u8));
302
303impl_syscall!(sys_send, send, (i32, *const u8, usize, i32));
305impl_syscall!(sys_recv, recv, (i32, *mut u8, usize, i32));
306impl_syscall!(sys_seteuid, seteuid, (u32));
307impl_syscall!(sys_setegid, setegid, (u32));