diff --git a/Cargo.toml b/Cargo.toml index bc5a9d5..c0e9f2d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,12 +7,9 @@ repository = "https://github.com/JohnTitor/mach2" readme = "README.md" keywords = ["kernel", "macos", "darwin"] categories = ["api-bindings", "external-ffi-bindings", "no-std", "os"] -edition = "2015" +edition = "2024" include = ["src/**/*", "LICENSE-*", "README.md"] -[badges] -maintenance = { status = "passively-maintained" } - [target.'cfg(target_vendor = "apple")'.dependencies] libc = { version = "0.2", default-features = false } diff --git a/examples/dump_process_registers.rs b/examples/dump_process_registers.rs index ff0c364..2db0b53 100644 --- a/examples/dump_process_registers.rs +++ b/examples/dump_process_registers.rs @@ -17,10 +17,10 @@ use mach2::thread_act::thread_get_state; use mach2::traps::{mach_task_self, task_for_pid}; use mach2::vm::mach_vm_deallocate; -#[cfg(target_arch = "x86_64")] -use mach2::thread_status::x86_THREAD_STATE64 as THREAD_STATE64; #[cfg(target_arch = "aarch64")] use mach2::thread_status::ARM_THREAD_STATE64 as THREAD_STATE64; +#[cfg(target_arch = "x86_64")] +use mach2::thread_status::x86_THREAD_STATE64 as THREAD_STATE64; #[cfg(target_arch = "aarch64")] use mach2::structs::arm_thread_state64_t as thread_state64_t; @@ -29,16 +29,16 @@ use mach2::structs::x86_thread_state64_t as thread_state64_t; use std::io::prelude::*; -fn read_int() -> Result<::libc::c_int, ()> { +fn read_int() -> Result { let stdin = io::stdin(); let mut line = String::new(); stdin.read_line(&mut line).ok().unwrap(); - let mut value: ::libc::c_int = 0; + let mut value: libc::c_int = 0; for c in line.chars().take_while(|&c| c != '\n') { if let Some(d) = c.to_digit(10) { - value = value * 10 + (d as ::libc::c_int); + value = value * 10 + (d as libc::c_int); } else { return Err(()); } diff --git a/mach-test/Cargo.toml b/mach-test/Cargo.toml index 4453fda..f7ca712 100644 --- a/mach-test/Cargo.toml +++ b/mach-test/Cargo.toml @@ -1,15 +1,16 @@ [package] name = "mach-test" version = "0.1.0" -authors = ["gnzlbg "] +authors = ["Yuki Okushi "] build = "build.rs" +edition = "2021" [dependencies] mach2 = { path = ".." } libc = "0.2" [build-dependencies] -ctest = "0.4" +ctest = "=0.5.0-beta.1" [[test]] name = "main" diff --git a/mach-test/build.rs b/mach-test/build.rs index 4d07eb9..1c32767 100644 --- a/mach-test/build.rs +++ b/mach-test/build.rs @@ -1,5 +1,11 @@ extern crate ctest; +use std::env; +use std::fs; +#[cfg(unix)] +use std::os::unix::fs::PermissionsExt; +use std::path::{Path, PathBuf}; + #[derive(Eq, Ord, PartialEq, PartialOrd, Copy, Clone, Debug)] struct Xcode(pub u32, pub u32); @@ -38,6 +44,8 @@ impl Xcode { } fn main() { + inject_libc_extern(); + let xcode = Xcode::version(); // kept on purpose for debugging: // println!("cargo:warning=\"Xcode version: {:?}\"", xcode); @@ -136,7 +144,7 @@ fn main() { } cfg.skip_struct(move |s| { - match s { + match s.ident() { // TODO: this type is a bitfield and must be verified by hand "mach_msg_type_descriptor_t" | @@ -161,8 +169,8 @@ fn main() { } }); - cfg.skip_type(move |s| { - match s { + cfg.skip_alias(move |s| { + match s.ident() { // FIXME: this type is not exposed in /usr/include/mach // but seems to be exposed in // SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/mach @@ -180,10 +188,10 @@ fn main() { cfg.skip_fn(move |s| { // FIXME: The return type of these functions are different in Xcode 13 or higher. - if s.starts_with("semaphore") { + if s.ident().starts_with("semaphore") { return true; } - match s { + match s.ident() { // mac_task_self and current_tasl are not functions, but macro that map to the // mask_task_self_ static variable: "mach_task_self" | "current_task" => true, @@ -192,7 +200,7 @@ fn main() { } }); - cfg.skip_const(move |s| match s { + cfg.skip_const(move |s| match s.ident() { "MACH_RCV_NOTIFY" | "MACH_RCV_OVERWRITE" if xcode <= Xcode(11, 0) => true, // FIXME: Somehow it fails, like: @@ -205,10 +213,6 @@ fn main() { _ => false, }); - cfg.fn_cname(|rust, _link_name| match rust { - v => v.to_string(), - }); - cfg.skip_signededness(|c| { // signededness test does not make sense for these: match c { @@ -287,12 +291,10 @@ fn main() { } }); - cfg.type_name(move |ty, is_struct, is_union| match ty { - t if is_union => format!("union {}", t), - t if t.ends_with("_t") => t.to_string(), - t @ "gpu_energy_data" => t.to_string(), - t if is_struct => format!("struct {}", t), - t => t.to_string(), + cfg.rename_struct_ty(move |ty| match ty { + t if t.ends_with("_t") => Some(t.to_string()), + t @ "gpu_energy_data" => Some(t.to_string()), + t => Some(format!("struct {}", t)), }); cfg.skip_roundtrip(move |s| match s { @@ -306,5 +308,80 @@ fn main() { // Generate the tests, passing the path to the `*-sys` library as well as // the module to generate. - cfg.generate("../src/lib.rs", "all.rs"); + ctest::generate_test(&mut cfg, "../src/lib.rs", "all.rs").unwrap(); +} + +fn inject_libc_extern() { + if env::var_os("CTEST_LIBC_WRAPPER_INSTALLED").is_some() { + return; + } + + let rustc = env::var("RUSTC").unwrap_or_else(|_| String::from("rustc")); + + let out_dir = PathBuf::from(env::var("OUT_DIR").expect("OUT_DIR must be set")); + let profile_dir = out_dir + .ancestors() + .nth(3) + .expect("failed to locate Cargo profile directory"); + let deps_dir = profile_dir.join("deps"); + + let libc_artifact = find_libc_artifact(&deps_dir) + .unwrap_or_else(|| panic!("failed to locate libc artifact in {}", deps_dir.display())); + + let wrapper_path = create_rustc_wrapper(&out_dir); + + unsafe { + env::set_var("CTEST_REAL_RUSTC", &rustc); + env::set_var("CTEST_LIBC_ARTIFACT", &libc_artifact); + env::set_var("RUSTC", &wrapper_path); + env::set_var("CTEST_LIBC_WRAPPER_INSTALLED", "1"); + } +} + +fn find_libc_artifact(dir: &Path) -> Option { + let mut fallback = None; + let entries = fs::read_dir(dir).ok()?; + for entry in entries.flatten() { + let path = entry.path(); + let file_name = path.file_name()?.to_string_lossy(); + if !file_name.starts_with("liblibc-") { + continue; + } + match path.extension().and_then(|ext| ext.to_str()) { + Some("rlib") => return Some(path), + Some("rmeta") | Some("a") | Some("lib") if fallback.is_none() => { + fallback = Some(path); + } + _ => {} + } + } + fallback +} + +fn create_rustc_wrapper(out_dir: &Path) -> PathBuf { + #[cfg(unix)] + { + let wrapper_path = out_dir.join("rustc-with-libc.sh"); + let script = r#"#!/bin/sh +exec "$CTEST_REAL_RUSTC" --extern "libc=$CTEST_LIBC_ARTIFACT" "$@" +"#; + fs::write(&wrapper_path, script).expect("failed to write rustc wrapper script"); + let mut perms = fs::metadata(&wrapper_path) + .and_then(|meta| Ok(meta.permissions())) + .expect("failed to read wrapper permissions"); + perms.set_mode(0o755); + fs::set_permissions(&wrapper_path, perms) + .expect("failed to set executable bit on rustc wrapper script"); + wrapper_path + } + #[cfg(not(unix))] + { + let wrapper_path = out_dir.join("rustc-with-libc.cmd"); + let script = r#"@echo off +setlocal +"%CTEST_REAL_RUSTC%" --extern libc="%CTEST_LIBC_ARTIFACT%" %* +"#; + fs::write(&wrapper_path, script).expect("failed to write rustc wrapper script"); + wrapper_path + } } diff --git a/mach-test/test/main.rs b/mach-test/test/main.rs index 8608a58..8935878 100644 --- a/mach-test/test/main.rs +++ b/mach-test/test/main.rs @@ -1,8 +1,5 @@ #![allow(bad_style)] -extern crate libc; -extern crate mach2; - use mach2::boolean::*; use mach2::bootstrap::*; use mach2::clock::*; @@ -51,7 +48,7 @@ use mach2::vm_types::*; use libc::{c_int, c_uchar, c_uint, c_ulonglong, clock_t}; // Imported by mach, but kept private: -extern "C" { +unsafe extern "C" { static mach_task_self_: mach_port_t; } diff --git a/src/boolean.rs b/src/boolean.rs index cedffa1..0f1ead5 100644 --- a/src/boolean.rs +++ b/src/boolean.rs @@ -1,7 +1,7 @@ //! This module corresponds to `mach/i386/boolean.h`. #[cfg(target_arch = "x86_64")] -pub type boolean_t = ::libc::c_uint; +pub type boolean_t = libc::c_uint; #[cfg(not(target_arch = "x86_64"))] -pub type boolean_t = ::libc::c_int; +pub type boolean_t = libc::c_int; diff --git a/src/bootstrap.rs b/src/bootstrap.rs index 3642b94..67e91e2 100644 --- a/src/bootstrap.rs +++ b/src/bootstrap.rs @@ -1,42 +1,42 @@ //! This module corresponds to `bootstrap.h` -use boolean::boolean_t; -use kern_return::kern_return_t; -use port::mach_port_t; +use crate::boolean::boolean_t; +use crate::kern_return::kern_return_t; +use crate::port::mach_port_t; -pub const BOOTSTRAP_MAX_NAME_LEN: ::libc::c_uint = 128; -pub const BOOTSTRAP_MAX_CMD_LEN: ::libc::c_uint = 512; +pub const BOOTSTRAP_MAX_NAME_LEN: libc::c_uint = 128; +pub const BOOTSTRAP_MAX_CMD_LEN: libc::c_uint = 512; -pub const BOOTSTRAP_MAX_LOOKUP_COUNT: ::libc::c_uint = 20; +pub const BOOTSTRAP_MAX_LOOKUP_COUNT: libc::c_uint = 20; -pub const BOOTSTRAP_SUCCESS: ::libc::c_uint = 0; -pub const BOOTSTRAP_NOT_PRIVILEGED: ::libc::c_uint = 1100; -pub const BOOTSTRAP_NAME_IN_USE: ::libc::c_uint = 1101; -pub const BOOTSTRAP_UNKNOWN_SERVICE: ::libc::c_uint = 1102; -pub const BOOTSTRAP_SERVICE_ACTIVE: ::libc::c_uint = 1103; -pub const BOOTSTRAP_BAD_COUNT: ::libc::c_uint = 1104; -pub const BOOTSTRAP_NO_MEMORY: ::libc::c_uint = 1105; -pub const BOOTSTRAP_NO_CHILDREN: ::libc::c_uint = 1106; +pub const BOOTSTRAP_SUCCESS: libc::c_uint = 0; +pub const BOOTSTRAP_NOT_PRIVILEGED: libc::c_uint = 1100; +pub const BOOTSTRAP_NAME_IN_USE: libc::c_uint = 1101; +pub const BOOTSTRAP_UNKNOWN_SERVICE: libc::c_uint = 1102; +pub const BOOTSTRAP_SERVICE_ACTIVE: libc::c_uint = 1103; +pub const BOOTSTRAP_BAD_COUNT: libc::c_uint = 1104; +pub const BOOTSTRAP_NO_MEMORY: libc::c_uint = 1105; +pub const BOOTSTRAP_NO_CHILDREN: libc::c_uint = 1106; -pub const BOOTSTRAP_STATUS_INACTIVE: ::libc::c_uint = 0; -pub const BOOTSTRAP_STATUS_ACTIVE: ::libc::c_uint = 1; -pub const BOOTSTRAP_STATUS_ON_DEMAND: ::libc::c_uint = 2; +pub const BOOTSTRAP_STATUS_INACTIVE: libc::c_uint = 0; +pub const BOOTSTRAP_STATUS_ACTIVE: libc::c_uint = 1; +pub const BOOTSTRAP_STATUS_ON_DEMAND: libc::c_uint = 2; -pub type name_t = [::libc::c_char; 128]; -pub type cmd_t = [::libc::c_char; 512]; +pub type name_t = [libc::c_char; 128]; +pub type cmd_t = [libc::c_char; 512]; pub type name_array_t = *mut name_t; -pub type bootstrap_status_t = ::libc::c_int; +pub type bootstrap_status_t = libc::c_int; pub type bootstrap_status_array_t = *mut bootstrap_status_t; -pub type bootstrap_property_t = ::libc::c_uint; +pub type bootstrap_property_t = libc::c_uint; pub type bootstrap_property_array_t = *mut bootstrap_property_t; pub type bool_array_t = *mut boolean_t; -extern "C" { +unsafe extern "C" { pub static bootstrap_port: mach_port_t; pub fn bootstrap_create_server( bp: mach_port_t, - server_cmd: *mut ::libc::c_char, - server_uid: ::libc::uid_t, + server_cmd: *mut libc::c_char, + server_uid: libc::uid_t, on_demand: boolean_t, server_port: *mut mach_port_t, ) -> kern_return_t; @@ -49,28 +49,28 @@ extern "C" { pub fn bootstrap_parent(bp: mach_port_t, parent_port: *mut mach_port_t) -> kern_return_t; pub fn bootstrap_register( bp: mach_port_t, - service_name: *mut ::libc::c_char, + service_name: *mut libc::c_char, sp: mach_port_t, ) -> kern_return_t; pub fn bootstrap_create_service( bp: mach_port_t, - service_name: *mut ::libc::c_char, + service_name: *mut libc::c_char, sp: *mut mach_port_t, ) -> kern_return_t; pub fn bootstrap_check_in( bp: mach_port_t, - service_name: *const ::libc::c_char, + service_name: *const libc::c_char, sp: *mut mach_port_t, ) -> kern_return_t; pub fn bootstrap_look_up( bp: mach_port_t, - service_name: *const ::libc::c_char, + service_name: *const libc::c_char, sp: *mut mach_port_t, ) -> kern_return_t; pub fn bootstrap_status( bp: mach_port_t, - service_name: *mut ::libc::c_char, + service_name: *mut libc::c_char, service_active: *mut bootstrap_status_t, ) -> kern_return_t; - pub fn bootstrap_strerror(r: kern_return_t) -> *const ::libc::c_char; + pub fn bootstrap_strerror(r: kern_return_t) -> *const libc::c_char; } diff --git a/src/clock.rs b/src/clock.rs index 1d54379..a050685 100644 --- a/src/clock.rs +++ b/src/clock.rs @@ -1,13 +1,13 @@ //! This module roughly corresponds to `mach/clock.h`. -pub const clock_MSG_COUNT: ::libc::c_uint = 3; +pub const clock_MSG_COUNT: libc::c_uint = 3; -use clock_types::{alarm_type_t, clock_attr_t, clock_flavor_t, mach_timespec_t}; -use kern_return::kern_return_t; -use mach_types::{clock_reply_t, clock_serv_t}; -use message::mach_msg_type_number_t; +use crate::clock_types::{alarm_type_t, clock_attr_t, clock_flavor_t, mach_timespec_t}; +use crate::kern_return::kern_return_t; +use crate::mach_types::{clock_reply_t, clock_serv_t}; +use crate::message::mach_msg_type_number_t; -extern "C" { +unsafe extern "C" { pub fn clock_get_time( clock_serv: clock_serv_t, cur_time: *mut mach_timespec_t, diff --git a/src/clock_priv.rs b/src/clock_priv.rs index d534e79..fd952c4 100644 --- a/src/clock_priv.rs +++ b/src/clock_priv.rs @@ -1,11 +1,11 @@ //! This module roughly corresponds to `mach/clock_priv.h`. -use clock_types::{clock_attr_t, clock_flavor_t, mach_timespec_t}; -use kern_return::kern_return_t; -use mach_types::clock_ctrl_t; -use message::mach_msg_type_number_t; +use crate::clock_types::{clock_attr_t, clock_flavor_t, mach_timespec_t}; +use crate::kern_return::kern_return_t; +use crate::mach_types::clock_ctrl_t; +use crate::message::mach_msg_type_number_t; -extern "C" { +unsafe extern "C" { pub fn clock_set_time(clock_ctrl: clock_ctrl_t, new_time: mach_timespec_t) -> kern_return_t; pub fn clock_set_attributes( clock_ctrl: clock_ctrl_t, diff --git a/src/clock_reply.rs b/src/clock_reply.rs index 854eb22..84c5a51 100644 --- a/src/clock_reply.rs +++ b/src/clock_reply.rs @@ -1,11 +1,11 @@ //! This module roughly corresponds to `mach/clock_reply.h`. -use clock_types::{alarm_type_t, mach_timespec_t}; -use kern_return::kern_return_t; -use mach_types::clock_reply_t; -use message::mach_msg_type_name_t; +use crate::clock_types::{alarm_type_t, mach_timespec_t}; +use crate::kern_return::kern_return_t; +use crate::mach_types::clock_reply_t; +use crate::message::mach_msg_type_name_t; -extern "C" { +unsafe extern "C" { pub fn clock_alarm_reply( alarm_port: clock_reply_t, alarm_portPoly: mach_msg_type_name_t, diff --git a/src/clock_types.rs b/src/clock_types.rs index c0949c8..5c7c40f 100644 --- a/src/clock_types.rs +++ b/src/clock_types.rs @@ -1,55 +1,55 @@ //! This module roughly corresponds to `mach/clock_types.h`. -pub type alarm_type_t = ::libc::c_int; -pub type sleep_type_t = ::libc::c_int; -pub type clock_id_t = ::libc::c_int; -pub type clock_flavor_t = ::libc::c_int; -pub type clock_attr_t = *mut ::libc::c_int; -pub type clock_res_t = ::libc::c_int; +pub type alarm_type_t = libc::c_int; +pub type sleep_type_t = libc::c_int; +pub type clock_id_t = libc::c_int; +pub type clock_flavor_t = libc::c_int; +pub type clock_attr_t = *mut libc::c_int; +pub type clock_res_t = libc::c_int; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] pub struct mach_timespec { - pub tv_sec: ::libc::c_uint, + pub tv_sec: libc::c_uint, pub tv_nsec: clock_res_t, } pub type mach_timespec_t = mach_timespec; -pub const SYSTEM_CLOCK: ::libc::c_uint = 0; -pub const CALENDAR_CLOCK: ::libc::c_uint = 1; -pub const REALTIME_CLOCK: ::libc::c_uint = 0; +pub const SYSTEM_CLOCK: libc::c_uint = 0; +pub const CALENDAR_CLOCK: libc::c_uint = 1; +pub const REALTIME_CLOCK: libc::c_uint = 0; -pub const CLOCK_GET_TIME_RES: ::libc::c_uint = 1; -pub const CLOCK_ALARM_CURRES: ::libc::c_uint = 3; -pub const CLOCK_ALARM_MINRES: ::libc::c_uint = 4; -pub const CLOCK_ALARM_MAXRES: ::libc::c_uint = 5; +pub const CLOCK_GET_TIME_RES: libc::c_uint = 1; +pub const CLOCK_ALARM_CURRES: libc::c_uint = 3; +pub const CLOCK_ALARM_MINRES: libc::c_uint = 4; +pub const CLOCK_ALARM_MAXRES: libc::c_uint = 5; -pub const NSEC_PER_USEC: ::libc::c_ulonglong = 1000; -pub const USEC_PER_SEC: ::libc::c_ulonglong = 1_000_000; -pub const NSEC_PER_SEC: ::libc::c_ulonglong = 1_000_000_000; -pub const NSEC_PER_MSEC: ::libc::c_ulonglong = 1_000_000; +pub const NSEC_PER_USEC: libc::c_ulonglong = 1000; +pub const USEC_PER_SEC: libc::c_ulonglong = 1_000_000; +pub const NSEC_PER_SEC: libc::c_ulonglong = 1_000_000_000; +pub const NSEC_PER_MSEC: libc::c_ulonglong = 1_000_000; #[allow(non_snake_case)] pub fn BAD_MACH_TIMESPEC(t: mach_timespec) -> bool { - t.tv_nsec < 0 || (t.tv_nsec as ::libc::c_ulonglong) >= NSEC_PER_SEC + t.tv_nsec < 0 || (t.tv_nsec as libc::c_ulonglong) >= NSEC_PER_SEC } #[allow(non_snake_case)] -pub fn CMP_MACH_TIMESPEC(t1: &mach_timespec, t2: &mach_timespec) -> ::libc::c_ulonglong { +pub fn CMP_MACH_TIMESPEC(t1: &mach_timespec, t2: &mach_timespec) -> libc::c_ulonglong { if t1.tv_sec > t2.tv_sec { return NSEC_PER_SEC; } if t1.tv_sec < t2.tv_sec { return !NSEC_PER_SEC; } - (t1.tv_nsec as ::libc::c_ulonglong) - (t2.tv_nsec as ::libc::c_ulonglong) + (t1.tv_nsec as libc::c_ulonglong) - (t2.tv_nsec as libc::c_ulonglong) } #[allow(non_snake_case)] pub fn ADD_MACH_TIMESPEC(t1: &mut mach_timespec, t2: &mach_timespec) { t1.tv_nsec += t2.tv_nsec; - if (t1.tv_nsec as ::libc::c_ulonglong) >= NSEC_PER_SEC { - t1.tv_nsec = (t1.tv_nsec as ::libc::c_ulonglong - NSEC_PER_SEC) as clock_res_t; + if (t1.tv_nsec as libc::c_ulonglong) >= NSEC_PER_SEC { + t1.tv_nsec = (t1.tv_nsec as libc::c_ulonglong - NSEC_PER_SEC) as clock_res_t; t1.tv_sec += 1; } t1.tv_sec += t2.tv_sec; @@ -59,17 +59,17 @@ pub fn ADD_MACH_TIMESPEC(t1: &mut mach_timespec, t2: &mach_timespec) { pub fn SUB_MACH_TIMESPEC(t1: &mut mach_timespec, t2: &mach_timespec) { t1.tv_nsec -= t2.tv_nsec; if t1.tv_nsec < 0 { - t1.tv_nsec = (t1.tv_nsec as ::libc::c_ulonglong + NSEC_PER_SEC) as clock_res_t; + t1.tv_nsec = (t1.tv_nsec as libc::c_ulonglong + NSEC_PER_SEC) as clock_res_t; t1.tv_sec -= 1; } t1.tv_sec -= t2.tv_sec; } -pub const ALRMTYPE: ::libc::c_uint = 0xff; -pub const TIME_ABSOLUTE: ::libc::c_uint = 0x00; -pub const TIME_RELATIVE: ::libc::c_uint = 0x01; +pub const ALRMTYPE: libc::c_uint = 0xff; +pub const TIME_ABSOLUTE: libc::c_uint = 0x00; +pub const TIME_RELATIVE: libc::c_uint = 0x01; #[allow(non_snake_case)] -pub fn BAD_ALRMTYPE(t: ::libc::c_uint) -> bool { +pub fn BAD_ALRMTYPE(t: libc::c_uint) -> bool { t & (!TIME_RELATIVE) != 0 } diff --git a/src/dyld.rs b/src/dyld.rs index 2c9face..1f5964d 100644 --- a/src/dyld.rs +++ b/src/dyld.rs @@ -1,10 +1,10 @@ //! This module roughly corresponds to `mach-o/dyld.h`. -use loader::mach_header; +use crate::loader::mach_header; -extern "C" { +unsafe extern "C" { pub fn _dyld_image_count() -> u32; pub fn _dyld_get_image_header(image_index: u32) -> *const mach_header; - pub fn _dyld_get_image_vmaddr_slide(image_index: u32) -> ::libc::intptr_t; - pub fn _dyld_get_image_name(image_index: u32) -> *const ::libc::c_char; + pub fn _dyld_get_image_vmaddr_slide(image_index: u32) -> libc::intptr_t; + pub fn _dyld_get_image_name(image_index: u32) -> *const libc::c_char; } diff --git a/src/dyld_kernel.rs b/src/dyld_kernel.rs index 9a264df..58aaaaf 100644 --- a/src/dyld_kernel.rs +++ b/src/dyld_kernel.rs @@ -1,7 +1,7 @@ //! This module roughly corresponds to `mach/dyld_kernel.h`. -use boolean::boolean_t; -use mach_types::{fsid_t, fsobj_id_t, uuid_t}; +use crate::boolean::boolean_t; +use crate::mach_types::{fsid_t, fsobj_id_t, uuid_t}; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] diff --git a/src/exc.rs b/src/exc.rs index 0d68400..e47249b 100644 --- a/src/exc.rs +++ b/src/exc.rs @@ -1,18 +1,18 @@ //! This module roughly corresponds to `mach/exc.h`. -use exception_types::{exception_data_t, exception_type_t}; -use kern_return::kern_return_t; -use message::{ +use crate::exception_types::{exception_data_t, exception_type_t}; +use crate::kern_return::kern_return_t; +use crate::message::{ mach_msg_body_t, mach_msg_header_t, mach_msg_port_descriptor_t, mach_msg_type_number_t, }; -use ndr::NDR_record_t; -use port::mach_port_t; -use thread_status::thread_state_t; -use vm_types::integer_t; +use crate::ndr::NDR_record_t; +use crate::port::mach_port_t; +use crate::thread_status::thread_state_t; +use crate::vm_types::integer_t; -pub const exc_MSG_COUNT: ::libc::c_uint = 3; +pub const exc_MSG_COUNT: libc::c_uint = 3; -extern "C" { +unsafe extern "C" { pub fn exception_raise( exception_port: mach_port_t, thread: mach_port_t, @@ -26,7 +26,7 @@ extern "C" { exception: exception_type_t, code: exception_data_t, codeCnt: mach_msg_type_number_t, - flavor: *mut ::libc::c_int, + flavor: *mut libc::c_int, old_state: thread_state_t, old_stateCnt: mach_msg_type_number_t, new_state: thread_state_t, @@ -39,7 +39,7 @@ extern "C" { exception: exception_type_t, code: exception_data_t, codeCnt: mach_msg_type_number_t, - flavor: *mut ::libc::c_int, + flavor: *mut libc::c_int, old_state: thread_state_t, old_stateCnt: mach_msg_type_number_t, new_state: thread_state_t, diff --git a/src/exception_types.rs b/src/exception_types.rs index f042443..6a10be4 100644 --- a/src/exception_types.rs +++ b/src/exception_types.rs @@ -1,53 +1,53 @@ //! This module roughly corresponds to `mach/exception_types.h`. -use port::mach_port_t; -use thread_status::thread_state_flavor_t; -use vm_types::integer_t; +use crate::port::mach_port_t; +use crate::thread_status::thread_state_flavor_t; +use crate::vm_types::integer_t; -pub const EXC_BAD_ACCESS: ::libc::c_uint = 1; -pub const EXC_BAD_INSTRUCTION: ::libc::c_uint = 2; -pub const EXC_ARITHMETIC: ::libc::c_uint = 3; -pub const EXC_EMULATION: ::libc::c_uint = 4; -pub const EXC_SOFTWARE: ::libc::c_uint = 5; -pub const EXC_BREAKPOINT: ::libc::c_uint = 6; -pub const EXC_SYSCALL: ::libc::c_uint = 7; -pub const EXC_MACH_SYSCALL: ::libc::c_uint = 8; -pub const EXC_RPC_ALERT: ::libc::c_uint = 9; -pub const EXC_CRASH: ::libc::c_uint = 10; -pub const EXC_RESOURCE: ::libc::c_uint = 11; -pub const EXC_GUARD: ::libc::c_uint = 12; -pub const EXC_CORPSE_NOTIFY: ::libc::c_uint = 13; -pub const EXC_CORPSE_VARIANT_BIT: ::libc::c_uint = 256; -pub const EXCEPTION_DEFAULT: ::libc::c_uint = 1; -pub const EXCEPTION_STATE: ::libc::c_uint = 2; -pub const EXCEPTION_STATE_IDENTITY: ::libc::c_uint = 3; -pub const MACH_EXCEPTION_CODES: ::libc::c_uint = 2_147_483_648; -pub const EXC_MASK_BAD_ACCESS: ::libc::c_uint = 2; -pub const EXC_MASK_BAD_INSTRUCTION: ::libc::c_uint = 4; -pub const EXC_MASK_ARITHMETIC: ::libc::c_uint = 8; -pub const EXC_MASK_EMULATION: ::libc::c_uint = 16; -pub const EXC_MASK_SOFTWARE: ::libc::c_uint = 32; -pub const EXC_MASK_BREAKPOINT: ::libc::c_uint = 64; -pub const EXC_MASK_SYSCALL: ::libc::c_uint = 128; -pub const EXC_MASK_MACH_SYSCALL: ::libc::c_uint = 256; -pub const EXC_MASK_RPC_ALERT: ::libc::c_uint = 512; -pub const EXC_MASK_CRASH: ::libc::c_uint = 1024; -pub const EXC_MASK_RESOURCE: ::libc::c_uint = 2048; -pub const EXC_MASK_GUARD: ::libc::c_uint = 4096; -pub const EXC_MASK_CORPSE_NOTIFY: ::libc::c_uint = 8192; -pub const EXC_MASK_ALL: ::libc::c_uint = 7166; -pub const FIRST_EXCEPTION: ::libc::c_uint = 1; -pub const EXC_SOFT_SIGNAL: ::libc::c_uint = 65_539; -pub const EXC_MACF_MIN: ::libc::c_uint = 131_072; -pub const EXC_MACF_MAX: ::libc::c_uint = 196_607; +pub const EXC_BAD_ACCESS: libc::c_uint = 1; +pub const EXC_BAD_INSTRUCTION: libc::c_uint = 2; +pub const EXC_ARITHMETIC: libc::c_uint = 3; +pub const EXC_EMULATION: libc::c_uint = 4; +pub const EXC_SOFTWARE: libc::c_uint = 5; +pub const EXC_BREAKPOINT: libc::c_uint = 6; +pub const EXC_SYSCALL: libc::c_uint = 7; +pub const EXC_MACH_SYSCALL: libc::c_uint = 8; +pub const EXC_RPC_ALERT: libc::c_uint = 9; +pub const EXC_CRASH: libc::c_uint = 10; +pub const EXC_RESOURCE: libc::c_uint = 11; +pub const EXC_GUARD: libc::c_uint = 12; +pub const EXC_CORPSE_NOTIFY: libc::c_uint = 13; +pub const EXC_CORPSE_VARIANT_BIT: libc::c_uint = 256; +pub const EXCEPTION_DEFAULT: libc::c_uint = 1; +pub const EXCEPTION_STATE: libc::c_uint = 2; +pub const EXCEPTION_STATE_IDENTITY: libc::c_uint = 3; +pub const MACH_EXCEPTION_CODES: libc::c_uint = 2_147_483_648; +pub const EXC_MASK_BAD_ACCESS: libc::c_uint = 2; +pub const EXC_MASK_BAD_INSTRUCTION: libc::c_uint = 4; +pub const EXC_MASK_ARITHMETIC: libc::c_uint = 8; +pub const EXC_MASK_EMULATION: libc::c_uint = 16; +pub const EXC_MASK_SOFTWARE: libc::c_uint = 32; +pub const EXC_MASK_BREAKPOINT: libc::c_uint = 64; +pub const EXC_MASK_SYSCALL: libc::c_uint = 128; +pub const EXC_MASK_MACH_SYSCALL: libc::c_uint = 256; +pub const EXC_MASK_RPC_ALERT: libc::c_uint = 512; +pub const EXC_MASK_CRASH: libc::c_uint = 1024; +pub const EXC_MASK_RESOURCE: libc::c_uint = 2048; +pub const EXC_MASK_GUARD: libc::c_uint = 4096; +pub const EXC_MASK_CORPSE_NOTIFY: libc::c_uint = 8192; +pub const EXC_MASK_ALL: libc::c_uint = 7166; +pub const FIRST_EXCEPTION: libc::c_uint = 1; +pub const EXC_SOFT_SIGNAL: libc::c_uint = 65_539; +pub const EXC_MACF_MIN: libc::c_uint = 131_072; +pub const EXC_MACF_MAX: libc::c_uint = 196_607; -pub type exception_type_t = ::libc::c_int; +pub type exception_type_t = libc::c_int; pub type exception_data_type_t = integer_t; pub type mach_exception_data_type_t = i64; -pub type exception_behavior_t = ::libc::c_int; +pub type exception_behavior_t = libc::c_int; pub type exception_data_t = *mut exception_data_type_t; pub type mach_exception_data_t = *mut mach_exception_data_type_t; -pub type exception_mask_t = ::libc::c_uint; +pub type exception_mask_t = libc::c_uint; pub type exception_mask_array_t = *mut exception_mask_t; pub type exception_behavior_array_t = *mut exception_behavior_t; pub type exception_flavor_array_t = *mut thread_state_flavor_t; diff --git a/src/kern_return.rs b/src/kern_return.rs index a2d4861..8d5f66e 100644 --- a/src/kern_return.rs +++ b/src/kern_return.rs @@ -2,7 +2,7 @@ // ...Except for this particular type, which is taken from `mach/i386/kern_return.h` and // `mach/arm/kern_return.h` (also used for aarch64): it is the same type in both header files. -pub type kern_return_t = ::libc::c_int; +pub type kern_return_t = libc::c_int; pub const KERN_SUCCESS: kern_return_t = 0; pub const KERN_INVALID_ADDRESS: kern_return_t = 1; diff --git a/src/lib.rs b/src/lib.rs index e5899aa..df17a81 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -13,8 +13,6 @@ #[cfg(not(target_vendor = "apple"))] compile_error!("mach requires macOS, iOS, tvOS, watchOS or visionOS"); -extern crate libc; - #[allow(unused_imports)] use core::{clone, cmp, default, fmt, hash, marker, mem, option}; diff --git a/src/loader.rs b/src/loader.rs index 1b0d3a9..2a46d75 100644 --- a/src/loader.rs +++ b/src/loader.rs @@ -5,8 +5,8 @@ #[derive(Copy, Clone, Debug)] pub struct mach_header { pub magic: u32, - pub cputype: ::libc::cpu_type_t, - pub cpusubtype: ::libc::cpu_subtype_t, + pub cputype: libc::cpu_type_t, + pub cpusubtype: libc::cpu_subtype_t, pub filetype: u32, pub ncmds: u32, pub sizeofcmds: u32, diff --git a/src/mach_init.rs b/src/mach_init.rs index 32b6f6b..3184036 100644 --- a/src/mach_init.rs +++ b/src/mach_init.rs @@ -1,16 +1,16 @@ //! This module corresponds to `mach/mach_init.h`. -use mach_types::thread_port_t; +use crate::mach_types::thread_port_t; -extern "C" { +unsafe extern "C" { pub fn mach_thread_self() -> thread_port_t; pub fn mach_host_self() -> thread_port_t; } #[cfg(test)] mod tests { - use mach_init::*; - use port::*; + use crate::mach_init::*; + use crate::port::*; #[test] fn mach_thread_self_test() { diff --git a/src/mach_port.rs b/src/mach_port.rs index 3f9cab0..f937a97 100644 --- a/src/mach_port.rs +++ b/src/mach_port.rs @@ -1,14 +1,14 @@ //! This module corresponds to `mach/mach_port.h` -use kern_return::kern_return_t; -use mach_types::ipc_space_t; -use message::mach_msg_type_name_t; -use port::{ +use crate::kern_return::kern_return_t; +use crate::mach_types::ipc_space_t; +use crate::message::mach_msg_type_name_t; +use crate::port::{ mach_port_delta_t, mach_port_name_t, mach_port_options_t, mach_port_right_t, mach_port_t, }; -use vm_types::mach_port_context_t; +use crate::vm_types::mach_port_context_t; -extern "C" { +unsafe extern "C" { pub fn mach_port_allocate( task: ipc_space_t, right: mach_port_right_t, diff --git a/src/mach_time.rs b/src/mach_time.rs index 9011c0c..d6ec7cd 100644 --- a/src/mach_time.rs +++ b/src/mach_time.rs @@ -1,5 +1,5 @@ //! This module corresponds to `mach/mach_time.h` -use kern_return::kern_return_t; +use crate::kern_return::kern_return_t; pub type mach_timebase_info_t = *mut mach_timebase_info; pub type mach_timebase_info_data_t = mach_timebase_info; @@ -10,7 +10,7 @@ pub struct mach_timebase_info { pub denom: u32, } -extern "C" { +unsafe extern "C" { pub fn mach_timebase_info(info: mach_timebase_info_t) -> kern_return_t; pub fn mach_wait_until(deadline: u64) -> kern_return_t; pub fn mach_absolute_time() -> u64; diff --git a/src/mach_types.rs b/src/mach_types.rs index fa257b2..708643b 100644 --- a/src/mach_types.rs +++ b/src/mach_types.rs @@ -1,6 +1,6 @@ //! This module corresponds to `mach/mach_types.h` -use port::mach_port_t; +use crate::port::mach_port_t; pub type task_t = mach_port_t; pub type task_name_t = mach_port_t; @@ -82,11 +82,11 @@ pub const SEMAPHORE_NULL: semaphore_t = 0; pub const LOCK_SET_NULL: lock_set_t = 0; pub const LEDGER_NULL: ledger_t = 0; pub const ALARM_NULL: alarm_t = 0; -pub const CLOCK_NULL: ::libc::clock_t = 0; +pub const CLOCK_NULL: libc::clock_t = 0; pub const UND_SERVER_NULL: UNDServerRef = 0; // : typedef unsigned char __darwin_uuid_t[16]; -pub type uuid_t = [::libc::c_uchar; 16]; +pub type uuid_t = [libc::c_uchar; 16]; // #[repr(C)] diff --git a/src/memory_object_types.rs b/src/memory_object_types.rs index 8399e71..27657fb 100644 --- a/src/memory_object_types.rs +++ b/src/memory_object_types.rs @@ -1,9 +1,9 @@ //! This module roughly corresponds to `mach/memory_object_types.h`. -use vm_types::natural_t; +use crate::vm_types::natural_t; -pub type memory_object_offset_t = ::libc::c_ulonglong; -pub type memory_object_size_t = ::libc::c_ulonglong; +pub type memory_object_offset_t = libc::c_ulonglong; +pub type memory_object_size_t = libc::c_ulonglong; pub type memory_object_cluster_size_t = natural_t; pub type memory_object_fault_info_t = *mut natural_t; -pub type vm_object_id_t = ::libc::c_ulonglong; +pub type vm_object_id_t = libc::c_ulonglong; diff --git a/src/message.rs b/src/message.rs index d3d3153..f5b258e 100644 --- a/src/message.rs +++ b/src/message.rs @@ -1,23 +1,23 @@ //! This module corresponds to `mach/message.h`. -use kern_return::kern_return_t; -use port::{mach_port_name_t, mach_port_seqno_t, mach_port_t}; -use vm_types::{integer_t, natural_t}; +use crate::kern_return::kern_return_t; +use crate::port::{mach_port_name_t, mach_port_seqno_t, mach_port_t}; +use crate::vm_types::{integer_t, natural_t}; pub type mach_msg_timeout_t = natural_t; -pub type mach_msg_bits_t = ::libc::c_uint; +pub type mach_msg_bits_t = libc::c_uint; pub type mach_msg_id_t = integer_t; pub type mach_msg_size_t = natural_t; -pub type mach_msg_copy_options_t = ::libc::c_uint; -pub type mach_msg_descriptor_type_t = ::libc::c_uint; -pub type mach_msg_type_name_t = ::libc::c_uint; +pub type mach_msg_copy_options_t = libc::c_uint; +pub type mach_msg_descriptor_type_t = libc::c_uint; +pub type mach_msg_type_name_t = libc::c_uint; -pub type mach_msg_guard_flags_t = ::libc::c_uint; +pub type mach_msg_guard_flags_t = libc::c_uint; -pub type mach_msg_trailer_type_t = ::libc::c_uint; -pub type mach_msg_trailer_size_t = ::libc::c_uint; +pub type mach_msg_trailer_type_t = libc::c_uint; +pub type mach_msg_trailer_size_t = libc::c_uint; pub type mach_msg_option_t = integer_t; @@ -204,7 +204,7 @@ pub struct mach_msg_seqno_trailer_t { #[repr(C)] #[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] pub struct security_token_t { - pub val: [::libc::c_uint; 2], + pub val: [libc::c_uint; 2], } #[repr(C)] @@ -219,7 +219,7 @@ pub struct mach_msg_security_trailer_t { #[repr(C)] #[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] pub struct audit_token_t { - pub val: [::libc::c_uint; 8], + pub val: [libc::c_uint; 8], } #[repr(C)] @@ -266,7 +266,7 @@ impl mach_msg_port_descriptor_t { #[repr(C)] #[derive(Copy, Clone, Debug, Hash, PartialOrd, PartialEq, Eq, Ord)] pub struct mach_msg_ool_descriptor_t { - pub address: *mut ::libc::c_void, + pub address: *mut libc::c_void, #[cfg(not(target_pointer_width = "64"))] pub size: mach_msg_size_t, pub deallocate: u8, // boolean_t bitfield @@ -279,7 +279,7 @@ pub struct mach_msg_ool_descriptor_t { impl mach_msg_ool_descriptor_t { pub fn new( - address: *mut ::libc::c_void, + address: *mut libc::c_void, deallocate: bool, copy: mach_msg_copy_options_t, size: mach_msg_size_t, @@ -298,7 +298,7 @@ impl mach_msg_ool_descriptor_t { #[repr(C)] #[derive(Copy, Clone, Debug, Hash, PartialOrd, PartialEq, Eq, Ord)] pub struct mach_msg_ool_ports_descriptor_t { - pub address: *mut ::libc::c_void, + pub address: *mut libc::c_void, #[cfg(not(target_pointer_width = "64"))] pub count: mach_msg_size_t, pub deallocate: u8, // boolean_t bitfield @@ -311,7 +311,7 @@ pub struct mach_msg_ool_ports_descriptor_t { impl mach_msg_ool_ports_descriptor_t { pub fn new( - address: *mut ::libc::c_void, + address: *mut libc::c_void, deallocate: bool, copy: mach_msg_copy_options_t, disposition: mach_msg_type_name_t, @@ -328,7 +328,7 @@ impl mach_msg_ool_ports_descriptor_t { } } -extern "C" { +unsafe extern "C" { pub fn mach_msg( msg: *mut mach_msg_header_t, option: mach_msg_option_t, diff --git a/src/ndr.rs b/src/ndr.rs index 0ccc853..3e34358 100644 --- a/src/ndr.rs +++ b/src/ndr.rs @@ -14,6 +14,6 @@ pub struct NDR_record_t { reserved32: libc::c_uchar, } -extern "C" { +unsafe extern "C" { pub static NDR_record: NDR_record_t; } diff --git a/src/port.rs b/src/port.rs index e297622..bf128cc 100644 --- a/src/port.rs +++ b/src/port.rs @@ -1,6 +1,6 @@ //! This module corresponds to `mach/port.h` -use vm_types::{integer_t, natural_t}; +use crate::vm_types::{integer_t, natural_t}; pub type mach_port_name_t = natural_t; @@ -10,7 +10,7 @@ pub struct ipc_port; pub type ipc_port_t = *mut ipc_port; -pub type mach_port_t = ::libc::c_uint; +pub type mach_port_t = libc::c_uint; pub type mach_port_array_t = *mut mach_port_t; pub const MACH_PORT_NULL: mach_port_t = 0; diff --git a/src/semaphore.rs b/src/semaphore.rs index fb36a7b..f7eb122 100644 --- a/src/semaphore.rs +++ b/src/semaphore.rs @@ -1,11 +1,11 @@ //! This module corresponds to `mach/semaphore.h` -use clock_types::mach_timespec_t; -use kern_return::kern_return_t; -use mach_types::{semaphore_t, task_t}; -use sync_policy::sync_policy_t; +use crate::clock_types::mach_timespec_t; +use crate::kern_return::kern_return_t; +use crate::mach_types::{semaphore_t, task_t}; +use crate::sync_policy::sync_policy_t; -extern "C" { +unsafe extern "C" { pub fn semaphore_create( task: task_t, semaphore: *mut semaphore_t, diff --git a/src/structs.rs b/src/structs.rs index 2f93ea1..4fedb25 100644 --- a/src/structs.rs +++ b/src/structs.rs @@ -1,7 +1,6 @@ //! This module corresponds to `mach/i386/_structs.h` and `mach/arm/_structs.h`. -use mem; -use message::mach_msg_type_number_t; +use crate::message::mach_msg_type_number_t; #[cfg(target_arch = "aarch64")] #[repr(C)] @@ -23,7 +22,8 @@ impl arm_thread_state64_t { } pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + (core::mem::size_of::() / core::mem::size_of::()) + as mach_msg_type_number_t } } @@ -61,6 +61,7 @@ impl x86_thread_state64_t { } pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + (core::mem::size_of::() / core::mem::size_of::()) + as mach_msg_type_number_t } } diff --git a/src/task.rs b/src/task.rs index be7c215..a5aaa0e 100644 --- a/src/task.rs +++ b/src/task.rs @@ -1,19 +1,19 @@ //! This module corresponds to `mach/task.defs`. -use kern_return::kern_return_t; -use mach_types::{task_name_t, task_t, thread_act_array_t}; -use message::mach_msg_type_number_t; -use port::{mach_port_array_t, mach_port_t}; -use task_info::{task_flavor_t, task_info_t}; +use crate::kern_return::kern_return_t; +use crate::mach_types::{task_name_t, task_t, thread_act_array_t}; +use crate::message::mach_msg_type_number_t; +use crate::port::{mach_port_array_t, mach_port_t}; +use crate::task_info::{task_flavor_t, task_info_t}; -pub type task_special_port_t = ::libc::c_int; +pub type task_special_port_t = libc::c_int; pub const TASK_KERNEL_PORT: task_special_port_t = 1; pub const TASK_HOST_PORT: task_special_port_t = 2; pub const TASK_NAME_PORT: task_special_port_t = 3; pub const TASK_BOOTSTRAP_PORT: task_special_port_t = 4; -extern "C" { +unsafe extern "C" { pub fn task_resume(target_task: task_t) -> kern_return_t; pub fn task_suspend(target_task: task_t) -> kern_return_t; pub fn task_get_special_port( diff --git a/src/task_info.rs b/src/task_info.rs index 47ed0eb..8b00f2b 100644 --- a/src/task_info.rs +++ b/src/task_info.rs @@ -1,49 +1,49 @@ //! This module roughly corresponds to `mach/task_info.h`. -use mem; -use message::{audit_token_t, security_token_t}; -use time_value::time_value_t; -use vm_statistics::{vm_extmod_statistics_data_t, vm_purgeable_info}; -use vm_types::{integer_t, mach_vm_address_t, mach_vm_size_t, natural_t, vm_size_t}; - -pub const TASK_INFO_MAX: ::libc::c_uint = 1024; -pub const TASK_BASIC_INFO_32: ::libc::c_uint = 4; -pub const TASK_BASIC2_INFO_32: ::libc::c_uint = 6; +use crate::message::{audit_token_t, security_token_t}; +use crate::time_value::time_value_t; +use crate::vm_statistics::{vm_extmod_statistics_data_t, vm_purgeable_info}; +use crate::vm_types::{integer_t, mach_vm_address_t, mach_vm_size_t, natural_t, vm_size_t}; +use core::mem; + +pub const TASK_INFO_MAX: libc::c_uint = 1024; +pub const TASK_BASIC_INFO_32: libc::c_uint = 4; +pub const TASK_BASIC2_INFO_32: libc::c_uint = 6; #[cfg(target_arch = "x86_64")] -pub const TASK_BASIC_INFO_64: ::libc::c_uint = 5; +pub const TASK_BASIC_INFO_64: libc::c_uint = 5; #[cfg(target_arch = "aarch64")] -pub const TASK_BASIC_INFO_64: ::libc::c_uint = 18; +pub const TASK_BASIC_INFO_64: libc::c_uint = 18; #[cfg(target_arch = "x86_64")] -pub const TASK_BASIC_INFO: ::libc::c_uint = 5; +pub const TASK_BASIC_INFO: libc::c_uint = 5; #[cfg(target_arch = "aarch64")] -pub const TASK_BASIC_INFO: ::libc::c_uint = 18; +pub const TASK_BASIC_INFO: libc::c_uint = 18; #[cfg(target_arch = "x86")] -pub const TASK_BASIC_INFO: ::libc::c_uint = 4; -pub const TASK_EVENTS_INFO: ::libc::c_uint = 2; -pub const TASK_THREAD_TIMES_INFO: ::libc::c_uint = 3; -pub const TASK_ABSOLUTETIME_INFO: ::libc::c_uint = 1; -pub const TASK_KERNELMEMORY_INFO: ::libc::c_uint = 7; -pub const TASK_SECURITY_TOKEN: ::libc::c_uint = 13; -pub const TASK_AUDIT_TOKEN: ::libc::c_uint = 15; -pub const TASK_AFFINITY_TAG_INFO: ::libc::c_uint = 16; -pub const TASK_DYLD_INFO: ::libc::c_uint = 17; -pub const TASK_DYLD_ALL_IMAGE_INFO_32: ::libc::c_uint = 0; -pub const TASK_DYLD_ALL_IMAGE_INFO_64: ::libc::c_uint = 1; -pub const TASK_EXTMOD_INFO: ::libc::c_uint = 19; -pub const MACH_TASK_BASIC_INFO: ::libc::c_uint = 20; -pub const TASK_POWER_INFO: ::libc::c_uint = 21; -pub const TASK_VM_INFO: ::libc::c_uint = 22; -pub const TASK_VM_INFO_PURGEABLE: ::libc::c_uint = 23; -pub const TASK_TRACE_MEMORY_INFO: ::libc::c_uint = 24; -pub const TASK_WAIT_STATE_INFO: ::libc::c_uint = 25; -pub const TASK_POWER_INFO_V2: ::libc::c_uint = 26; -pub const TASK_VM_INFO_PURGEABLE_ACCOUNT: ::libc::c_uint = 27; -pub const TASK_FLAGS_INFO: ::libc::c_uint = 28; -pub const TASK_DEBUG_INFO_INTERNAL: ::libc::c_uint = 29; +pub const TASK_BASIC_INFO: libc::c_uint = 4; +pub const TASK_EVENTS_INFO: libc::c_uint = 2; +pub const TASK_THREAD_TIMES_INFO: libc::c_uint = 3; +pub const TASK_ABSOLUTETIME_INFO: libc::c_uint = 1; +pub const TASK_KERNELMEMORY_INFO: libc::c_uint = 7; +pub const TASK_SECURITY_TOKEN: libc::c_uint = 13; +pub const TASK_AUDIT_TOKEN: libc::c_uint = 15; +pub const TASK_AFFINITY_TAG_INFO: libc::c_uint = 16; +pub const TASK_DYLD_INFO: libc::c_uint = 17; +pub const TASK_DYLD_ALL_IMAGE_INFO_32: libc::c_uint = 0; +pub const TASK_DYLD_ALL_IMAGE_INFO_64: libc::c_uint = 1; +pub const TASK_EXTMOD_INFO: libc::c_uint = 19; +pub const MACH_TASK_BASIC_INFO: libc::c_uint = 20; +pub const TASK_POWER_INFO: libc::c_uint = 21; +pub const TASK_VM_INFO: libc::c_uint = 22; +pub const TASK_VM_INFO_PURGEABLE: libc::c_uint = 23; +pub const TASK_TRACE_MEMORY_INFO: libc::c_uint = 24; +pub const TASK_WAIT_STATE_INFO: libc::c_uint = 25; +pub const TASK_POWER_INFO_V2: libc::c_uint = 26; +pub const TASK_VM_INFO_PURGEABLE_ACCOUNT: libc::c_uint = 27; +pub const TASK_FLAGS_INFO: libc::c_uint = 28; +pub const TASK_DEBUG_INFO_INTERNAL: libc::c_uint = 29; pub type task_flavor_t = natural_t; pub type task_info_t = *mut integer_t; -pub type policy_t = ::libc::c_int; +pub type policy_t = libc::c_int; #[repr(C, packed(4))] #[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] @@ -166,7 +166,7 @@ pub const TASK_DYLD_INFO_COUNT: u32 = #[repr(C, packed(4))] #[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] pub struct task_extmod_info { - pub task_uuid: [::libc::c_uchar; 16usize], + pub task_uuid: [libc::c_uchar; 16usize], pub extmod_statistics: vm_extmod_statistics_data_t, } diff --git a/src/thread_act.rs b/src/thread_act.rs index b74d8b4..c7378a4 100644 --- a/src/thread_act.rs +++ b/src/thread_act.rs @@ -1,13 +1,13 @@ //! This module corresponds to `mach/thread_act.defs`. -use exception_types::{exception_behavior_t, exception_mask_t}; -use kern_return::kern_return_t; -use mach_types::{thread_act_t, thread_port_t}; -use message::mach_msg_type_number_t; -use port::mach_port_t; -use thread_status::{thread_state_flavor_t, thread_state_t}; +use crate::exception_types::{exception_behavior_t, exception_mask_t}; +use crate::kern_return::kern_return_t; +use crate::mach_types::{thread_act_t, thread_port_t}; +use crate::message::mach_msg_type_number_t; +use crate::port::mach_port_t; +use crate::thread_status::{thread_state_flavor_t, thread_state_t}; -extern "C" { +unsafe extern "C" { pub fn thread_get_state( target_act: thread_act_t, flavor: thread_state_flavor_t, diff --git a/src/thread_policy.rs b/src/thread_policy.rs index aa17e6e..7cec385 100644 --- a/src/thread_policy.rs +++ b/src/thread_policy.rs @@ -1,11 +1,11 @@ //! This module corresponds to `mach/thread_policy.h`. -use boolean::boolean_t; -use kern_return::kern_return_t; +use crate::boolean::boolean_t; +use crate::kern_return::kern_return_t; +use crate::mach_types::thread_t; +use crate::message::mach_msg_type_number_t; +use crate::vm_types::{integer_t, natural_t}; use libc::thread_policy_t; -use mach_types::thread_t; -use message::mach_msg_type_number_t; -use vm_types::{integer_t, natural_t}; pub type thread_policy_flavor_t = natural_t; @@ -101,16 +101,14 @@ pub const THREAD_LATENCY_QOS_POLICY_COUNT: mach_msg_type_number_t = pub const THREAD_THROUGHPUT_QOS_POLICY_COUNT: mach_msg_type_number_t = (core::mem::size_of::() / core::mem::size_of::()) as _; -extern "C" { +unsafe extern "C" { pub fn thread_policy_set( thread: thread_t, flavor: thread_policy_flavor_t, policy_info: thread_policy_t, count: mach_msg_type_number_t, ) -> kern_return_t; -} -extern "C" { pub fn thread_policy_get( thread: thread_t, flavor: thread_policy_flavor_t, diff --git a/src/thread_status.rs b/src/thread_status.rs index ad9d69a..5669ff8 100644 --- a/src/thread_status.rs +++ b/src/thread_status.rs @@ -1,9 +1,9 @@ //! This module corresponds to `mach/thread_status.h`. -use vm_types::natural_t; +use crate::vm_types::natural_t; pub type thread_state_t = *mut natural_t; -pub type thread_state_flavor_t = ::libc::c_int; +pub type thread_state_flavor_t = libc::c_int; #[cfg(target_arch = "aarch64")] mod aarch64 { diff --git a/src/time_value.rs b/src/time_value.rs index 1b38a78..480cb0b 100644 --- a/src/time_value.rs +++ b/src/time_value.rs @@ -1,4 +1,4 @@ -use vm_types::integer_t; +use crate::vm_types::integer_t; #[repr(C)] #[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] diff --git a/src/traps.rs b/src/traps.rs index 1d3bb93..491f302 100644 --- a/src/traps.rs +++ b/src/traps.rs @@ -1,30 +1,30 @@ //! This module corresponds to `mach/mach_traps.h`. -use kern_return::kern_return_t; -use port::{mach_port_name_t, mach_port_t}; +use crate::kern_return::kern_return_t; +use crate::port::{mach_port_name_t, mach_port_t}; -extern "C" { +unsafe extern "C" { static mach_task_self_: mach_port_t; pub fn task_for_pid( target_tport: mach_port_name_t, - pid: ::libc::c_int, + pid: libc::c_int, tn: *mut mach_port_name_t, ) -> kern_return_t; } #[allow(clippy::missing_safety_doc)] // FIXME pub unsafe fn mach_task_self() -> mach_port_t { - mach_task_self_ + unsafe { mach_task_self_ } } #[allow(clippy::missing_safety_doc)] // FIXME pub unsafe fn current_task() -> mach_port_t { - mach_task_self() + unsafe { mach_task_self() } } #[cfg(test)] mod tests { - use port::*; - use traps::*; + use crate::port::*; + use crate::traps::*; #[test] fn mach_task_self_sanity() { diff --git a/src/vm.rs b/src/vm.rs index d0bf6f2..eb06fcb 100644 --- a/src/vm.rs +++ b/src/vm.rs @@ -1,33 +1,33 @@ //! This module roughly corresponds to `mach/mach_vm.defs`. -use boolean::boolean_t; -use kern_return::kern_return_t; -use mach_types::{mem_entry_name_port_t, vm_task_entry_t}; -use memory_object_types::{memory_object_offset_t, memory_object_size_t}; -use message::mach_msg_type_number_t; -use port::mach_port_t; -use vm_attributes::{vm_machine_attribute_t, vm_machine_attribute_val_t}; -use vm_behavior::vm_behavior_t; -use vm_inherit::vm_inherit_t; -use vm_prot::vm_prot_t; -use vm_purgable::vm_purgable_t; -use vm_region::mach_vm_read_entry_t; -use vm_region::{ +use crate::boolean::boolean_t; +use crate::kern_return::kern_return_t; +use crate::mach_types::{mem_entry_name_port_t, vm_task_entry_t}; +use crate::memory_object_types::{memory_object_offset_t, memory_object_size_t}; +use crate::message::mach_msg_type_number_t; +use crate::port::mach_port_t; +use crate::vm_attributes::{vm_machine_attribute_t, vm_machine_attribute_val_t}; +use crate::vm_behavior::vm_behavior_t; +use crate::vm_inherit::vm_inherit_t; +use crate::vm_prot::vm_prot_t; +use crate::vm_purgable::vm_purgable_t; +use crate::vm_region::mach_vm_read_entry_t; +use crate::vm_region::{ vm_page_info_flavor_t, vm_page_info_t, vm_region_flavor_t, vm_region_info_t, vm_region_recurse_info_t, }; -use vm_sync::vm_sync_t; -use vm_types::{ +use crate::vm_sync::vm_sync_t; +use crate::vm_types::{ integer_t, mach_vm_address_t, mach_vm_offset_t, mach_vm_size_t, natural_t, vm_map_t, vm_offset_t, vm_size_t, }; -extern "C" { +unsafe extern "C" { pub fn mach_vm_allocate( target: vm_task_entry_t, address: *mut mach_vm_address_t, size: mach_vm_size_t, - flags: ::libc::c_int, + flags: libc::c_int, ) -> kern_return_t; pub fn mach_vm_deallocate( @@ -107,7 +107,7 @@ extern "C" { inout: *mut mach_vm_address_t, size: mach_vm_size_t, mask: mach_vm_offset_t, - flags: ::libc::c_int, + flags: libc::c_int, object: mem_entry_name_port_t, offset: memory_object_offset_t, copy: boolean_t, @@ -129,7 +129,7 @@ extern "C" { target_address: *mut mach_vm_address_t, size: mach_vm_size_t, mask: mach_vm_offset_t, - flags: ::libc::c_int, + flags: libc::c_int, src_task: vm_task_entry_t, src_address: mach_vm_address_t, copy: boolean_t, @@ -186,7 +186,7 @@ extern "C" { target_task: vm_task_entry_t, address: mach_vm_address_t, control: vm_purgable_t, - state: *mut ::libc::c_int, + state: *mut libc::c_int, ) -> kern_return_t; pub fn mach_vm_page_info( @@ -201,9 +201,9 @@ extern "C" { #[cfg(test)] mod tests { use super::*; - use kern_return::KERN_SUCCESS; - use traps::mach_task_self; - use vm_statistics::VM_FLAGS_ANYWHERE; + use crate::kern_return::KERN_SUCCESS; + use crate::traps::mach_task_self; + use crate::vm_statistics::VM_FLAGS_ANYWHERE; #[test] fn mach_vm_allocate_sanity() { @@ -222,9 +222,9 @@ mod tests { #[test] fn mach_vm_region_sanity() { - use mem; - use vm_prot::{VM_PROT_EXECUTE, VM_PROT_READ}; - use vm_region::{vm_region_basic_info_64, VM_REGION_BASIC_INFO_64}; + use crate::vm_prot::{VM_PROT_EXECUTE, VM_PROT_READ}; + use crate::vm_region::{VM_REGION_BASIC_INFO_64, vm_region_basic_info_64}; + use core::mem; unsafe { let mut size = 0x10; let mut object_name = 0; diff --git a/src/vm_attributes.rs b/src/vm_attributes.rs index ba3b0d3..14b770e 100644 --- a/src/vm_attributes.rs +++ b/src/vm_attributes.rs @@ -1,12 +1,12 @@ //! This module corresponds to `mach/vm_attributes.h`. -pub type vm_machine_attribute_t = ::libc::c_uint; +pub type vm_machine_attribute_t = libc::c_uint; pub const MATTR_CACHE: vm_machine_attribute_t = 1; pub const MATTR_MIGRATE: vm_machine_attribute_t = 1 << 1; pub const MATTR_REPLICATE: vm_machine_attribute_t = 1 << 2; -pub type vm_machine_attribute_val_t = ::libc::c_int; +pub type vm_machine_attribute_val_t = libc::c_int; pub const MATTR_VAL_OFF: vm_machine_attribute_val_t = 0; pub const MATTR_VAL_ON: vm_machine_attribute_val_t = 1; diff --git a/src/vm_behavior.rs b/src/vm_behavior.rs index 8ab692e..454e921 100644 --- a/src/vm_behavior.rs +++ b/src/vm_behavior.rs @@ -1,6 +1,6 @@ //! This module corresponds to `mach/vm_behavior.h`. -pub type vm_behavior_t = ::libc::c_int; +pub type vm_behavior_t = libc::c_int; pub const VM_BEHAVIOR_DEFAULT: vm_behavior_t = 0; pub const VM_BEHAVIOR_RANDOM: vm_behavior_t = 1; diff --git a/src/vm_inherit.rs b/src/vm_inherit.rs index 4f4c9e5..361d802 100644 --- a/src/vm_inherit.rs +++ b/src/vm_inherit.rs @@ -1,6 +1,6 @@ //! This module corresponds to `mach/vm_inherit.h`. -pub type vm_inherit_t = ::libc::c_uint; +pub type vm_inherit_t = libc::c_uint; pub const VM_INHERIT_SHARE: vm_inherit_t = 0; pub const VM_INHERIT_COPY: vm_inherit_t = 1; diff --git a/src/vm_page_size.rs b/src/vm_page_size.rs index f1ab37f..21ce087 100644 --- a/src/vm_page_size.rs +++ b/src/vm_page_size.rs @@ -1,27 +1,27 @@ //! This module roughly corresponds to `mach/vm_page_size.h` -use vm_types::{mach_vm_offset_t, mach_vm_size_t, vm_size_t}; +use crate::vm_types::{mach_vm_offset_t, mach_vm_size_t, vm_size_t}; -extern "C" { +unsafe extern "C" { pub static vm_page_size: vm_size_t; pub static vm_page_mask: vm_size_t; - pub static vm_page_shift: ::libc::c_int; + pub static vm_page_shift: libc::c_int; } #[allow(clippy::missing_safety_doc)] // FIXME pub unsafe fn mach_vm_trunc_page(x: mach_vm_offset_t) -> mach_vm_offset_t { - x & !(vm_page_mask as mach_vm_size_t) + unsafe { x & !(vm_page_mask as mach_vm_size_t) } } #[allow(clippy::missing_safety_doc)] // FIXME pub unsafe fn mach_vm_round_page(x: mach_vm_offset_t) -> mach_vm_offset_t { - (x + vm_page_mask as mach_vm_size_t) & !(vm_page_mask as mach_vm_size_t) + unsafe { (x + vm_page_mask as mach_vm_size_t) & !(vm_page_mask as mach_vm_size_t) } } #[cfg(test)] mod tests { - use vm_page_size::*; - use vm_types::mach_vm_size_t; + use crate::vm_page_size::*; + use crate::vm_types::mach_vm_size_t; #[test] fn page_size() { diff --git a/src/vm_prot.rs b/src/vm_prot.rs index 0397d25..dfa693f 100644 --- a/src/vm_prot.rs +++ b/src/vm_prot.rs @@ -1,6 +1,6 @@ //! This module corresponds to `mach/vm_prot.h`. -pub type vm_prot_t = ::libc::c_int; +pub type vm_prot_t = libc::c_int; pub const VM_PROT_NONE: vm_prot_t = 0; pub const VM_PROT_READ: vm_prot_t = 1; diff --git a/src/vm_purgable.rs b/src/vm_purgable.rs index 79fc297..e550658 100644 --- a/src/vm_purgable.rs +++ b/src/vm_purgable.rs @@ -1,42 +1,42 @@ //! This module corresponds to `mach/vm_purgable.h`. -pub type vm_purgable_t = ::libc::c_int; +pub type vm_purgable_t = libc::c_int; pub const VM_PURGABLE_SET_STATE: vm_purgable_t = 0; pub const VM_PURGABLE_GET_STATE: vm_purgable_t = 1; -pub const VM_VOLATILE_GROUP_SHIFT: ::libc::c_int = 8; -pub const VM_VOLATILE_GROUP_MASK: ::libc::c_int = 7 << VM_VOLATILE_GROUP_SHIFT; -pub const VM_VOLATILE_GROUP_DEFAULT: ::libc::c_int = VM_VOLATILE_GROUP_0; - -pub const VM_VOLATILE_GROUP_0: ::libc::c_int = 0 << VM_VOLATILE_GROUP_SHIFT; -pub const VM_VOLATILE_GROUP_1: ::libc::c_int = 1 << VM_VOLATILE_GROUP_SHIFT; -pub const VM_VOLATILE_GROUP_2: ::libc::c_int = 2 << VM_VOLATILE_GROUP_SHIFT; -pub const VM_VOLATILE_GROUP_3: ::libc::c_int = 3 << VM_VOLATILE_GROUP_SHIFT; -pub const VM_VOLATILE_GROUP_4: ::libc::c_int = 4 << VM_VOLATILE_GROUP_SHIFT; -pub const VM_VOLATILE_GROUP_5: ::libc::c_int = 5 << VM_VOLATILE_GROUP_SHIFT; -pub const VM_VOLATILE_GROUP_6: ::libc::c_int = 6 << VM_VOLATILE_GROUP_SHIFT; -pub const VM_VOLATILE_GROUP_7: ::libc::c_int = 7 << VM_VOLATILE_GROUP_SHIFT; - -pub const VM_PURGABLE_BEHAVIOR_SHIFT: ::libc::c_int = 6; -pub const VM_PURGABLE_BEHAVIOR_MASK: ::libc::c_int = 1 << VM_PURGABLE_BEHAVIOR_SHIFT; -pub const VM_PURGABLE_BEHAVIOR_FIFO: ::libc::c_int = 0 << VM_PURGABLE_BEHAVIOR_SHIFT; -pub const VM_PURGABLE_BEHAVIOR_LIFO: ::libc::c_int = 1 << VM_PURGABLE_BEHAVIOR_SHIFT; - -pub const VM_PURGABLE_ORDERING_SHIFT: ::libc::c_int = 5; -pub const VM_PURGABLE_ORDERING_MASK: ::libc::c_int = 1 << VM_PURGABLE_ORDERING_SHIFT; -pub const VM_PURGABLE_ORDERING_OBSOLETE: ::libc::c_int = 1 << VM_PURGABLE_ORDERING_SHIFT; -pub const VM_PURGABLE_ORDERING_NORMAL: ::libc::c_int = 0 << VM_PURGABLE_ORDERING_SHIFT; - -pub const VM_VOLATILE_ORDER_SHIFT: ::libc::c_int = 4; -pub const VM_VOLATILE_ORDER_MASK: ::libc::c_int = 1 << VM_VOLATILE_ORDER_SHIFT; -pub const VM_VOLATILE_MAKE_FIRST_IN_GROUP: ::libc::c_int = 1 << VM_VOLATILE_ORDER_SHIFT; -pub const VM_VOLATILE_MAKE_LAST_IN_GROUP: ::libc::c_int = 0 << VM_VOLATILE_ORDER_SHIFT; - -pub const VM_PURGABLE_STATE_MIN: ::libc::c_int = 0; -pub const VM_PURGABLE_STATE_MAX: ::libc::c_int = 3; -pub const VM_PURGABLE_STATE_MASK: ::libc::c_int = 3; -pub const VM_PURGABLE_NONVOLATILE: ::libc::c_int = 0; -pub const VM_PURGABLE_VOLATILE: ::libc::c_int = 1; -pub const VM_PURGABLE_EMPTY: ::libc::c_int = 2; -pub const VM_PURGABLE_DENY: ::libc::c_int = 3; +pub const VM_VOLATILE_GROUP_SHIFT: libc::c_int = 8; +pub const VM_VOLATILE_GROUP_MASK: libc::c_int = 7 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_DEFAULT: libc::c_int = VM_VOLATILE_GROUP_0; + +pub const VM_VOLATILE_GROUP_0: libc::c_int = 0 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_1: libc::c_int = 1 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_2: libc::c_int = 2 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_3: libc::c_int = 3 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_4: libc::c_int = 4 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_5: libc::c_int = 5 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_6: libc::c_int = 6 << VM_VOLATILE_GROUP_SHIFT; +pub const VM_VOLATILE_GROUP_7: libc::c_int = 7 << VM_VOLATILE_GROUP_SHIFT; + +pub const VM_PURGABLE_BEHAVIOR_SHIFT: libc::c_int = 6; +pub const VM_PURGABLE_BEHAVIOR_MASK: libc::c_int = 1 << VM_PURGABLE_BEHAVIOR_SHIFT; +pub const VM_PURGABLE_BEHAVIOR_FIFO: libc::c_int = 0 << VM_PURGABLE_BEHAVIOR_SHIFT; +pub const VM_PURGABLE_BEHAVIOR_LIFO: libc::c_int = 1 << VM_PURGABLE_BEHAVIOR_SHIFT; + +pub const VM_PURGABLE_ORDERING_SHIFT: libc::c_int = 5; +pub const VM_PURGABLE_ORDERING_MASK: libc::c_int = 1 << VM_PURGABLE_ORDERING_SHIFT; +pub const VM_PURGABLE_ORDERING_OBSOLETE: libc::c_int = 1 << VM_PURGABLE_ORDERING_SHIFT; +pub const VM_PURGABLE_ORDERING_NORMAL: libc::c_int = 0 << VM_PURGABLE_ORDERING_SHIFT; + +pub const VM_VOLATILE_ORDER_SHIFT: libc::c_int = 4; +pub const VM_VOLATILE_ORDER_MASK: libc::c_int = 1 << VM_VOLATILE_ORDER_SHIFT; +pub const VM_VOLATILE_MAKE_FIRST_IN_GROUP: libc::c_int = 1 << VM_VOLATILE_ORDER_SHIFT; +pub const VM_VOLATILE_MAKE_LAST_IN_GROUP: libc::c_int = 0 << VM_VOLATILE_ORDER_SHIFT; + +pub const VM_PURGABLE_STATE_MIN: libc::c_int = 0; +pub const VM_PURGABLE_STATE_MAX: libc::c_int = 3; +pub const VM_PURGABLE_STATE_MASK: libc::c_int = 3; +pub const VM_PURGABLE_NONVOLATILE: libc::c_int = 0; +pub const VM_PURGABLE_VOLATILE: libc::c_int = 1; +pub const VM_PURGABLE_EMPTY: libc::c_int = 2; +pub const VM_PURGABLE_DENY: libc::c_int = 3; diff --git a/src/vm_region.rs b/src/vm_region.rs index b88b59f..cc12761 100644 --- a/src/vm_region.rs +++ b/src/vm_region.rs @@ -1,22 +1,22 @@ //! This module roughly corresponds to `mach/vm_region.h`. -use boolean::boolean_t; -use mem; -use memory_object_types::{memory_object_offset_t, vm_object_id_t}; -use message::mach_msg_type_number_t; -use vm_behavior::vm_behavior_t; -use vm_inherit::vm_inherit_t; -use vm_prot::vm_prot_t; -use vm_types::{mach_vm_address_t, mach_vm_size_t}; +use crate::boolean::boolean_t; +use crate::memory_object_types::{memory_object_offset_t, vm_object_id_t}; +use crate::message::mach_msg_type_number_t; +use crate::vm_behavior::vm_behavior_t; +use crate::vm_inherit::vm_inherit_t; +use crate::vm_prot::vm_prot_t; +use crate::vm_types::{mach_vm_address_t, mach_vm_size_t}; +use core::mem; pub type vm32_object_id_t = u32; -pub type vm_region_info_t = *mut ::libc::c_int; -pub type vm_region_info_64_t = *mut ::libc::c_int; -pub type vm_region_recurse_info_t = *mut ::libc::c_int; -pub type vm_region_recurse_info_64_t = *mut ::libc::c_int; -pub type vm_region_flavor_t = ::libc::c_int; -pub type vm_region_info_data_t = [::libc::c_int; VM_REGION_INFO_MAX as usize]; +pub type vm_region_info_t = *mut libc::c_int; +pub type vm_region_info_64_t = *mut libc::c_int; +pub type vm_region_recurse_info_t = *mut libc::c_int; +pub type vm_region_recurse_info_64_t = *mut libc::c_int; +pub type vm_region_flavor_t = libc::c_int; +pub type vm_region_info_data_t = [libc::c_int; VM_REGION_INFO_MAX as usize]; pub type vm_region_basic_info_64_t = *mut vm_region_basic_info_64; pub type vm_region_basic_info_data_64_t = vm_region_basic_info_64; @@ -32,14 +32,14 @@ pub type vm_region_submap_info_64_t = *mut vm_region_submap_info_64; pub type vm_region_submap_info_data_64_t = vm_region_submap_info_64; pub type vm_region_submap_short_info_64_t = *mut vm_region_submap_short_info_64; pub type vm_region_submap_short_info_data_64_t = vm_region_submap_short_info_64; -pub type vm_page_info_t = *mut ::libc::c_int; -pub type vm_page_info_flavor_t = ::libc::c_int; +pub type vm_page_info_t = *mut libc::c_int; +pub type vm_page_info_flavor_t = libc::c_int; pub type vm_page_info_basic_t = *mut vm_page_info_basic; pub type vm_page_info_basic_data_t = vm_page_info_basic; pub type mach_vm_read_entry_t = [mach_vm_read_entry; VM_MAP_ENTRY_MAX as usize]; -pub const VM_REGION_INFO_MAX: ::libc::c_int = 1 << 10; -pub const VM_MAP_ENTRY_MAX: ::libc::c_int = 1 << 8; +pub const VM_REGION_INFO_MAX: libc::c_int = 1 << 10; +pub const VM_MAP_ENTRY_MAX: libc::c_int = 1 << 8; pub const VM_PAGE_INFO_BASIC: vm_page_info_flavor_t = 1; @@ -48,13 +48,13 @@ pub const VM_REGION_BASIC_INFO: vm_region_flavor_t = 10; pub const VM_REGION_EXTENDED_INFO: vm_region_flavor_t = 13; pub const VM_REGION_TOP_INFO: vm_region_flavor_t = 12; -pub const SM_COW: ::libc::c_uchar = 1; -pub const SM_PRIVATE: ::libc::c_uchar = 2; -pub const SM_EMPTY: ::libc::c_uchar = 3; -pub const SM_SHARED: ::libc::c_uchar = 4; -pub const SM_TRUESHARED: ::libc::c_uchar = 5; -pub const SM_PRIVATE_ALIASED: ::libc::c_uchar = 6; -pub const SM_SHARED_ALIASED: ::libc::c_uchar = 7; +pub const SM_COW: libc::c_uchar = 1; +pub const SM_PRIVATE: libc::c_uchar = 2; +pub const SM_EMPTY: libc::c_uchar = 3; +pub const SM_SHARED: libc::c_uchar = 4; +pub const SM_TRUESHARED: libc::c_uchar = 5; +pub const SM_PRIVATE_ALIASED: libc::c_uchar = 6; +pub const SM_SHARED_ALIASED: libc::c_uchar = 7; #[repr(C, packed(4))] #[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] @@ -66,12 +66,12 @@ pub struct vm_region_basic_info_64 { pub reserved: boolean_t, pub offset: memory_object_offset_t, pub behavior: vm_behavior_t, - pub user_wired_count: ::libc::c_ushort, + pub user_wired_count: libc::c_ushort, } impl vm_region_basic_info_64 { pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + (mem::size_of::() / mem::size_of::()) as mach_msg_type_number_t } } @@ -85,12 +85,12 @@ pub struct vm_region_basic_info { pub reserved: boolean_t, pub offset: u32, pub behavior: vm_behavior_t, - pub user_wired_count: ::libc::c_ushort, + pub user_wired_count: libc::c_ushort, } impl vm_region_basic_info { pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + (mem::size_of::() / mem::size_of::()) as mach_msg_type_number_t } } @@ -98,37 +98,37 @@ impl vm_region_basic_info { #[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] pub struct vm_region_extended_info { pub protection: vm_prot_t, - pub user_tag: ::libc::c_uint, - pub pages_resident: ::libc::c_uint, - pub pages_shared_now_private: ::libc::c_uint, - pub pages_swapped_out: ::libc::c_uint, - pub pages_dirtied: ::libc::c_uint, - pub ref_count: ::libc::c_uint, - pub shadow_depth: ::libc::c_ushort, - pub external_pager: ::libc::c_uchar, - pub share_mode: ::libc::c_uchar, - pub pages_reusable: ::libc::c_uint, + pub user_tag: libc::c_uint, + pub pages_resident: libc::c_uint, + pub pages_shared_now_private: libc::c_uint, + pub pages_swapped_out: libc::c_uint, + pub pages_dirtied: libc::c_uint, + pub ref_count: libc::c_uint, + pub shadow_depth: libc::c_ushort, + pub external_pager: libc::c_uchar, + pub share_mode: libc::c_uchar, + pub pages_reusable: libc::c_uint, } impl vm_region_extended_info { pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + (mem::size_of::() / mem::size_of::()) as mach_msg_type_number_t } } #[repr(C)] #[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] pub struct vm_region_top_info { - pub obj_id: ::libc::c_uint, - pub ref_count: ::libc::c_uint, - pub private_pages_resident: ::libc::c_uint, - pub shared_pages_resident: ::libc::c_uint, - pub share_mode: ::libc::c_uchar, + pub obj_id: libc::c_uint, + pub ref_count: libc::c_uint, + pub private_pages_resident: libc::c_uint, + pub shared_pages_resident: libc::c_uint, + pub share_mode: libc::c_uchar, } impl vm_region_top_info { pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + (mem::size_of::() / mem::size_of::()) as mach_msg_type_number_t } } @@ -139,24 +139,24 @@ pub struct vm_region_submap_info { pub max_protection: vm_prot_t, pub inheritance: vm_inherit_t, pub offset: u32, - pub user_tag: ::libc::c_uint, - pub pages_resident: ::libc::c_uint, - pub pages_shared_now_private: ::libc::c_uint, - pub pages_swapped_out: ::libc::c_uint, - pub pages_dirtied: ::libc::c_uint, - pub ref_count: ::libc::c_uint, - pub shadow_depth: ::libc::c_ushort, - pub external_pager: ::libc::c_uchar, - pub share_mode: ::libc::c_uchar, + pub user_tag: libc::c_uint, + pub pages_resident: libc::c_uint, + pub pages_shared_now_private: libc::c_uint, + pub pages_swapped_out: libc::c_uint, + pub pages_dirtied: libc::c_uint, + pub ref_count: libc::c_uint, + pub shadow_depth: libc::c_ushort, + pub external_pager: libc::c_uchar, + pub share_mode: libc::c_uchar, pub is_submap: boolean_t, pub behavior: vm_behavior_t, pub object_id: vm32_object_id_t, - pub user_wired_count: ::libc::c_ushort, + pub user_wired_count: libc::c_ushort, } impl vm_region_submap_info { pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + (mem::size_of::() / mem::size_of::()) as mach_msg_type_number_t } } @@ -167,25 +167,25 @@ pub struct vm_region_submap_info_64 { pub max_protection: vm_prot_t, pub inheritance: vm_inherit_t, pub offset: memory_object_offset_t, - pub user_tag: ::libc::c_uint, - pub pages_resident: ::libc::c_uint, - pub pages_shared_now_private: ::libc::c_uint, - pub pages_swapped_out: ::libc::c_uint, - pub pages_dirtied: ::libc::c_uint, - pub ref_count: ::libc::c_uint, - pub shadow_depth: ::libc::c_ushort, - pub external_pager: ::libc::c_uchar, - pub share_mode: ::libc::c_uchar, + pub user_tag: libc::c_uint, + pub pages_resident: libc::c_uint, + pub pages_shared_now_private: libc::c_uint, + pub pages_swapped_out: libc::c_uint, + pub pages_dirtied: libc::c_uint, + pub ref_count: libc::c_uint, + pub shadow_depth: libc::c_ushort, + pub external_pager: libc::c_uchar, + pub share_mode: libc::c_uchar, pub is_submap: boolean_t, pub behavior: vm_behavior_t, pub object_id: vm32_object_id_t, - pub user_wired_count: ::libc::c_ushort, - pub pages_reusable: ::libc::c_uint, + pub user_wired_count: libc::c_ushort, + pub pages_reusable: libc::c_uint, } impl vm_region_submap_info_64 { pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + (mem::size_of::() / mem::size_of::()) as mach_msg_type_number_t } } @@ -196,37 +196,37 @@ pub struct vm_region_submap_short_info_64 { pub max_protection: vm_prot_t, pub inheritance: vm_inherit_t, pub offset: memory_object_offset_t, - pub user_tag: ::libc::c_uint, - pub ref_count: ::libc::c_uint, - pub shadow_depth: ::libc::c_ushort, - pub external_pager: ::libc::c_uchar, - pub share_mode: ::libc::c_uchar, + pub user_tag: libc::c_uint, + pub ref_count: libc::c_uint, + pub shadow_depth: libc::c_ushort, + pub external_pager: libc::c_uchar, + pub share_mode: libc::c_uchar, pub is_submap: boolean_t, pub behavior: vm_behavior_t, pub object_id: vm32_object_id_t, - pub user_wired_count: ::libc::c_ushort, + pub user_wired_count: libc::c_ushort, } impl vm_region_submap_short_info_64 { pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + (mem::size_of::() / mem::size_of::()) as mach_msg_type_number_t } } #[repr(C)] #[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)] pub struct vm_page_info_basic { - pub disposition: ::libc::c_int, - pub ref_count: ::libc::c_int, + pub disposition: libc::c_int, + pub ref_count: libc::c_int, pub object_id: vm_object_id_t, pub offset: memory_object_offset_t, - pub depth: ::libc::c_int, - pub __pad: ::libc::c_int, + pub depth: libc::c_int, + pub __pad: libc::c_int, } impl vm_page_info_basic { pub fn count() -> mach_msg_type_number_t { - (mem::size_of::() / mem::size_of::<::libc::c_int>()) as mach_msg_type_number_t + (mem::size_of::() / mem::size_of::()) as mach_msg_type_number_t } } diff --git a/src/vm_statistics.rs b/src/vm_statistics.rs index 60a4626..67b137d 100644 --- a/src/vm_statistics.rs +++ b/src/vm_statistics.rs @@ -1,6 +1,6 @@ //! This module roughly corresponds to `mach/vm_statistics.h` -use vm_types::{integer_t, natural_t}; +use crate::vm_types::{integer_t, natural_t}; pub type vm_statistics_t = *mut vm_statistics; pub type vm_statistics_data_t = vm_statistics; @@ -24,46 +24,46 @@ pub const VM_PAGE_QUERY_PAGE_CS_TAINTED: integer_t = 1 << 9; pub const VM_PAGE_QUERY_PAGE_CS_NX: integer_t = 1 << 10; pub const VM_PAGE_QUERY_PAGE_REUSABLE: integer_t = 1 << 11; -pub const VM_MEMORY_MALLOC: ::libc::c_uint = 1; -pub const VM_MEMORY_MALLOC_SMALL: ::libc::c_uint = 2; -pub const VM_MEMORY_MALLOC_LARGE: ::libc::c_uint = 3; -pub const VM_MEMORY_MALLOC_HUGE: ::libc::c_uint = 4; -pub const VM_MEMORY_SBRK: ::libc::c_uint = 5; -pub const VM_MEMORY_ANALYSIS_TOOL: ::libc::c_uint = 10; -pub const VM_MEMORY_MACH_MSG: ::libc::c_uint = 20; -pub const VM_MEMORY_IOKIT: ::libc::c_uint = 21; -pub const VM_MEMORY_STACK: ::libc::c_uint = 30; -pub const VM_MEMORY_GUARD: ::libc::c_uint = 31; -pub const VM_MEMORY_SHARED_PMAP: ::libc::c_uint = 32; -pub const VM_MEMORY_DYLIB: ::libc::c_uint = 33; -pub const VM_MEMORY_APPKIT: ::libc::c_uint = 40; -pub const VM_MEMORY_FOUNDATION: ::libc::c_uint = 41; -pub const VM_MEMORY_COREGRAPHICS: ::libc::c_uint = 42; -pub const VM_MEMORY_CARBON: ::libc::c_uint = 43; -pub const VM_MEMORY_JAVA: ::libc::c_uint = 44; -pub const VM_MEMORY_ATS: ::libc::c_uint = 50; -pub const VM_MEMORY_DYLD: ::libc::c_uint = 60; -pub const VM_MEMORY_DYLD_MALLOC: ::libc::c_uint = 61; -pub const VM_MEMORY_APPLICATION_SPECIFIC_1: ::libc::c_uint = 240; -pub const VM_MEMORY_APPLICATION_SPECIFIC_16: ::libc::c_uint = 255; - -pub const VM_FLAGS_FIXED: ::libc::c_int = 0x0; -pub const VM_FLAGS_ANYWHERE: ::libc::c_int = 0x1; -pub const VM_FLAGS_PURGABLE: ::libc::c_int = 0x2; -pub const VM_FLAGS_4GB_CHUNK: ::libc::c_int = 0x4; -pub const VM_FLAGS_RANDOM_ADDR: ::libc::c_int = 0x8; -pub const VM_FLAGS_NO_CACHE: ::libc::c_int = 0x10; -pub const VM_FLAGS_RESILIENT_CODESIGN: ::libc::c_int = 0x20; -pub const VM_FLAGS_RESILIENT_MEDIA: ::libc::c_int = 0x40; -pub const VM_FLAGS_PERMANENT: ::libc::c_int = 0x80; -pub const VM_FLAGS_TPRO: ::libc::c_int = 0x1000; -pub const VM_FLAGS_OVERWRITE: ::libc::c_int = 0x4000; -pub const VM_FLAGS_SUPERPAGE_MASK: ::libc::c_int = 0x0007_0000; -pub const VM_FLAGS_RETURN_DATA_ADDR: ::libc::c_int = 0x0010_0000; -pub const VM_FLAGS_RETURN_4K_DATA_ADDR: ::libc::c_int = 0x0080_0000; -pub const VM_FLAGS_ALIAS_MASK: ::libc::c_int = -16_777_216; // 0xFF000000 - -pub const VM_FLAGS_USER_ALLOCATE: ::libc::c_int = VM_FLAGS_FIXED +pub const VM_MEMORY_MALLOC: libc::c_uint = 1; +pub const VM_MEMORY_MALLOC_SMALL: libc::c_uint = 2; +pub const VM_MEMORY_MALLOC_LARGE: libc::c_uint = 3; +pub const VM_MEMORY_MALLOC_HUGE: libc::c_uint = 4; +pub const VM_MEMORY_SBRK: libc::c_uint = 5; +pub const VM_MEMORY_ANALYSIS_TOOL: libc::c_uint = 10; +pub const VM_MEMORY_MACH_MSG: libc::c_uint = 20; +pub const VM_MEMORY_IOKIT: libc::c_uint = 21; +pub const VM_MEMORY_STACK: libc::c_uint = 30; +pub const VM_MEMORY_GUARD: libc::c_uint = 31; +pub const VM_MEMORY_SHARED_PMAP: libc::c_uint = 32; +pub const VM_MEMORY_DYLIB: libc::c_uint = 33; +pub const VM_MEMORY_APPKIT: libc::c_uint = 40; +pub const VM_MEMORY_FOUNDATION: libc::c_uint = 41; +pub const VM_MEMORY_COREGRAPHICS: libc::c_uint = 42; +pub const VM_MEMORY_CARBON: libc::c_uint = 43; +pub const VM_MEMORY_JAVA: libc::c_uint = 44; +pub const VM_MEMORY_ATS: libc::c_uint = 50; +pub const VM_MEMORY_DYLD: libc::c_uint = 60; +pub const VM_MEMORY_DYLD_MALLOC: libc::c_uint = 61; +pub const VM_MEMORY_APPLICATION_SPECIFIC_1: libc::c_uint = 240; +pub const VM_MEMORY_APPLICATION_SPECIFIC_16: libc::c_uint = 255; + +pub const VM_FLAGS_FIXED: libc::c_int = 0x0; +pub const VM_FLAGS_ANYWHERE: libc::c_int = 0x1; +pub const VM_FLAGS_PURGABLE: libc::c_int = 0x2; +pub const VM_FLAGS_4GB_CHUNK: libc::c_int = 0x4; +pub const VM_FLAGS_RANDOM_ADDR: libc::c_int = 0x8; +pub const VM_FLAGS_NO_CACHE: libc::c_int = 0x10; +pub const VM_FLAGS_RESILIENT_CODESIGN: libc::c_int = 0x20; +pub const VM_FLAGS_RESILIENT_MEDIA: libc::c_int = 0x40; +pub const VM_FLAGS_PERMANENT: libc::c_int = 0x80; +pub const VM_FLAGS_TPRO: libc::c_int = 0x1000; +pub const VM_FLAGS_OVERWRITE: libc::c_int = 0x4000; +pub const VM_FLAGS_SUPERPAGE_MASK: libc::c_int = 0x0007_0000; +pub const VM_FLAGS_RETURN_DATA_ADDR: libc::c_int = 0x0010_0000; +pub const VM_FLAGS_RETURN_4K_DATA_ADDR: libc::c_int = 0x0080_0000; +pub const VM_FLAGS_ALIAS_MASK: libc::c_int = -16_777_216; // 0xFF000000 + +pub const VM_FLAGS_USER_ALLOCATE: libc::c_int = VM_FLAGS_FIXED | VM_FLAGS_ANYWHERE | VM_FLAGS_PURGABLE | VM_FLAGS_4GB_CHUNK @@ -74,9 +74,9 @@ pub const VM_FLAGS_USER_ALLOCATE: ::libc::c_int = VM_FLAGS_FIXED | VM_FLAGS_SUPERPAGE_MASK | VM_FLAGS_TPRO | VM_FLAGS_ALIAS_MASK; -pub const VM_FLAGS_USER_MAP: ::libc::c_int = +pub const VM_FLAGS_USER_MAP: libc::c_int = VM_FLAGS_USER_ALLOCATE | VM_FLAGS_RETURN_4K_DATA_ADDR | VM_FLAGS_RETURN_DATA_ADDR; -pub const VM_FLAGS_USER_REMAP: ::libc::c_int = VM_FLAGS_FIXED +pub const VM_FLAGS_USER_REMAP: libc::c_int = VM_FLAGS_FIXED | VM_FLAGS_ANYWHERE | VM_FLAGS_RANDOM_ADDR | VM_FLAGS_OVERWRITE @@ -84,17 +84,15 @@ pub const VM_FLAGS_USER_REMAP: ::libc::c_int = VM_FLAGS_FIXED | VM_FLAGS_RESILIENT_CODESIGN | VM_FLAGS_RESILIENT_MEDIA; -pub const VM_FLAGS_SUPERPAGE_SHIFT: ::libc::c_int = 16; -pub const SUPERPAGE_NONE: ::libc::c_int = 0; -pub const SUPERPAGE_SIZE_ANY: ::libc::c_int = 1; -pub const VM_FLAGS_SUPERPAGE_NONE: ::libc::c_int = SUPERPAGE_NONE << VM_FLAGS_SUPERPAGE_SHIFT; -pub const VM_FLAGS_SUPERPAGE_SIZE_ANY: ::libc::c_int = - SUPERPAGE_SIZE_ANY << VM_FLAGS_SUPERPAGE_SHIFT; +pub const VM_FLAGS_SUPERPAGE_SHIFT: libc::c_int = 16; +pub const SUPERPAGE_NONE: libc::c_int = 0; +pub const SUPERPAGE_SIZE_ANY: libc::c_int = 1; +pub const VM_FLAGS_SUPERPAGE_NONE: libc::c_int = SUPERPAGE_NONE << VM_FLAGS_SUPERPAGE_SHIFT; +pub const VM_FLAGS_SUPERPAGE_SIZE_ANY: libc::c_int = SUPERPAGE_SIZE_ANY << VM_FLAGS_SUPERPAGE_SHIFT; #[cfg(target_arch = "x86_64")] -pub const SUPERPAGE_SIZE_2MB: ::libc::c_int = 2; +pub const SUPERPAGE_SIZE_2MB: libc::c_int = 2; #[cfg(target_arch = "x86_64")] -pub const VM_FLAGS_SUPERPAGE_SIZE_2MB: ::libc::c_int = - SUPERPAGE_SIZE_2MB << VM_FLAGS_SUPERPAGE_SHIFT; +pub const VM_FLAGS_SUPERPAGE_SIZE_2MB: libc::c_int = SUPERPAGE_SIZE_2MB << VM_FLAGS_SUPERPAGE_SHIFT; pub const GUARD_TYPE_VIRT_MEMORY: u32 = 5; @@ -120,13 +118,13 @@ pub fn vm_statistics_truncate_to_32_bit(value: u64) -> u32 { } #[inline] -pub fn vm_get_flags_alias(flags: ::libc::c_int) -> u8 { +pub fn vm_get_flags_alias(flags: libc::c_int) -> u8 { ((flags >> 24) & 0xff) as u8 } #[inline] -pub fn vm_set_flags_alias(flags: &mut ::libc::c_int, alias: u8) { - *flags = (*flags & !VM_FLAGS_ALIAS_MASK) | ((alias as ::libc::c_int) << 24); +pub fn vm_set_flags_alias(flags: &mut libc::c_int, alias: u8) { + *flags = (*flags & !VM_FLAGS_ALIAS_MASK) | ((alias as libc::c_int) << 24); } #[repr(C)] diff --git a/src/vm_sync.rs b/src/vm_sync.rs index c562397..d002e66 100644 --- a/src/vm_sync.rs +++ b/src/vm_sync.rs @@ -1,6 +1,6 @@ //! This module corresponds to `mach/vm_sync.h`. -pub type vm_sync_t = ::libc::c_uint; +pub type vm_sync_t = libc::c_uint; pub const VM_SYNC_ASYNCHRONOUS: vm_sync_t = 1; pub const VM_SYNC_SYNCHRONOUS: vm_sync_t = 1 << 1; diff --git a/src/vm_types.rs b/src/vm_types.rs index 053962c..9edaad8 100644 --- a/src/vm_types.rs +++ b/src/vm_types.rs @@ -1,7 +1,7 @@ //! This module roughly corresponds to `mach/i386/vm_types.h` and `mach/arm/vm_types.h` on aarch64. -pub type natural_t = ::libc::c_uint; -pub type integer_t = ::libc::c_int; +pub type natural_t = libc::c_uint; +pub type integer_t = libc::c_int; pub type user_addr_t = u64; @@ -11,9 +11,9 @@ pub type mach_vm_size_t = u64; pub type vm_map_offset_t = u64; pub type vm_map_address_t = u64; pub type vm_map_size_t = u64; -pub type vm_map_t = ::port::mach_port_t; -pub type vm_offset_t = ::libc::uintptr_t; -pub type vm_size_t = ::libc::uintptr_t; +pub type vm_map_t = crate::port::mach_port_t; +pub type vm_offset_t = libc::uintptr_t; +pub type vm_size_t = libc::uintptr_t; pub type vm_address_t = vm_offset_t; pub type mach_port_context_t = mach_vm_address_t;