apple add mach_vm_map, mmap does not provide custom alignment so

mach_vm_map is only way.
This commit is contained in:
David Carlier 2021-07-12 18:56:50 +01:00
parent 13c8ceb1ed
commit d5bb01caa6
3 changed files with 43 additions and 1 deletions

View file

@ -193,6 +193,7 @@ fn test_apple(target: &str) {
"mach/mach_init.h",
"mach/mach_time.h",
"mach/mach_types.h",
"mach/mach_vm.h",
"mach/thread_act.h",
"mach/thread_policy.h",
"malloc/malloc.h",

View file

@ -729,6 +729,7 @@ MAXTHREADNAMESIZE
MCL_CURRENT
MCL_FUTURE
MDMBUF
MEMORY_OBJECT_NULL
MH_MAGIC
MH_MAGIC_64
MINCORE_INCORE
@ -1414,6 +1415,10 @@ VM_MEMORY_TCMALLOC
VM_MEMORY_UNSHARED_PMAP
VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS
VM_METER
VM_PROT_EXECUTE
VM_PROT_NONE
VM_PROT_READ
VM_PROT_WRITE
VM_SWAPUSAGE
VSTATUS
VT0
@ -1700,6 +1705,10 @@ mach_port_t
mach_thread_self
mach_timebase_info
mach_timebase_info_data_t
mach_vm_address_t
mach_vm_map
mach_vm_offset_t
mach_vm_size_t
madvise
malloc_default_zone
malloc_printf
@ -1718,10 +1727,13 @@ malloc_zone_t
malloc_zone_valloc
max_align_t
mcontext_t
memory_object_t
memory_object_offset_t
memset_pattern4
memset_pattern8
memset_pattern16
memset_s
mem_entry_name_port_t
mincore
mkdirat
mkstemps
@ -1902,6 +1914,8 @@ uselocale
utimensat
utmpx
utmpxname
vm_inherit_t
vm_map_t
vm_prot_t
vm_size_t
wait4

View file

@ -44,6 +44,15 @@ pub type processor_flavor_t = ::c_int;
pub type thread_flavor_t = natural_t;
pub type thread_inspect_t = mach_port_t;
pub type policy_t = ::c_int;
pub type mach_vm_address_t = u64;
pub type mach_vm_offset_t = u64;
pub type mach_vm_size_t = u64;
pub type vm_map_t = ::mach_port_t;
pub type mem_entry_name_port_t = ::mach_port_t;
pub type memory_object_t = ::mach_port_t;
pub type memory_object_offset_t = ::c_ulonglong;
pub type vm_inherit_t = ::c_uint;
pub type vm_prot_t = ::c_int;
pub type iconv_t = *mut ::c_void;
@ -88,7 +97,6 @@ pub type CCCryptorStatus = i32;
pub type CCRNGStatus = ::CCCryptorStatus;
deprecated_mach! {
pub type vm_prot_t = ::c_int;
pub type vm_size_t = ::uintptr_t;
pub type mach_timebase_info_data_t = mach_timebase_info;
}
@ -3218,6 +3226,11 @@ pub const VM_LOADAVG: ::c_int = 2;
pub const VM_MACHFACTOR: ::c_int = 4;
pub const VM_SWAPUSAGE: ::c_int = 5;
pub const VM_MAXID: ::c_int = 6;
pub const VM_PROT_NONE: ::vm_prot_t = 0x00;
pub const VM_PROT_READ: ::vm_prot_t = 0x01;
pub const VM_PROT_WRITE: ::vm_prot_t = 0x02;
pub const VM_PROT_EXECUTE: ::vm_prot_t = 0x04;
pub const MEMORY_OBJECT_NULL: ::memory_object_t = 0;
pub const HW_MACHINE: ::c_int = 1;
pub const HW_MODEL: ::c_int = 2;
pub const HW_NCPU: ::c_int = 3;
@ -4289,6 +4302,20 @@ extern "C" {
pub fn CCRandomGenerateBytes(bytes: *mut ::c_void, size: ::size_t) -> ::CCRNGStatus;
pub fn _NSGetExecutablePath(buf: *mut ::c_char, bufsize: *mut u32) -> ::c_int;
pub fn mach_vm_map(
target_task: ::vm_map_t,
address: *mut ::mach_vm_address_t,
size: ::mach_vm_size_t,
mask: ::mach_vm_offset_t,
flags: ::c_int,
object: ::mem_entry_name_port_t,
offset: ::memory_object_offset_t,
copy: ::boolean_t,
cur_protection: ::vm_prot_t,
max_protection: ::vm_prot_t,
inheritance: ::vm_inherit_t,
) -> ::kern_return_t;
}
cfg_if! {