Add syscall getrlimit and setrlimit support

This commit is contained in:
Zheng, Qi 2022-12-21 14:15:08 +08:00 committed by volcano
parent ab14a3e479
commit d34d54a821

@ -190,7 +190,7 @@ macro_rules! process_syscall_table_with_callback {
(Lchown = 94) => do_lchown(path: *const i8, uid: u32, gid: u32),
(Umask = 95) => do_umask(mask: u16),
(Gettimeofday = 96) => do_gettimeofday(tv_u: *mut timeval_t),
(Getrlimit = 97) => handle_unsupported(),
(Getrlimit = 97) => do_gettrlimit(resource: u32, rlim: *mut rlimit_t),
(Getrusage = 98) => handle_unsupported(),
(SysInfo = 99) => do_sysinfo(info: *mut sysinfo_t),
(Times = 100) => handle_unsupported(),
@ -253,7 +253,7 @@ macro_rules! process_syscall_table_with_callback {
(Prctl = 157) => do_prctl(option: i32, arg2: u64, arg3: u64, arg4: u64, arg5: u64),
(ArchPrctl = 158) => do_arch_prctl(code: u32, addr: *mut usize),
(Adjtimex = 159) => handle_unsupported(),
(Setrlimit = 160) => handle_unsupported(),
(Setrlimit = 160) => do_settrlimit(resource: u32, rlim: *const rlimit_t),
(Chroot = 161) => handle_unsupported(),
(Sync = 162) => do_sync(),
(Acct = 163) => handle_unsupported(),
@ -935,6 +935,14 @@ fn do_uname(name: *mut utsname_t) -> Result<isize> {
misc::do_uname(name).map(|_| 0)
}
fn do_gettrlimit(resource: u32, rlim: *mut rlimit_t) -> Result<isize> {
do_prlimit(0, resource, ptr::null(), rlim)
}
fn do_settrlimit(resource: u32, rlim: *const rlimit_t) -> Result<isize> {
do_prlimit(0, resource, rlim, ptr::null_mut())
}
fn do_prlimit(
pid: pid_t,
resource: u32,