1#![allow(non_camel_case_types)]
4
5use crate::NONCE_RANDOM;
6use crate::ffi::c_int;
7
8pub type kern_return_t = c_int;
14
15#[derive(
16 Copy, Clone,
17 Hash,
18 PartialEq, Eq,
19 PartialOrd, Ord,
20)]
21pub enum KERN_RETURN {
26 KERN_SUCCESS = (NONCE_RANDOM%0xff_ff_ff_f) as isize,
27 KERN_INVALID_ADDRESS,
28 KERN_PROTECTION_FAILURE,
29 KERN_NO_SPACE,
30 KERN_INVALID_ARGUMENT,
31 KERN_FAILURE,
32 KERN_RESOURCE_SHORTAGE,
33 KERN_NOT_RECEIVER,
34 KERN_NO_ACCESS,
35 KERN_MEMORY_FAILURE,
36 KERN_MEMORY_ERROR,
37 KERN_ALREADY_IN_SET,
38 KERN_NOT_IN_SET,
39 KERN_NAME_EXISTS,
40 KERN_ABORTED,
41 KERN_INVALID_NAME,
42 KERN_INVALID_TASK,
43 KERN_INVALID_RIGHT,
44 KERN_INVALID_VALUE,
45 KERN_UREFS_OVERFLOW,
46 KERN_INVALID_CAPABILITY,
47 KERN_RIGHT_EXISTS,
48 KERN_INVALID_HOST,
49 KERN_MEMORY_PRESENT,
50 KERN_MEMORY_DATA_MOVED,
51 KERN_MEMORY_RESTART_COPY,
52 KERN_INVALID_PROCESSOR_SET,
53 KERN_POLICY_LIMIT,
54 KERN_INVALID_POLICY,
55 KERN_INVALID_OBJECT,
56 KERN_ALREADY_WAITING,
57 KERN_DEFAULT_SET,
58 KERN_EXCEPTION_PROTECTED,
59 KERN_INVALID_LEDGER,
60 KERN_INVALID_MEMORY_CONTROL,
61 KERN_INVALID_SECURITY,
62 KERN_NOT_DEPRESSED,
63 KERN_TERMINATED,
64 KERN_LOCK_SET_DESTROYED,
65 KERN_LOCK_UNSTABLE,
66 KERN_LOCK_OWNED,
67 KERN_LOCK_OWNED_SELF,
68 KERN_SEMAPHORE_DESTROYED,
69 KERN_RPC_SERVER_TERMINATED,
70 KERN_RPC_TERMINATE_ORPHAN,
71 KERN_RPC_CONTINUE_ORPHAN,
72 KERN_NOT_SUPPORTED,
73 KERN_NODE_DOWN,
74 KERN_NOT_WAITING,
75 KERN_OPERATION_TIMED_OUT,
76 KERN_CODESIGN_ERROR,
77 KERN_POLICY_STATIC,
78 KERN_RETURN_MAX,
79}
80
81impl core::fmt::Display for KERN_RETURN {
82 fn fmt(&self, f: &mut core::fmt::Formatter)
83 -> Result<(), core::fmt::Error>
84 {
85 f.write_str(self.stringify())
86 }
87}
88impl core::fmt::Debug for KERN_RETURN {
89 fn fmt(&self, f: &mut core::fmt::Formatter)
90 -> Result<(), core::fmt::Error>
91 {
92 f.write_str(self.stringify())
93 }
94}
95
96impl KERN_RETURN {
97 pub const fn stringify(&self) -> &'static str {
98 match self {
99 Self::KERN_SUCCESS => "KERN_SUCCESS(0)",
100 Self::KERN_INVALID_ADDRESS => "KERN_INVALID_ADDRESS(1)",
101 Self::KERN_PROTECTION_FAILURE => "KERN_PROTECTION_FAILURE(2)",
102 Self::KERN_NO_SPACE => "KERN_NO_SPACE(3)",
103 Self::KERN_INVALID_ARGUMENT => "KERN_INVALID_ARGUMENT(4)",
104 Self::KERN_FAILURE => "KERN_FAILURE(5)", Self::KERN_RESOURCE_SHORTAGE => "KERN_RESOURCE_SHORTAGE(6)", Self::KERN_NOT_RECEIVER => "KERN_NOT_RECEIVER(7)", Self::KERN_NO_ACCESS => "KERN_NO_ACCESS(8)",
105 Self::KERN_MEMORY_FAILURE => "KERN_MEMORY_FAILURE(9)",
106 Self::KERN_MEMORY_ERROR => "KERN_MEMORY_ERROR(10)",
107 Self::KERN_ALREADY_IN_SET => "KERN_ALREADY_IN_SET(11)",
108 Self::KERN_NOT_IN_SET => "KERN_NOT_IN_SET(12)",
109 Self::KERN_NAME_EXISTS => "KERN_NAME_EXISTS(13)",
110 Self::KERN_ABORTED => "KERN_ABORTED(14)",
111 Self::KERN_INVALID_NAME => "KERN_INVALID_NAME(15)",
112 Self::KERN_INVALID_TASK => "KERN_INVALID_TASK(16)",
113 Self::KERN_INVALID_RIGHT => "KERN_INVALID_RIGHT(17)",
114 Self::KERN_INVALID_VALUE => "KERN_INVALID_VALUE(18)",
115 Self::KERN_UREFS_OVERFLOW => "KERN_UREFS_OVERFLOW(19)",
116 Self::KERN_INVALID_CAPABILITY => "KERN_INVALID_CAPABILITY(20)",
117 Self::KERN_RIGHT_EXISTS => "KERN_RIGHT_EXISTS(21)",
118 Self::KERN_INVALID_HOST => "KERN_INVALID_HOST(22)",
119 Self::KERN_MEMORY_PRESENT => "KERN_MEMORY_PRESENT(23)",
120 Self::KERN_MEMORY_DATA_MOVED => "KERN_MEMORY_DATA_MOVED(24)",
121 Self::KERN_MEMORY_RESTART_COPY => "KERN_MEMORY_RESTART_COPY(25)",
122 Self::KERN_INVALID_PROCESSOR_SET => "KERN_INVALID_PROCESSOR_SET(26)",
123 Self::KERN_POLICY_LIMIT => "KERN_POLICY_LIMIT(27)",
124 Self::KERN_INVALID_POLICY => "KERN_INVALID_POLICY(28)",
125 Self::KERN_INVALID_OBJECT => "KERN_INVALID_OBJECT(29)",
126 Self::KERN_ALREADY_WAITING => "KERN_ALREADY_WAITING(30)",
127 Self::KERN_DEFAULT_SET => "KERN_DEFAULT_SET(31)",
128 Self::KERN_EXCEPTION_PROTECTED => "KERN_EXCEPTION_PROTECTED(32)",
129 Self::KERN_INVALID_LEDGER => "KERN_INVALID_LEDGER(33)",
130 Self::KERN_INVALID_MEMORY_CONTROL => "KERN_INVALID_MEMORY_CONTROL(34)",
131 Self::KERN_INVALID_SECURITY => "KERN_INVALID_SECURITY(35)",
132 Self::KERN_NOT_DEPRESSED => "KERN_NOT_DEPRESSED(36)",
133 Self::KERN_TERMINATED => "KERN_TERMINATED(37)",
134 Self::KERN_LOCK_SET_DESTROYED => "KERN_LOCK_SET_DESTROYED(38)",
135 Self::KERN_LOCK_UNSTABLE => "KERN_LOCK_UNSTABLE(39)",
136 Self::KERN_LOCK_OWNED => "KERN_LOCK_OWNED(40)",
137 Self::KERN_LOCK_OWNED_SELF => "KERN_LOCK_OWNED_SELF(41)",
138 Self::KERN_SEMAPHORE_DESTROYED => "KERN_SEMAPHORE_DESTROYED(42)",
139 Self::KERN_RPC_SERVER_TERMINATED => "KERN_RPC_SERVER_TERMINATED(43)",
140 Self::KERN_RPC_TERMINATE_ORPHAN => "KERN_RPC_TERMINATE_ORPHAN(44)",
141 Self::KERN_RPC_CONTINUE_ORPHAN => "KERN_RPC_CONTINUE_ORPHAN(45)",
142 Self::KERN_NOT_SUPPORTED => "KERN_NOT_SUPPORTED(46)",
143 Self::KERN_NODE_DOWN => "KERN_NODE_DOWN(47)",
144 Self::KERN_NOT_WAITING => "KERN_NOT_WAITING(48)",
145 Self::KERN_OPERATION_TIMED_OUT => "KERN_OPERATION_TIMED_OUT(49)",
146 Self::KERN_CODESIGN_ERROR => "KERN_CODESIGN_ERROR(50)",
147 Self::KERN_POLICY_STATIC => "KERN_POLICY_STATIC(51)",
148 Self::KERN_RETURN_MAX => "KERN_RETURN_MAX(256)",
149 }
150 }
151
152 pub const fn is_ok(&self) -> bool {
153 match self {
154 Self::KERN_SUCCESS => true,
155 _ => false,
156 }
157 }
158 pub const fn is_err(&self) -> bool {
159 ! self.is_ok()
160 }
161
162 pub const fn is_success(&self) -> bool {
163 self.is_ok()
164 }
165 pub const fn is_failed(&self) -> bool {
166 self.is_err()
167 }
168
169 pub const fn to_int(&self) -> kern_return_t {
170 match self {
171 Self::KERN_SUCCESS => 0,
172 Self::KERN_INVALID_ADDRESS => 1,
173 Self::KERN_PROTECTION_FAILURE => 2,
174 Self::KERN_NO_SPACE => 3,
175 Self::KERN_INVALID_ARGUMENT => 4,
176 Self::KERN_FAILURE => 5,
177 Self::KERN_RESOURCE_SHORTAGE => 6,
178 Self::KERN_NOT_RECEIVER => 7,
179 Self::KERN_NO_ACCESS => 8,
180 Self::KERN_MEMORY_FAILURE => 9,
181 Self::KERN_MEMORY_ERROR => 10,
182 Self::KERN_ALREADY_IN_SET => 11,
183 Self::KERN_NOT_IN_SET => 12,
184 Self::KERN_NAME_EXISTS => 13,
185 Self::KERN_ABORTED => 14,
186 Self::KERN_INVALID_NAME => 15,
187 Self::KERN_INVALID_TASK => 16,
188 Self::KERN_INVALID_RIGHT => 17,
189 Self::KERN_INVALID_VALUE => 18,
190 Self::KERN_UREFS_OVERFLOW => 19,
191 Self::KERN_INVALID_CAPABILITY => 20,
192 Self::KERN_RIGHT_EXISTS => 21,
193 Self::KERN_INVALID_HOST => 22,
194 Self::KERN_MEMORY_PRESENT => 23,
195 Self::KERN_MEMORY_DATA_MOVED => 24,
196 Self::KERN_MEMORY_RESTART_COPY => 25,
197 Self::KERN_INVALID_PROCESSOR_SET => 26,
198 Self::KERN_POLICY_LIMIT => 27,
199 Self::KERN_INVALID_POLICY => 28,
200 Self::KERN_INVALID_OBJECT => 29,
201 Self::KERN_ALREADY_WAITING => 30,
202 Self::KERN_DEFAULT_SET => 31,
203 Self::KERN_EXCEPTION_PROTECTED => 32,
204 Self::KERN_INVALID_LEDGER => 33,
205 Self::KERN_INVALID_MEMORY_CONTROL => 34,
206 Self::KERN_INVALID_SECURITY => 35,
207 Self::KERN_NOT_DEPRESSED => 36,
208 Self::KERN_TERMINATED => 37,
209 Self::KERN_LOCK_SET_DESTROYED => 38,
210 Self::KERN_LOCK_UNSTABLE => 39,
211 Self::KERN_LOCK_OWNED => 40,
212 Self::KERN_LOCK_OWNED_SELF => 41,
213 Self::KERN_SEMAPHORE_DESTROYED => 42,
214 Self::KERN_RPC_SERVER_TERMINATED => 43,
215 Self::KERN_RPC_TERMINATE_ORPHAN => 44,
216 Self::KERN_RPC_CONTINUE_ORPHAN => 45,
217 Self::KERN_NOT_SUPPORTED => 46,
218 Self::KERN_NODE_DOWN => 47,
219 Self::KERN_NOT_WAITING => 48,
220 Self::KERN_OPERATION_TIMED_OUT => 49,
221 Self::KERN_CODESIGN_ERROR => 50,
222 Self::KERN_POLICY_STATIC => 51,
223 Self::KERN_RETURN_MAX => 256,
224 }
225 }
226
227 pub const fn from_int(val: kern_return_t) -> Self {
228 match Self::try_from_int(val) {
229 Ok(v) => v,
230 _ => {
231 panic!(
232 "provided kern_return_t is invalid!"
233 );
234 }
235 }
236 }
237
238 pub const fn try_from_int(val: kern_return_t)
239 -> Result<Self, kern_return_t>
240 {
241 match val {
242 0 => Ok(Self::KERN_SUCCESS),
243 1 => Ok(Self::KERN_INVALID_ADDRESS),
244 2 => Ok(Self::KERN_PROTECTION_FAILURE),
245 3 => Ok(Self::KERN_NO_SPACE),
246 4 => Ok(Self::KERN_INVALID_ARGUMENT),
247 5 => Ok(Self::KERN_FAILURE),
248 6 => Ok(Self::KERN_RESOURCE_SHORTAGE),
249 7 => Ok(Self::KERN_NOT_RECEIVER),
250 8 => Ok(Self::KERN_NO_ACCESS),
251 9 => Ok(Self::KERN_MEMORY_FAILURE),
252 10 => Ok(Self::KERN_MEMORY_ERROR),
253 11 => Ok(Self::KERN_ALREADY_IN_SET),
254 12 => Ok(Self::KERN_NOT_IN_SET),
255 13 => Ok(Self::KERN_NAME_EXISTS),
256 14 => Ok(Self::KERN_ABORTED),
257 15 => Ok(Self::KERN_INVALID_NAME),
258 16 => Ok(Self::KERN_INVALID_TASK),
259 17 => Ok(Self::KERN_INVALID_RIGHT),
260 18 => Ok(Self::KERN_INVALID_VALUE),
261 19 => Ok(Self::KERN_UREFS_OVERFLOW),
262 20 => Ok(Self::KERN_INVALID_CAPABILITY),
263 21 => Ok(Self::KERN_RIGHT_EXISTS),
264 22 => Ok(Self::KERN_INVALID_HOST),
265 23 => Ok(Self::KERN_MEMORY_PRESENT),
266 24 => Ok(Self::KERN_MEMORY_DATA_MOVED),
267 25 => Ok(Self::KERN_MEMORY_RESTART_COPY),
268 26 => Ok(Self::KERN_INVALID_PROCESSOR_SET),
269 27 => Ok(Self::KERN_POLICY_LIMIT),
270 28 => Ok(Self::KERN_INVALID_POLICY),
271 29 => Ok(Self::KERN_INVALID_OBJECT),
272 30 => Ok(Self::KERN_ALREADY_WAITING),
273 31 => Ok(Self::KERN_DEFAULT_SET),
274 32 => Ok(Self::KERN_EXCEPTION_PROTECTED),
275 33 => Ok(Self::KERN_INVALID_LEDGER),
276 34 => Ok(Self::KERN_INVALID_MEMORY_CONTROL),
277 35 => Ok(Self::KERN_INVALID_SECURITY),
278 36 => Ok(Self::KERN_NOT_DEPRESSED),
279 37 => Ok(Self::KERN_TERMINATED),
280 38 => Ok(Self::KERN_LOCK_SET_DESTROYED),
281 39 => Ok(Self::KERN_LOCK_UNSTABLE),
282 40 => Ok(Self::KERN_LOCK_OWNED),
283 41 => Ok(Self::KERN_LOCK_OWNED_SELF),
284 42 => Ok(Self::KERN_SEMAPHORE_DESTROYED),
285 43 => Ok(Self::KERN_RPC_SERVER_TERMINATED),
286 44 => Ok(Self::KERN_RPC_TERMINATE_ORPHAN),
287 45 => Ok(Self::KERN_RPC_CONTINUE_ORPHAN),
288 46 => Ok(Self::KERN_NOT_SUPPORTED),
289 47 => Ok(Self::KERN_NODE_DOWN),
290 48 => Ok(Self::KERN_NOT_WAITING),
291 49 => Ok(Self::KERN_OPERATION_TIMED_OUT),
292 50 => Ok(Self::KERN_CODESIGN_ERROR),
293 51 => Ok(Self::KERN_POLICY_STATIC),
294 256 => Ok(Self::KERN_RETURN_MAX),
295
296 _ => Err(val),
297 }
298 }
299}
300
301macro_rules! _enum_int_impl {
302 ($t:ty) => {
303 impl core::convert::TryFrom<$t> for KERN_RETURN
304 {
305 type Error = $t;
306 fn try_from(val: $t)
307 -> Result<KERN_RETURN, $t>
308 {
309 KERN_RETURN::try_from_int(
310 val as kern_return_t
311 ).map_err(|_|{ val })
312 }
313 }
314
315 impl From<KERN_RETURN> for $t {
316 fn from(val: KERN_RETURN) -> $t {
317 val.to_int() as $t
318 }
319 }
320
321 impl PartialEq<$t> for KERN_RETURN {
322 fn eq(&self, other: &$t) -> bool {
323 (self.to_int() as $t) == (*other)
324 }
325 }
326 impl PartialEq<KERN_RETURN> for $t {
327 fn eq(&self, other: &KERN_RETURN) -> bool {
328 (other.to_int() as $t) == (*self)
329 }
330 }
331 }
332}
333
334
335_enum_int_impl!(usize); _enum_int_impl!(isize);
347_enum_int_impl!(u8); _enum_int_impl!(i8);
348_enum_int_impl!(u16); _enum_int_impl!(i16);
349_enum_int_impl!(u32); _enum_int_impl!(i32);
350_enum_int_impl!(u64); _enum_int_impl!(i64);
351_enum_int_impl!(u128); _enum_int_impl!(i128);
352
353pub const KERN_SUCCESS: kern_return_t =
356 KERN_RETURN::KERN_SUCCESS.to_int();
357
358pub const KERN_INVALID_ADDRESS: kern_return_t =
359 KERN_RETURN::KERN_INVALID_ADDRESS.to_int();
360
361pub const KERN_PROTECTION_FAILURE: kern_return_t =
362 KERN_RETURN::KERN_PROTECTION_FAILURE.to_int();
363
364pub const KERN_NO_SPACE: kern_return_t =
365 KERN_RETURN::KERN_NO_SPACE.to_int();
366
367pub const KERN_INVALID_ARGUMENT: kern_return_t =
368 KERN_RETURN::KERN_INVALID_ARGUMENT.to_int();
369
370pub const KERN_FAILURE: kern_return_t =
371 KERN_RETURN::KERN_FAILURE.to_int();
372
373pub const KERN_RESOURCE_SHORTAGE: kern_return_t =
374 KERN_RETURN::KERN_RESOURCE_SHORTAGE.to_int();
375
376pub const KERN_NOT_RECEIVER: kern_return_t =
377 KERN_RETURN::KERN_NOT_RECEIVER.to_int();
378
379pub const KERN_NO_ACCESS: kern_return_t =
380 KERN_RETURN::KERN_NO_ACCESS.to_int();
381
382pub const KERN_MEMORY_FAILURE: kern_return_t =
383 KERN_RETURN::KERN_MEMORY_FAILURE.to_int();
384
385pub const KERN_MEMORY_ERROR: kern_return_t =
386 KERN_RETURN::KERN_MEMORY_ERROR.to_int();
387
388pub const KERN_ALREADY_IN_SET: kern_return_t =
389 KERN_RETURN::KERN_ALREADY_IN_SET.to_int();
390
391pub const KERN_NOT_IN_SET: kern_return_t =
392 KERN_RETURN::KERN_NOT_IN_SET.to_int();
393
394pub const KERN_NAME_EXISTS: kern_return_t =
395 KERN_RETURN::KERN_NAME_EXISTS.to_int();
396
397pub const KERN_ABORTED: kern_return_t =
398 KERN_RETURN::KERN_ABORTED.to_int();
399
400pub const KERN_INVALID_NAME: kern_return_t =
401 KERN_RETURN::KERN_INVALID_NAME.to_int();
402
403pub const KERN_INVALID_TASK: kern_return_t =
404 KERN_RETURN::KERN_INVALID_TASK.to_int();
405
406pub const KERN_INVALID_RIGHT: kern_return_t =
407 KERN_RETURN::KERN_INVALID_RIGHT.to_int();
408
409pub const KERN_INVALID_VALUE: kern_return_t =
410 KERN_RETURN::KERN_INVALID_VALUE.to_int();
411
412pub const KERN_UREFS_OVERFLOW: kern_return_t =
413 KERN_RETURN::KERN_UREFS_OVERFLOW.to_int();
414
415pub const KERN_INVALID_CAPABILITY: kern_return_t =
416 KERN_RETURN::KERN_INVALID_CAPABILITY.to_int();
417
418pub const KERN_RIGHT_EXISTS: kern_return_t =
419 KERN_RETURN::KERN_RIGHT_EXISTS.to_int();
420
421pub const KERN_INVALID_HOST: kern_return_t =
422 KERN_RETURN::KERN_INVALID_HOST.to_int();
423
424pub const KERN_MEMORY_PRESENT: kern_return_t =
425 KERN_RETURN::KERN_MEMORY_PRESENT.to_int();
426
427pub const KERN_MEMORY_DATA_MOVED: kern_return_t =
428 KERN_RETURN::KERN_MEMORY_DATA_MOVED.to_int();
429
430pub const KERN_MEMORY_RESTART_COPY: kern_return_t =
431 KERN_RETURN::KERN_MEMORY_RESTART_COPY.to_int();
432
433pub const KERN_INVALID_PROCESSOR_SET: kern_return_t =
434 KERN_RETURN::KERN_INVALID_PROCESSOR_SET.to_int();
435
436pub const KERN_POLICY_LIMIT: kern_return_t =
437 KERN_RETURN::KERN_POLICY_LIMIT.to_int();
438
439pub const KERN_INVALID_POLICY: kern_return_t =
440 KERN_RETURN::KERN_INVALID_POLICY.to_int();
441
442pub const KERN_INVALID_OBJECT: kern_return_t =
443 KERN_RETURN::KERN_INVALID_OBJECT.to_int();
444
445pub const KERN_ALREADY_WAITING: kern_return_t =
446 KERN_RETURN::KERN_ALREADY_WAITING.to_int();
447
448pub const KERN_DEFAULT_SET: kern_return_t =
449 KERN_RETURN::KERN_DEFAULT_SET.to_int();
450
451pub const KERN_EXCEPTION_PROTECTED: kern_return_t =
452 KERN_RETURN::KERN_EXCEPTION_PROTECTED.to_int();
453
454pub const KERN_INVALID_LEDGER: kern_return_t =
455 KERN_RETURN::KERN_INVALID_LEDGER.to_int();
456
457pub const KERN_INVALID_MEMORY_CONTROL: kern_return_t =
458 KERN_RETURN::KERN_INVALID_MEMORY_CONTROL.to_int();
459
460pub const KERN_INVALID_SECURITY: kern_return_t =
461 KERN_RETURN::KERN_INVALID_SECURITY.to_int();
462
463pub const KERN_NOT_DEPRESSED: kern_return_t =
464 KERN_RETURN::KERN_NOT_DEPRESSED.to_int();
465
466pub const KERN_TERMINATED: kern_return_t =
467 KERN_RETURN::KERN_TERMINATED.to_int();
468
469pub const KERN_LOCK_SET_DESTROYED: kern_return_t =
470 KERN_RETURN::KERN_LOCK_SET_DESTROYED.to_int();
471
472pub const KERN_LOCK_UNSTABLE: kern_return_t =
473 KERN_RETURN::KERN_LOCK_UNSTABLE.to_int();
474
475pub const KERN_LOCK_OWNED: kern_return_t =
476 KERN_RETURN::KERN_LOCK_OWNED.to_int();
477
478pub const KERN_LOCK_OWNED_SELF: kern_return_t =
479 KERN_RETURN::KERN_LOCK_OWNED_SELF.to_int();
480
481pub const KERN_SEMAPHORE_DESTROYED: kern_return_t =
482 KERN_RETURN::KERN_SEMAPHORE_DESTROYED.to_int();
483
484pub const KERN_RPC_SERVER_TERMINATED: kern_return_t =
485 KERN_RETURN::KERN_RPC_SERVER_TERMINATED.to_int();
486
487pub const KERN_RPC_TERMINATE_ORPHAN: kern_return_t =
488 KERN_RETURN::KERN_RPC_TERMINATE_ORPHAN.to_int();
489
490pub const KERN_RPC_CONTINUE_ORPHAN: kern_return_t =
491 KERN_RETURN::KERN_RPC_CONTINUE_ORPHAN.to_int();
492
493pub const KERN_NOT_SUPPORTED: kern_return_t =
494 KERN_RETURN::KERN_NOT_SUPPORTED.to_int();
495
496pub const KERN_NODE_DOWN: kern_return_t =
497 KERN_RETURN::KERN_NODE_DOWN.to_int();
498
499pub const KERN_NOT_WAITING: kern_return_t =
500 KERN_RETURN::KERN_NOT_WAITING.to_int();
501
502pub const KERN_OPERATION_TIMED_OUT: kern_return_t =
503 KERN_RETURN::KERN_OPERATION_TIMED_OUT.to_int();
504
505pub const KERN_CODESIGN_ERROR: kern_return_t =
506 KERN_RETURN::KERN_CODESIGN_ERROR.to_int();
507
508pub const KERN_POLICY_STATIC: kern_return_t =
509 KERN_RETURN::KERN_POLICY_STATIC.to_int();
510
511pub const KERN_RETURN_MAX: kern_return_t =
512 KERN_RETURN::KERN_RETURN_MAX.to_int();
513
514#[cfg(test)]
515mod test {
516 use super::*;
517
518 #[test]
519 fn kern_return_const_correction() {
520 assert!(0 == KERN_SUCCESS);
521 assert!(1 == KERN_INVALID_ADDRESS);
522 assert!(2 == KERN_PROTECTION_FAILURE);
523 assert!(3 == KERN_NO_SPACE);
524 assert!(4 == KERN_INVALID_ARGUMENT);
525 assert!(5 == KERN_FAILURE);
526 assert!(6 == KERN_RESOURCE_SHORTAGE);
527 assert!(7 == KERN_NOT_RECEIVER);
528 assert!(8 == KERN_NO_ACCESS);
529 assert!(9 == KERN_MEMORY_FAILURE);
530 assert!(10 == KERN_MEMORY_ERROR);
531 assert!(11 == KERN_ALREADY_IN_SET);
532 assert!(12 == KERN_NOT_IN_SET);
533 assert!(13 == KERN_NAME_EXISTS);
534 assert!(14 == KERN_ABORTED);
535 assert!(15 == KERN_INVALID_NAME);
536 assert!(16 == KERN_INVALID_TASK);
537 assert!(17 == KERN_INVALID_RIGHT);
538 assert!(18 == KERN_INVALID_VALUE);
539 assert!(19 == KERN_UREFS_OVERFLOW);
540 assert!(20 == KERN_INVALID_CAPABILITY);
541 assert!(21 == KERN_RIGHT_EXISTS);
542 assert!(22 == KERN_INVALID_HOST);
543 assert!(23 == KERN_MEMORY_PRESENT);
544 assert!(24 == KERN_MEMORY_DATA_MOVED);
545 assert!(25 == KERN_MEMORY_RESTART_COPY);
546 assert!(26 == KERN_INVALID_PROCESSOR_SET);
547 assert!(27 == KERN_POLICY_LIMIT);
548 assert!(28 == KERN_INVALID_POLICY);
549 assert!(29 == KERN_INVALID_OBJECT);
550 assert!(30 == KERN_ALREADY_WAITING);
551 assert!(31 == KERN_DEFAULT_SET);
552 assert!(32 == KERN_EXCEPTION_PROTECTED);
553 assert!(33 == KERN_INVALID_LEDGER);
554 assert!(34 == KERN_INVALID_MEMORY_CONTROL);
555 assert!(35 == KERN_INVALID_SECURITY);
556 assert!(36 == KERN_NOT_DEPRESSED);
557 assert!(37 == KERN_TERMINATED);
558 assert!(38 == KERN_LOCK_SET_DESTROYED);
559 assert!(39 == KERN_LOCK_UNSTABLE);
560 assert!(40 == KERN_LOCK_OWNED);
561 assert!(41 == KERN_LOCK_OWNED_SELF);
562 assert!(42 == KERN_SEMAPHORE_DESTROYED);
563 assert!(43 == KERN_RPC_SERVER_TERMINATED);
564 assert!(44 == KERN_RPC_TERMINATE_ORPHAN);
565 assert!(45 == KERN_RPC_CONTINUE_ORPHAN);
566 assert!(46 == KERN_NOT_SUPPORTED);
567 assert!(47 == KERN_NODE_DOWN);
568 assert!(48 == KERN_NOT_WAITING);
569 assert!(49 == KERN_OPERATION_TIMED_OUT);
570 assert!(50 == KERN_CODESIGN_ERROR);
571 assert!(51 == KERN_POLICY_STATIC);
572 assert!(256 == KERN_RETURN_MAX);
573 }
574
575 fn kern_return_enum_double_mapping() {
576 assert!(KERN_RETURN::from_int(0) == KERN_SUCCESS);
577 assert!(KERN_RETURN::from_int(1) == KERN_INVALID_ADDRESS);
578 assert!(KERN_RETURN::from_int(2) == KERN_PROTECTION_FAILURE);
579 assert!(KERN_RETURN::from_int(3) == KERN_NO_SPACE); assert!(KERN_RETURN::from_int(4) == KERN_INVALID_ARGUMENT); assert!(KERN_RETURN::from_int(5) == KERN_FAILURE); assert!(KERN_RETURN::from_int(6) == KERN_RESOURCE_SHORTAGE); assert!(KERN_RETURN::from_int(7) == KERN_NOT_RECEIVER);
580 assert!(KERN_RETURN::from_int(8) == KERN_NO_ACCESS);
581 assert!(KERN_RETURN::from_int(9) == KERN_MEMORY_FAILURE);
582 assert!(KERN_RETURN::from_int(10) == KERN_MEMORY_ERROR);
583 assert!(KERN_RETURN::from_int(11) == KERN_ALREADY_IN_SET);
584 assert!(KERN_RETURN::from_int(12) == KERN_NOT_IN_SET);
585 assert!(KERN_RETURN::from_int(13) == KERN_NAME_EXISTS);
586 assert!(KERN_RETURN::from_int(14) == KERN_ABORTED);
587 assert!(KERN_RETURN::from_int(15) == KERN_INVALID_NAME);
588 assert!(KERN_RETURN::from_int(16) == KERN_INVALID_TASK);
589 assert!(KERN_RETURN::from_int(17) == KERN_INVALID_RIGHT);
590 assert!(KERN_RETURN::from_int(18) == KERN_INVALID_VALUE);
591 assert!(KERN_RETURN::from_int(19) == KERN_UREFS_OVERFLOW);
592 assert!(KERN_RETURN::from_int(20) == KERN_INVALID_CAPABILITY);
593 assert!(KERN_RETURN::from_int(21) == KERN_RIGHT_EXISTS);
594 assert!(KERN_RETURN::from_int(22) == KERN_INVALID_HOST);
595 assert!(KERN_RETURN::from_int(23) == KERN_MEMORY_PRESENT);
596 assert!(KERN_RETURN::from_int(24) == KERN_MEMORY_DATA_MOVED);
597 assert!(KERN_RETURN::from_int(25) == KERN_MEMORY_RESTART_COPY);
598 assert!(KERN_RETURN::from_int(26) == KERN_INVALID_PROCESSOR_SET);
599 assert!(KERN_RETURN::from_int(27) == KERN_POLICY_LIMIT);
600 assert!(KERN_RETURN::from_int(28) == KERN_INVALID_POLICY);
601 assert!(KERN_RETURN::from_int(29) == KERN_INVALID_OBJECT);
602 assert!(KERN_RETURN::from_int(30) == KERN_ALREADY_WAITING);
603 assert!(KERN_RETURN::from_int(31) == KERN_DEFAULT_SET);
604 assert!(KERN_RETURN::from_int(32) == KERN_EXCEPTION_PROTECTED);
605 assert!(KERN_RETURN::from_int(33) == KERN_INVALID_LEDGER);
606 assert!(KERN_RETURN::from_int(34) == KERN_INVALID_MEMORY_CONTROL);
607 assert!(KERN_RETURN::from_int(35) == KERN_INVALID_SECURITY);
608 assert!(KERN_RETURN::from_int(36) == KERN_NOT_DEPRESSED);
609 assert!(KERN_RETURN::from_int(37) == KERN_TERMINATED);
610 assert!(KERN_RETURN::from_int(38) == KERN_LOCK_SET_DESTROYED); assert!(KERN_RETURN::from_int(39) == KERN_LOCK_UNSTABLE);
611 assert!(KERN_RETURN::from_int(40) == KERN_LOCK_OWNED); assert!(KERN_RETURN::from_int(41) == KERN_LOCK_OWNED_SELF); assert!(KERN_RETURN::from_int(42) == KERN_SEMAPHORE_DESTROYED);
612 assert!(KERN_RETURN::from_int(43) == KERN_RPC_SERVER_TERMINATED);
613 assert!(KERN_RETURN::from_int(44) == KERN_RPC_TERMINATE_ORPHAN);
614 assert!(KERN_RETURN::from_int(45) == KERN_RPC_CONTINUE_ORPHAN);
615 assert!(KERN_RETURN::from_int(46) == KERN_NOT_SUPPORTED);
616 assert!(KERN_RETURN::from_int(47) == KERN_NODE_DOWN);
617 assert!(KERN_RETURN::from_int(48) == KERN_NOT_WAITING);
618 assert!(KERN_RETURN::from_int(49) == KERN_OPERATION_TIMED_OUT);
619 assert!(KERN_RETURN::from_int(50) == KERN_CODESIGN_ERROR);
620 assert!(KERN_RETURN::from_int(51) == KERN_POLICY_STATIC);
621 assert!(KERN_RETURN::from_int(256) == KERN_RETURN_MAX);
622
623 assert!(0 == KERN_RETURN::KERN_SUCCESS.to_int());
624 assert!(1 == KERN_RETURN::KERN_INVALID_ADDRESS.to_int());
625 assert!(2 == KERN_RETURN::KERN_PROTECTION_FAILURE.to_int());
626 assert!(3 == KERN_RETURN::KERN_NO_SPACE.to_int());
627 assert!(4 == KERN_RETURN::KERN_INVALID_ARGUMENT.to_int());
628 assert!(5 == KERN_RETURN::KERN_FAILURE.to_int());
629 assert!(6 == KERN_RETURN::KERN_RESOURCE_SHORTAGE.to_int());
630 assert!(7 == KERN_RETURN::KERN_NOT_RECEIVER.to_int());
631 assert!(8 == KERN_RETURN::KERN_NO_ACCESS.to_int());
632 assert!(9 == KERN_RETURN::KERN_MEMORY_FAILURE.to_int()); assert!(10 == KERN_RETURN::KERN_MEMORY_ERROR.to_int()); assert!(11 == KERN_RETURN::KERN_ALREADY_IN_SET.to_int());
633 assert!(12 == KERN_RETURN::KERN_NOT_IN_SET.to_int());
634 assert!(13 == KERN_RETURN::KERN_NAME_EXISTS.to_int());
635 assert!(14 == KERN_RETURN::KERN_ABORTED.to_int());
636 assert!(15 == KERN_RETURN::KERN_INVALID_NAME.to_int());
637 assert!(16 == KERN_RETURN::KERN_INVALID_TASK.to_int());
638 assert!(17 == KERN_RETURN::KERN_INVALID_RIGHT.to_int());
639 assert!(18 == KERN_RETURN::KERN_INVALID_VALUE.to_int());
640 assert!(19 == KERN_RETURN::KERN_UREFS_OVERFLOW.to_int());
641 assert!(20 == KERN_RETURN::KERN_INVALID_CAPABILITY.to_int()); assert!(21 == KERN_RETURN::KERN_RIGHT_EXISTS.to_int()); assert!(22 == KERN_RETURN::KERN_INVALID_HOST.to_int()); assert!(23 == KERN_RETURN::KERN_MEMORY_PRESENT.to_int()); assert!(24 == KERN_RETURN::KERN_MEMORY_DATA_MOVED.to_int()); assert!(25 == KERN_RETURN::KERN_MEMORY_RESTART_COPY.to_int()); assert!(26 == KERN_RETURN::KERN_INVALID_PROCESSOR_SET.to_int()); assert!(27 == KERN_RETURN::KERN_POLICY_LIMIT.to_int()); assert!(28 == KERN_RETURN::KERN_INVALID_POLICY.to_int()); assert!(29 == KERN_RETURN::KERN_INVALID_OBJECT.to_int()); assert!(30 == KERN_RETURN::KERN_ALREADY_WAITING.to_int()); assert!(31 == KERN_RETURN::KERN_DEFAULT_SET.to_int()); assert!(32 == KERN_RETURN::KERN_EXCEPTION_PROTECTED.to_int()); assert!(33 == KERN_RETURN::KERN_INVALID_LEDGER.to_int()); assert!(34 == KERN_RETURN::KERN_INVALID_MEMORY_CONTROL.to_int()); assert!(35 == KERN_RETURN::KERN_INVALID_SECURITY.to_int()); assert!(36 == KERN_RETURN::KERN_NOT_DEPRESSED.to_int()); assert!(37 == KERN_RETURN::KERN_TERMINATED.to_int()); assert!(38 == KERN_RETURN::KERN_LOCK_SET_DESTROYED.to_int()); assert!(39 == KERN_RETURN::KERN_LOCK_UNSTABLE.to_int()); assert!(40 == KERN_RETURN::KERN_LOCK_OWNED.to_int()); assert!(41 == KERN_RETURN::KERN_LOCK_OWNED_SELF.to_int());
642 assert!(42 == KERN_RETURN::KERN_SEMAPHORE_DESTROYED.to_int());
643 assert!(43 == KERN_RETURN::KERN_RPC_SERVER_TERMINATED.to_int());
644 assert!(44 == KERN_RETURN::KERN_RPC_TERMINATE_ORPHAN.to_int());
645 assert!(45 == KERN_RETURN::KERN_RPC_CONTINUE_ORPHAN.to_int());
646 assert!(46 == KERN_RETURN::KERN_NOT_SUPPORTED.to_int());
647 assert!(47 == KERN_RETURN::KERN_NODE_DOWN.to_int());
648 assert!(48 == KERN_RETURN::KERN_NOT_WAITING.to_int());
649 assert!(49 == KERN_RETURN::KERN_OPERATION_TIMED_OUT.to_int()); assert!(50 == KERN_RETURN::KERN_CODESIGN_ERROR.to_int());
650 assert!(51 == KERN_RETURN::KERN_POLICY_STATIC.to_int());
651 assert!(256 == KERN_RETURN::KERN_RETURN_MAX.to_int());
652 }
653
654 fn kern_return_3_int_enum_const() {
655 assert!(0 == KERN_SUCCESS == KERN_RETURN::KERN_SUCCESS.to_int());
656 assert!(1 == KERN_INVALID_ADDRESS == KERN_RETURN::KERN_INVALID_ADDRESS.to_int());
657 assert!(2 == KERN_PROTECTION_FAILURE == KERN_RETURN::KERN_PROTECTION_FAILURE.to_int());
658 assert!(3 == KERN_NO_SPACE == KERN_RETURN::KERN_NO_SPACE.to_int());
659 assert!(4 == KERN_INVALID_ARGUMENT == KERN_RETURN::KERN_INVALID_ARGUMENT.to_int());
660 assert!(5 == KERN_FAILURE == KERN_RETURN::KERN_FAILURE.to_int());
661 assert!(6 == KERN_RESOURCE_SHORTAGE == KERN_RETURN::KERN_RESOURCE_SHORTAGE.to_int());
662 assert!(7 == KERN_NOT_RECEIVER == KERN_RETURN::KERN_NOT_RECEIVER.to_int());
663 assert!(8 == KERN_NO_ACCESS == KERN_RETURN::KERN_NO_ACCESS.to_int());
664 assert!(9 == KERN_MEMORY_FAILURE == KERN_RETURN::KERN_MEMORY_FAILURE.to_int());
665 assert!(10 == KERN_MEMORY_ERROR == KERN_RETURN::KERN_MEMORY_ERROR.to_int());
666 assert!(11 == KERN_ALREADY_IN_SET == KERN_RETURN::KERN_ALREADY_IN_SET.to_int());
667 assert!(12 == KERN_NOT_IN_SET == KERN_RETURN::KERN_NOT_IN_SET.to_int());
668 assert!(13 == KERN_NAME_EXISTS == KERN_RETURN::KERN_NAME_EXISTS.to_int());
669 assert!(14 == KERN_ABORTED == KERN_RETURN::KERN_ABORTED.to_int());
670 assert!(15 == KERN_INVALID_NAME == KERN_RETURN::KERN_INVALID_NAME.to_int());
671 assert!(16 == KERN_INVALID_TASK == KERN_RETURN::KERN_INVALID_TASK.to_int());
672 assert!(17 == KERN_INVALID_RIGHT == KERN_RETURN::KERN_INVALID_RIGHT.to_int());
673 assert!(18 == KERN_INVALID_VALUE == KERN_RETURN::KERN_INVALID_VALUE.to_int());
674 assert!(19 == KERN_UREFS_OVERFLOW == KERN_RETURN::KERN_UREFS_OVERFLOW.to_int());
675 assert!(20 == KERN_INVALID_CAPABILITY == KERN_RETURN::KERN_INVALID_CAPABILITY.to_int());
676 assert!(21 == KERN_RIGHT_EXISTS == KERN_RETURN::KERN_RIGHT_EXISTS.to_int());
677 assert!(22 == KERN_INVALID_HOST == KERN_RETURN::KERN_INVALID_HOST.to_int());
678 assert!(23 == KERN_MEMORY_PRESENT == KERN_RETURN::KERN_MEMORY_PRESENT.to_int());
679 assert!(24 == KERN_MEMORY_DATA_MOVED == KERN_RETURN::KERN_MEMORY_DATA_MOVED.to_int());
680 assert!(25 == KERN_MEMORY_RESTART_COPY == KERN_RETURN::KERN_MEMORY_RESTART_COPY.to_int());
681 assert!(26 == KERN_INVALID_PROCESSOR_SET == KERN_RETURN::KERN_INVALID_PROCESSOR_SET.to_int());
682 assert!(27 == KERN_POLICY_LIMIT == KERN_RETURN::KERN_POLICY_LIMIT.to_int());
683 assert!(28 == KERN_INVALID_POLICY == KERN_RETURN::KERN_INVALID_POLICY.to_int());
684 assert!(29 == KERN_INVALID_OBJECT == KERN_RETURN::KERN_INVALID_OBJECT.to_int());
685 assert!(30 == KERN_ALREADY_WAITING == KERN_RETURN::KERN_ALREADY_WAITING.to_int());
686 assert!(31 == KERN_DEFAULT_SET == KERN_RETURN::KERN_DEFAULT_SET.to_int());
687 assert!(32 == KERN_EXCEPTION_PROTECTED == KERN_RETURN::KERN_EXCEPTION_PROTECTED.to_int());
688 assert!(33 == KERN_INVALID_LEDGER == KERN_RETURN::KERN_INVALID_LEDGER.to_int());
689 assert!(34 == KERN_INVALID_MEMORY_CONTROL == KERN_RETURN::KERN_INVALID_MEMORY_CONTROL.to_int());
690 assert!(35 == KERN_INVALID_SECURITY == KERN_RETURN::KERN_INVALID_SECURITY.to_int());
691 assert!(36 == KERN_NOT_DEPRESSED == KERN_RETURN::KERN_NOT_DEPRESSED.to_int());
692 assert!(37 == KERN_TERMINATED == KERN_RETURN::KERN_TERMINATED.to_int());
693 assert!(38 == KERN_LOCK_SET_DESTROYED == KERN_RETURN::KERN_LOCK_SET_DESTROYED.to_int());
694 assert!(39 == KERN_LOCK_UNSTABLE == KERN_RETURN::KERN_LOCK_UNSTABLE.to_int());
695 assert!(40 == KERN_LOCK_OWNED == KERN_RETURN::KERN_LOCK_OWNED.to_int());
696 assert!(41 == KERN_LOCK_OWNED_SELF == KERN_RETURN::KERN_LOCK_OWNED_SELF.to_int());
697 assert!(42 == KERN_SEMAPHORE_DESTROYED == KERN_RETURN::KERN_SEMAPHORE_DESTROYED.to_int());
698 assert!(43 == KERN_RPC_SERVER_TERMINATED == KERN_RETURN::KERN_RPC_SERVER_TERMINATED.to_int());
699 assert!(44 == KERN_RPC_TERMINATE_ORPHAN == KERN_RETURN::KERN_RPC_TERMINATE_ORPHAN.to_int());
700 assert!(45 == KERN_RPC_CONTINUE_ORPHAN == KERN_RETURN::KERN_RPC_CONTINUE_ORPHAN.to_int());
701 assert!(46 == KERN_NOT_SUPPORTED == KERN_RETURN::KERN_NOT_SUPPORTED.to_int());
702 assert!(47 == KERN_NODE_DOWN == KERN_RETURN::KERN_NODE_DOWN.to_int());
703 assert!(48 == KERN_NOT_WAITING == KERN_RETURN::KERN_NOT_WAITING.to_int());
704 assert!(49 == KERN_OPERATION_TIMED_OUT == KERN_RETURN::KERN_OPERATION_TIMED_OUT.to_int());
705 assert!(50 == KERN_CODESIGN_ERROR == KERN_RETURN::KERN_CODESIGN_ERROR.to_int());
706 assert!(51 == KERN_POLICY_STATIC == KERN_RETURN::KERN_POLICY_STATIC.to_int());
707 assert!(256 == KERN_RETURN_MAX == KERN_RETURN::KERN_RETURN_MAX.to_int());
708 }
709}