MCPcopy Create free account
hub / github.com/Starry-OS/StarryOS / handle_syscall

Function handle_syscall

api/src/syscall/mod.rs:22–634  ·  view source on GitHub ↗
(uctx: &mut UserContext)

Source from the content-addressed store, hash-verified

20};
21
22pub fn handle_syscall(uctx: &mut UserContext) {
23 let Some(sysno) = Sysno::new(uctx.sysno()) else {
24 warn!("Invalid syscall number: {}", uctx.sysno());
25 uctx.set_retval(-LinuxError::ENOSYS.code() as _);
26 return;
27 };
28
29 trace!("Syscall {sysno:?}");
30
31 let result = match sysno {
32 // fs ctl
33 Sysno::ioctl => sys_ioctl(uctx.arg0() as _, uctx.arg1() as _, uctx.arg2() as _),
34 Sysno::chdir => sys_chdir(uctx.arg0() as _),
35 Sysno::fchdir => sys_fchdir(uctx.arg0() as _),
36 Sysno::chroot => sys_chroot(uctx.arg0() as _),
37 #[cfg(target_arch = "x86_64")]
38 Sysno::mkdir => sys_mkdir(uctx.arg0() as _, uctx.arg1() as _),
39 Sysno::mkdirat => sys_mkdirat(uctx.arg0() as _, uctx.arg1() as _, uctx.arg2() as _),
40 Sysno::getdents64 => sys_getdents64(uctx.arg0() as _, uctx.arg1() as _, uctx.arg2() as _),
41 #[cfg(target_arch = "x86_64")]
42 Sysno::link => sys_link(uctx.arg0() as _, uctx.arg1() as _),
43 Sysno::linkat => sys_linkat(
44 uctx.arg0() as _,
45 uctx.arg1() as _,
46 uctx.arg2() as _,
47 uctx.arg3() as _,
48 uctx.arg4() as _,
49 ),
50 #[cfg(target_arch = "x86_64")]
51 Sysno::rmdir => sys_rmdir(uctx.arg0() as _),
52 #[cfg(target_arch = "x86_64")]
53 Sysno::unlink => sys_unlink(uctx.arg0() as _),
54 Sysno::unlinkat => sys_unlinkat(uctx.arg0() as _, uctx.arg1() as _, uctx.arg2() as _),
55 Sysno::getcwd => sys_getcwd(uctx.arg0() as _, uctx.arg1() as _),
56 #[cfg(target_arch = "x86_64")]
57 Sysno::symlink => sys_symlink(uctx.arg0() as _, uctx.arg1() as _),
58 Sysno::symlinkat => sys_symlinkat(uctx.arg0() as _, uctx.arg1() as _, uctx.arg2() as _),
59 #[cfg(target_arch = "x86_64")]
60 Sysno::rename => sys_rename(uctx.arg0() as _, uctx.arg1() as _),
61 Sysno::renameat => sys_renameat(
62 uctx.arg0() as _,
63 uctx.arg1() as _,
64 uctx.arg2() as _,
65 uctx.arg3() as _,
66 ),
67 Sysno::renameat2 => sys_renameat2(
68 uctx.arg0() as _,
69 uctx.arg1() as _,
70 uctx.arg2() as _,
71 uctx.arg3() as _,
72 uctx.arg4() as _,
73 ),
74 Sysno::sync => sys_sync(),
75 Sysno::syncfs => sys_syncfs(uctx.arg0() as _),
76
77 // file ops
78 #[cfg(target_arch = "x86_64")]
79 Sysno::chown => sys_chown(uctx.arg0() as _, uctx.arg1() as _, uctx.arg2() as _),

Callers 1

new_user_taskFunction · 0.85

Calls 15

sys_ioctlFunction · 0.85
sys_chdirFunction · 0.85
sys_fchdirFunction · 0.85
sys_chrootFunction · 0.85
sys_mkdirFunction · 0.85
sys_mkdiratFunction · 0.85
sys_getdents64Function · 0.85
sys_linkFunction · 0.85
sys_linkatFunction · 0.85
sys_rmdirFunction · 0.85
sys_unlinkFunction · 0.85
sys_unlinkatFunction · 0.85

Tested by

no test coverage detected