mirror of
https://github.com/hexagonal-sun/moss-kernel.git
synced 2026-05-18 22:03:49 -04:00
@@ -156,8 +156,8 @@
|
||||
| 0x99 (153) | times | (struct tms *tbuf) | __arm64_sys_times | false |
|
||||
| 0x9a (154) | setpgid | (pid_t pid, pid_t pgid) | __arm64_sys_setpgid | true |
|
||||
| 0x9b (155) | getpgid | (pid_t pid) | __arm64_sys_getpgid | true |
|
||||
| 0x9c (156) | getsid | (pid_t pid) | __arm64_sys_getsid | false |
|
||||
| 0x9d (157) | setsid | () | __arm64_sys_setsid | false |
|
||||
| 0x9c (156) | getsid | (pid_t pid) | __arm64_sys_getsid | true |
|
||||
| 0x9d (157) | setsid | () | __arm64_sys_setsid | true |
|
||||
| 0x9e (158) | getgroups | (int gidsetsize, gid_t *grouplist) | __arm64_sys_getgroups | false |
|
||||
| 0x9f (159) | setgroups | (int gidsetsize, gid_t *grouplist) | __arm64_sys_setgroups | false |
|
||||
| 0xa0 (160) | newuname | (struct new_utsname *name) | __arm64_sys_newuname | true |
|
||||
|
||||
@@ -53,8 +53,8 @@ use crate::{
|
||||
caps::{sys_capget, sys_capset},
|
||||
clone::sys_clone,
|
||||
creds::{
|
||||
sys_getegid, sys_geteuid, sys_getgid, sys_getresgid, sys_getresuid, sys_gettid,
|
||||
sys_getuid, sys_setfsgid, sys_setfsuid,
|
||||
sys_getegid, sys_geteuid, sys_getgid, sys_getresgid, sys_getresuid, sys_getsid,
|
||||
sys_gettid, sys_getuid, sys_setfsgid, sys_setfsuid, sys_setsid,
|
||||
},
|
||||
exec::sys_execve,
|
||||
exit::{sys_exit, sys_exit_group},
|
||||
@@ -471,6 +471,8 @@ pub async fn handle_syscall() {
|
||||
0x98 => sys_setfsgid(arg1 as _).map_err(|e| match e {}),
|
||||
0x9a => sys_setpgid(arg1 as _, Pgid(arg2 as _)),
|
||||
0x9b => sys_getpgid(arg1 as _),
|
||||
0x9c => sys_getsid().await,
|
||||
0x9d => sys_setsid().await,
|
||||
0xa0 => sys_uname(TUA::from_value(arg1 as _)).await,
|
||||
0xa3 => Err(KernelError::InvalidValue),
|
||||
0xa6 => sys_umask(arg1 as _).map_err(|e| match e {}),
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
use core::convert::Infallible;
|
||||
|
||||
use crate::process::thread_group::Sid;
|
||||
use crate::{
|
||||
memory::uaccess::{UserCopyable, copy_to_user},
|
||||
sched::current::current_task,
|
||||
@@ -128,3 +129,18 @@ pub async fn sys_getresgid(rgid: TUA<Gid>, egid: TUA<Gid>, sgid: TUA<Gid>) -> Re
|
||||
|
||||
Ok(0)
|
||||
}
|
||||
|
||||
pub async fn sys_getsid() -> Result<usize> {
|
||||
let sid: u32 = current_task().process.sid.lock_save_irq().value();
|
||||
|
||||
Ok(sid as _)
|
||||
}
|
||||
|
||||
pub async fn sys_setsid() -> Result<usize> {
|
||||
let process = current_task().process.clone();
|
||||
|
||||
let new_sid = process.tgid.value();
|
||||
*process.sid.lock_save_irq() = Sid(new_sid);
|
||||
|
||||
Ok(new_sid as _)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user