1 //! sys/resource.h implementation for Redox, following 2 //! http://pubs.opengroup.org/onlinepubs/7908799/xsh/sysresource.h.html 3 4 use crate::{ 5 header::sys_time::timeval, 6 platform::{types::*, Pal, Sys}, 7 }; 8 9 // Exported in bits file 10 // const RUSAGE_SELF: c_int = 0; 11 // const RUSAGE_CHILDREN: c_int = -1; 12 // const RUSAGE_BOTH: c_int = -2; 13 // const RUSAGE_THREAD: c_int = 1; 14 15 pub const RLIM_INFINITY: u64 = 0xFFFF_FFFF_FFFF_FFFF; 16 pub const RLIM_SAVED_CUR: u64 = RLIM_INFINITY; 17 pub const RLIM_SAVED_MAX: u64 = RLIM_INFINITY; 18 19 pub const RLIMIT_CPU: u64 = 0; 20 pub const RLIMIT_FSIZE: u64 = 1; 21 pub const RLIMIT_DATA: u64 = 2; 22 pub const RLIMIT_STACK: u64 = 3; 23 pub const RLIMIT_CORE: u64 = 4; 24 pub const RLIMIT_RSS: u64 = 5; 25 pub const RLIMIT_NPROC: u64 = 6; 26 pub const RLIMIT_NOFILE: u64 = 7; 27 pub const RLIMIT_MEMLOCK: u64 = 8; 28 pub const RLIMIT_AS: u64 = 9; 29 pub const RLIMIT_LOCKS: u64 = 10; 30 pub const RLIMIT_SIGPENDING: u64 = 11; 31 pub const RLIMIT_MSGQUEUE: u64 = 12; 32 pub const RLIMIT_NICE: u64 = 13; 33 pub const RLIMIT_RTPRIO: u64 = 14; 34 pub const RLIMIT_NLIMITS: u64 = 15; 35 36 pub type rlim_t = u64; 37 38 #[repr(C)] 39 pub struct rlimit { 40 pub rlim_cur: rlim_t, 41 pub rlim_max: rlim_t, 42 } 43 44 #[repr(C)] 45 pub struct rusage { 46 pub ru_utime: timeval, 47 pub ru_stime: timeval, 48 pub ru_maxrss: c_long, 49 pub ru_ixrss: c_long, 50 pub ru_idrss: c_long, 51 pub ru_isrss: c_long, 52 pub ru_minflt: c_long, 53 pub ru_majflt: c_long, 54 pub ru_nswap: c_long, 55 pub ru_inblock: c_long, 56 pub ru_oublock: c_long, 57 pub ru_msgsnd: c_long, 58 pub ru_msgrcv: c_long, 59 pub ru_nsignals: c_long, 60 pub ru_nvcsw: c_long, 61 pub ru_nivcsw: c_long, 62 } 63 64 // #[no_mangle] 65 // pub unsafe extern "C" fn getpriority(which: c_int, who: id_t) -> c_int { 66 // unimplemented!(); 67 // } 68 69 #[no_mangle] 70 pub unsafe extern "C" fn getrlimit(resource: c_int, rlp: *mut rlimit) -> c_int { 71 Sys::getrlimit(resource, rlp) 72 } 73 74 // #[no_mangle] 75 // pub unsafe extern "C" fn getrusage(who: c_int, r_usage: *mut rusage) -> c_int { 76 // // Sys::getrusage(who, r_usage) 77 // unimplemented!(); 78 // } 79 // 80 // #[no_mangle] 81 // pub unsafe extern "C" fn setpriority(which: c_int, who: id_t, nice: c_int) -> c_int { 82 // unimplemented!(); 83 // } 84 // 85 // #[no_mangle] 86 // pub unsafe extern "C" fn setrlimit(resource: c_int, rlp: *const rlimit) -> c_int { 87 // unimplemented!(); 88 // } 89