1pub const RUSAGE_INFO_V0: libc::c_int = 0;
2pub const RUSAGE_INFO_V1: libc::c_int = 1;
3pub const RUSAGE_INFO_V2: libc::c_int = 2;
4pub const RUSAGE_INFO_V3: libc::c_int = 3;
5pub const RUSAGE_INFO_V4: libc::c_int = 4;
6pub const RUSAGE_INFO_CURRENT: libc::c_int = RUSAGE_INFO_V4;
7
8#[repr(C)]
9#[derive(Debug, Clone)]
10pub struct rusage_info_v0 {
11 pub ri_uuid: [u8; 16],
12 pub ri_user_time: u64,
13 pub ri_system_time: u64,
14 pub ri_pkg_idle_wkups: u64,
15 pub ri_interrupt_wkups: u64,
16 pub ri_pageins: u64,
17 pub ri_wired_size: u64,
18 pub ri_resident_size: u64,
19 pub ri_phys_footprint: u64,
20 pub ri_proc_start_abstime: u64,
21 pub ri_proc_exit_abstime: u64,
22}
23
24#[repr(C)]
25#[derive(Debug, Clone)]
26pub struct rusage_info_v1 {
27 pub ri_uuid: [u8; 16],
28 pub ri_user_time: u64,
29 pub ri_system_time: u64,
30 pub ri_pkg_idle_wkups: u64,
31 pub ri_interrupt_wkups: u64,
32 pub ri_pageins: u64,
33 pub ri_wired_size: u64,
34 pub ri_resident_size: u64,
35 pub ri_phys_footprint: u64,
36 pub ri_proc_start_abstime: u64,
37 pub ri_proc_exit_abstime: u64,
38 pub ri_child_user_time: u64,
39 pub ri_child_system_time: u64,
40 pub ri_child_pkg_idle_wkups: u64,
41 pub ri_child_interrupt_wkups: u64,
42 pub ri_child_pageins: u64,
43 pub ri_child_elapsed_abstime: u64,
44}
45
46#[repr(C)]
47#[derive(Debug, Clone)]
48pub struct rusage_info_v2 {
49 pub ri_uuid: [u8; 16],
50 pub ri_user_time: u64,
51 pub ri_system_time: u64,
52 pub ri_pkg_idle_wkups: u64,
53 pub ri_interrupt_wkups: u64,
54 pub ri_pageins: u64,
55 pub ri_wired_size: u64,
56 pub ri_resident_size: u64,
57 pub ri_phys_footprint: u64,
58 pub ri_proc_start_abstime: u64,
59 pub ri_proc_exit_abstime: u64,
60 pub ri_child_user_time: u64,
61 pub ri_child_system_time: u64,
62 pub ri_child_pkg_idle_wkups: u64,
63 pub ri_child_interrupt_wkups: u64,
64 pub ri_child_pageins: u64,
65 pub ri_child_elapsed_abstime: u64,
66 pub ri_diskio_bytesread: u64,
67 pub ri_diskio_byteswritten: u64,
68}
69
70#[repr(C)]
71#[derive(Debug, Clone)]
72pub struct rusage_info_v3 {
73 pub ri_uuid: [u8; 16],
74 pub ri_user_time: u64,
75 pub ri_system_time: u64,
76 pub ri_pkg_idle_wkups: u64,
77 pub ri_interrupt_wkups: u64,
78 pub ri_pageins: u64,
79 pub ri_wired_size: u64,
80 pub ri_resident_size: u64,
81 pub ri_phys_footprint: u64,
82 pub ri_proc_start_abstime: u64,
83 pub ri_proc_exit_abstime: u64,
84 pub ri_child_user_time: u64,
85 pub ri_child_system_time: u64,
86 pub ri_child_pkg_idle_wkups: u64,
87 pub ri_child_interrupt_wkups: u64,
88 pub ri_child_pageins: u64,
89 pub ri_child_elapsed_abstime: u64,
90 pub ri_diskio_bytesread: u64,
91 pub ri_diskio_byteswritten: u64,
92 pub ri_cpu_time_qos_default: u64,
93 pub ri_cpu_time_qos_maintenance: u64,
94 pub ri_cpu_time_qos_background: u64,
95 pub ri_cpu_time_qos_utility: u64,
96 pub ri_cpu_time_qos_legacy: u64,
97 pub ri_cpu_time_qos_user_initiated: u64,
98 pub ri_cpu_time_qos_user_interactive: u64,
99 pub ri_billed_system_time: u64,
100 pub ri_serviced_system_time: u64,
101}
102
103#[repr(C)]
104#[derive(Debug, Clone)]
105pub struct rusage_info_v4 {
106 pub ri_uuid: [u8; 16],
107 pub ri_user_time: u64,
108 pub ri_system_time: u64,
109 pub ri_pkg_idle_wkups: u64,
110 pub ri_interrupt_wkups: u64,
111 pub ri_pageins: u64,
112 pub ri_wired_size: u64,
113 pub ri_resident_size: u64,
114 pub ri_phys_footprint: u64,
115 pub ri_proc_start_abstime: u64,
116 pub ri_proc_exit_abstime: u64,
117 pub ri_child_user_time: u64,
118 pub ri_child_system_time: u64,
119 pub ri_child_pkg_idle_wkups: u64,
120 pub ri_child_interrupt_wkups: u64,
121 pub ri_child_pageins: u64,
122 pub ri_child_elapsed_abstime: u64,
123 pub ri_diskio_bytesread: u64,
124 pub ri_diskio_byteswritten: u64,
125 pub ri_cpu_time_qos_default: u64,
126 pub ri_cpu_time_qos_maintenance: u64,
127 pub ri_cpu_time_qos_background: u64,
128 pub ri_cpu_time_qos_utility: u64,
129 pub ri_cpu_time_qos_legacy: u64,
130 pub ri_cpu_time_qos_user_initiated: u64,
131 pub ri_cpu_time_qos_user_interactive: u64,
132 pub ri_billed_system_time: u64,
133 pub ri_serviced_system_time: u64,
134 pub ri_logical_writes: u64,
135 pub ri_lifetime_max_phys_footprint: u64,
136 pub ri_instructions: u64,
137 pub ri_cycles: u64,
138 pub ri_billed_energy: u64,
139 pub ri_serviced_energy: u64,
140 pub ri_interval_max_phys_footprint: u64,
141 pub ri_runnable_time: u64,
142}
143
144pub type rusage_info_current = rusage_info_v4;
145pub type rusage_info_t = *mut libc::c_void;
146
147extern "C" {
148 pub fn proc_pid_rusage(
149 pid: libc::pid_t,
150 flavor: libc::c_int,
151 buffer: rusage_info_t,
152 ) -> libc::c_int;
153}