#include <mach/vm_types_unsafe.h>
mach/vm_types_unsafe.h
macroVM_GENERATE_UNSAFE_WRAPPER
Macro to generate a wrapped "struct" that preserves ABI,
but prevents direct manipulation of the type.
The transparent union is needed because of arm64 which for "Composite"
arguments passed on the stack will align them to 8 byte boundaries as per
spec:
If the argument is an alignment adjusted type its value is passed as
a copy of the actual value. The copy will have an alignment defined as
follows:
- For a Fundamental Data Type, the alignment is the natural alignment
of that type, after any promotions.
- For a Composite Type, the alignment of the copy will have 8-byte
alignment if its natural alignment is ≤ 8 and 16-byte alignment
if its natural alignment is ≥ 16.
#define VM_GENERATE_UNSAFE_WRAPPER(_safe_type, _unsafe_type) typedef _safe_type _unsafe_type
typedefvm_addr_struct_t
typedef uint64_t vm_addr_struct_t;
typedefvm_size_struct_t
typedef uint64_t vm_size_struct_t;
typedefvm32_addr_struct_t
typedef uint32_t vm32_addr_struct_t;
typedefvm32_size_struct_t
typedef uint32_t vm32_size_struct_t;
macroVM_DEFINE_UNSAFE_TYPE
#define VM_DEFINE_UNSAFE_TYPE(_safe_type, _unsafe_type, _unsafe_contents) typedef _safe_type _unsafe_type
macroVM_GENERATE_UNSAFE_TYPE
#define VM_GENERATE_UNSAFE_TYPE(_safe_type, _unsafe_type) VM_DEFINE_UNSAFE_TYPE(_safe_type, _unsafe_type, )
macroVM_GENERATE_UNSAFE_ADDR
#define VM_GENERATE_UNSAFE_ADDR(_safe_type, _unsafe_type) VM_GENERATE_UNSAFE_TYPE(_safe_type, _unsafe_type)
macroVM_GENERATE_UNSAFE_SIZE
#define VM_GENERATE_UNSAFE_SIZE(_safe_type, _unsafe_type) VM_GENERATE_UNSAFE_TYPE(_safe_type, _unsafe_type)
macroVM_GENERATE_UNSAFE_ADDR32
#define VM_GENERATE_UNSAFE_ADDR32(_safe_type, _unsafe_type) VM_GENERATE_UNSAFE_TYPE(_safe_type, _unsafe_type)
macroVM_GENERATE_UNSAFE_SIZE32
#define VM_GENERATE_UNSAFE_SIZE32(_safe_type, _unsafe_type) VM_GENERATE_UNSAFE_TYPE(_safe_type, _unsafe_type)
typedefmach_vm_address_ut
typedef mach_vm_address_t mach_vm_address_ut;
typedefmach_vm_offset_ut
typedef mach_vm_offset_t mach_vm_offset_ut;
typedefmach_vm_size_ut
typedef mach_vm_size_t mach_vm_size_ut;
typedefvm_address_ut
typedef vm_address_t vm_address_ut;
typedefvm_offset_ut
typedef vm_offset_t vm_offset_ut;
typedefvm_size_ut
typedef vm_size_t vm_size_ut;
typedefvm_map_address_ut
typedef vm_map_address_t vm_map_address_ut;
typedefvm_map_offset_ut
typedef vm_map_offset_t vm_map_offset_ut;
typedefvm_map_size_ut
typedef vm_map_size_t vm_map_size_ut;
typedefmemory_object_offset_ut
typedef memory_object_offset_t memory_object_offset_ut;
typedefmemory_object_size_ut
typedef memory_object_size_t memory_object_size_ut;
typedefvm_object_offset_ut
typedef vm_object_offset_t vm_object_offset_ut;
typedefvm_object_size_ut
typedef vm_object_size_t vm_object_size_ut;
typedefpointer_ut
typedef pointer_t pointer_ut;
typedefvm_prot_ut
typedef vm_prot_t vm_prot_ut;
typedefvm_inherit_ut
typedef vm_inherit_t vm_inherit_ut;
typedefvm_behavior_ut
typedef vm_behavior_t vm_behavior_ut;
typedefmach_vm_range_ut
typedef struct mach_vm_range mach_vm_range_ut;
typedefmach_vm_range_recipe_v1_ut
typedef mach_vm_range_recipe_v1_t mach_vm_range_recipe_v1_ut;