xref: /relibc/src/header/sys_resource/mod.rs (revision a2f2484e4559206922b0fcc16217598a6867c8a2)
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