| 51 | |
| 52 | #[cfg(unix)] |
| 53 | fn validate_advice(vm: &VirtualMachine, advice: i32) -> PyResult<i32> { |
| 54 | match advice { |
| 55 | libc::MADV_NORMAL |
| 56 | | libc::MADV_RANDOM |
| 57 | | libc::MADV_SEQUENTIAL |
| 58 | | libc::MADV_WILLNEED |
| 59 | | libc::MADV_DONTNEED => Ok(advice), |
| 60 | #[cfg(any( |
| 61 | target_os = "linux", |
| 62 | target_os = "macos", |
| 63 | target_os = "ios", |
| 64 | target_os = "freebsd" |
| 65 | ))] |
| 66 | libc::MADV_FREE => Ok(advice), |
| 67 | #[cfg(target_os = "linux")] |
| 68 | libc::MADV_DONTFORK |
| 69 | | libc::MADV_DOFORK |
| 70 | | libc::MADV_MERGEABLE |
| 71 | | libc::MADV_UNMERGEABLE |
| 72 | | libc::MADV_HUGEPAGE |
| 73 | | libc::MADV_NOHUGEPAGE |
| 74 | | libc::MADV_REMOVE |
| 75 | | libc::MADV_DONTDUMP |
| 76 | | libc::MADV_DODUMP |
| 77 | | libc::MADV_HWPOISON => Ok(advice), |
| 78 | #[cfg(target_os = "freebsd")] |
| 79 | libc::MADV_NOSYNC |
| 80 | | libc::MADV_AUTOSYNC |
| 81 | | libc::MADV_NOCORE |
| 82 | | libc::MADV_CORE |
| 83 | | libc::MADV_PROTECT => Ok(advice), |
| 84 | _ => Err(vm.new_value_error("Not a valid Advice value")), |
| 85 | } |
| 86 | } |
| 87 | |
| 88 | #[repr(C)] |
| 89 | #[derive(PartialEq, Eq, Debug)] |