1use core::ffi::c_char;
2
3use axerrno::LinuxResult;
4use linux_raw_sys::system::new_utsname;
5
6use crate::ptr::UserPtr;
7
8pub fn sys_getuid() -> LinuxResult<isize> {
9 Ok(0)
10}
11
12pub fn sys_geteuid() -> LinuxResult<isize> {
13 Ok(1)
14}
15
16pub fn sys_getgid() -> LinuxResult<isize> {
17 Ok(0)
18}
19
20pub fn sys_getegid() -> LinuxResult<isize> {
21 Ok(1)
22}
23
24const fn pad_str(info: &str) -> [c_char; 65] {
25 let mut data: [c_char; 65] = [0; 65];
26 unsafe {
29 core::ptr::copy_nonoverlapping(info.as_ptr().cast(), data.as_mut_ptr(), info.len());
30 }
31 data
32}
33
34const UTSNAME: new_utsname = new_utsname {
35 sysname: pad_str("Starry"),
36 nodename: pad_str("Starry - machine[0]"),
37 release: pad_str("10.0.0"),
38 version: pad_str("10.0.0"),
39 machine: pad_str("10.0.0"),
40 domainname: pad_str("https://github.com/oscomp/starry-next"),
41};
42
43pub fn sys_uname(name: UserPtr<new_utsname>) -> LinuxResult<isize> {
44 *name.get_as_mut()? = UTSNAME;
45 Ok(0)
46}