diff --git a/src/header/sys_resource/mod.rs b/src/header/sys_resource/mod.rs index 6bd21605dc..743e058cf5 100644 --- a/src/header/sys_resource/mod.rs +++ b/src/header/sys_resource/mod.rs @@ -71,6 +71,10 @@ pub unsafe extern "C" fn getrlimit(resource: c_int, rlp: *mut rlimit) -> c_int { Sys::getrlimit(resource, rlp) } +#[no_mangle] +pub unsafe extern "C" fn setrlimit(resource: c_int, rlp: *const rlimit) -> c_int { + Sys::setrlimit(rsource, rlp) +} // #[no_mangle] // pub unsafe extern "C" fn getrusage(who: c_int, r_usage: *mut rusage) -> c_int { // // Sys::getrusage(who, r_usage) @@ -82,7 +86,3 @@ pub unsafe extern "C" fn getrlimit(resource: c_int, rlp: *mut rlimit) -> c_int { // unimplemented!(); // } // -// #[no_mangle] -// pub unsafe extern "C" fn setrlimit(resource: c_int, rlp: *const rlimit) -> c_int { -// unimplemented!(); -// } diff --git a/src/platform/linux/mod.rs b/src/platform/linux/mod.rs index 1fd7f722c8..5bcc1032a8 100644 --- a/src/platform/linux/mod.rs +++ b/src/platform/linux/mod.rs @@ -267,6 +267,10 @@ impl Pal for Sys { e(syscall!(GETRLIMIT, resource, rlim)) as c_int } + unsafe fn setrlimit(resource: c_int, rlimit: *const rlimit) -> c_int { + e(syscall!(SETRLIMIT, resource, rlim)) as c_int + } + fn getsid(pid: pid_t) -> pid_t { e(unsafe { syscall!(GETSID, pid) }) as pid_t } diff --git a/src/platform/pal/mod.rs b/src/platform/pal/mod.rs index 0aec5db29e..485ba0a1a7 100644 --- a/src/platform/pal/mod.rs +++ b/src/platform/pal/mod.rs @@ -100,6 +100,8 @@ pub trait Pal { unsafe fn getrlimit(resource: c_int, rlim: *mut rlimit) -> c_int; + unsafe fn setrlimit(resource: c_int, rlim: *const rlimit) -> c_int; + fn getsid(pid: pid_t) -> pid_t; fn gettid() -> pid_t; diff --git a/src/platform/redox/mod.rs b/src/platform/redox/mod.rs index 58d07df901..90fa2ff2e6 100644 --- a/src/platform/redox/mod.rs +++ b/src/platform/redox/mod.rs @@ -535,6 +535,11 @@ impl Pal for Sys { 0 } + unsafe fn setrlimit(resource: c_int, rlim: *const rlimit) -> c_int { + unsafe { errno = EPERM }; + -1 + } + fn getsid(pid: pid_t) -> pid_t { //TODO unsafe { errno = ENOSYS };