#include <mach/vm_region.h> also included by
<mach/mach.h>mach/vm_region.h
File: mach/vm_region.h
Define the attributes of a task's memory region
typedefvm32_object_id_t
LP64todo: all the current tools are 32bit, obviously never worked for 64b
so probably should be a real 32b ID vs. ptr.
Current users just check for equality
typedef uint32_t vm32_object_id_t
macroVM_REGION_INFO_MAX
#define VM_REGION_INFO_MAX (1024)
typedefvm_region_info_t
typedef int *vm_region_info_t
typedefvm_region_info_64_t
typedef int *vm_region_info_64_t
typedefvm_region_recurse_info_t
typedef int *vm_region_recurse_info_t
typedefvm_region_recurse_info_64_t
typedef int *vm_region_recurse_info_64_t
typedefvm_region_flavor_t
typedef int vm_region_flavor_t
CMU/MIT Mach reference · manual page · © Carnegie Mellon
Defined values:
| VM_REGION_BASIC_INFO | Basic information about the region (size, inheritance, etc.). This information is declared by the vm_region_basic_info structure. |
typedefvm_region_info_data_t
typedef int vm_region_info_data_t[VM_REGION_INFO_MAX]
macroVM_REGION_BASIC_INFO_64
#define VM_REGION_BASIC_INFO_64 9
structvm_region_basic_info_64
| vm_prot_t | protection | |
| vm_prot_t | max_protection | |
| vm_inherit_t | inheritance | |
| boolean_t | shared | |
| boolean_t | reserved | |
| memory_object_offset_t | offset | |
| vm_behavior_t | behavior | |
| unsigned short | user_wired_count |
typedefvm_region_basic_info_64_t
typedef struct vm_region_basic_info_64 *vm_region_basic_info_64_t
typedefvm_region_basic_info_data_64_t
typedef struct vm_region_basic_info_64 vm_region_basic_info_data_64_t
macroVM_REGION_BASIC_INFO_COUNT_64
#define VM_REGION_BASIC_INFO_COUNT_64 ((mach_msg_type_number_t) (sizeof(vm_region_basic_info_data_64_t)/sizeof(int)))
macroVM_REGION_BASIC_INFO
Passing VM_REGION_BASIC_INFO to vm_region_64
automatically converts it to a VM_REGION_BASIC_INFO_64.
Please use that explicitly instead.
#define VM_REGION_BASIC_INFO 10
CMU/MIT Mach reference · manual page · © Carnegie Mellon
Basic information about the region (size, inheritance, etc.). This information is declared by the vm_region_basic_info structure.
structvm_region_basic_info
This is the legacy basic info structure. It is
deprecated because it passes only a 32-bit memory object
offset back - too small for many larger objects (e.g. files).
| vm_prot_t | protection | |
| vm_prot_t | max_protection | |
| vm_inherit_t | inheritance | |
| boolean_t | shared | |
| boolean_t | reserved | |
| uint32_t | offset | too small for a real offset |
| vm_behavior_t | behavior | |
| unsigned short | user_wired_count |
CMU/MIT Mach reference · manual page · © Carnegie Mellon
Defines the attributes of a task's memory region.
The vm_region_basic_info structure defines the attributes of a memory region returned by vm_region.
typedefvm_region_basic_info_t
typedef struct vm_region_basic_info *vm_region_basic_info_t
typedefvm_region_basic_info_data_t
typedef struct vm_region_basic_info vm_region_basic_info_data_t
macroVM_REGION_BASIC_INFO_COUNT
#define VM_REGION_BASIC_INFO_COUNT ((mach_msg_type_number_t) (sizeof(vm_region_basic_info_data_t)/sizeof(int)))
macroSM_COW
Clients should move away from using these codes for anything other than debugging
or best-effort accounting.
Each value is only loosely defined, and even within those definitions it is not
always possible for the VM to return the correct value. This behavior is also
subject to change as VM internals evolve.
#define SM_COW 1
macroSM_PRIVATE
#define SM_PRIVATE 2
macroSM_EMPTY
#define SM_EMPTY 3
macroSM_SHARED
#define SM_SHARED 4
macroSM_TRUESHARED
#define SM_TRUESHARED 5
macroSM_PRIVATE_ALIASED
#define SM_PRIVATE_ALIASED 6
macroSM_SHARED_ALIASED
#define SM_SHARED_ALIASED 7
macroSM_LARGE_PAGE
#define SM_LARGE_PAGE 8
macroVM_REGION_EXTENDED_INFO
#define VM_REGION_EXTENDED_INFO 13
structvm_region_extended_info
| vm_prot_t | protection | |
| unsigned int | user_tag | |
| unsigned int | pages_resident | |
| unsigned int | pages_shared_now_private | |
| unsigned int | pages_swapped_out | |
| unsigned int | pages_dirtied | |
| unsigned int | ref_count | |
| unsigned short | shadow_depth | |
| unsigned char | external_pager | |
| unsigned char | share_mode | |
| unsigned int | pages_reusable |
typedefvm_region_extended_info_t
typedef struct vm_region_extended_info *vm_region_extended_info_t
typedefvm_region_extended_info_data_t
typedef struct vm_region_extended_info vm_region_extended_info_data_t
macroVM_REGION_EXTENDED_INFO_COUNT
#define VM_REGION_EXTENDED_INFO_COUNT ((mach_msg_type_number_t) (sizeof (vm_region_extended_info_data_t) / sizeof (natural_t)))
macroVM_REGION_TOP_INFO
#define VM_REGION_TOP_INFO 12
structvm_region_top_info
| unsigned int | obj_id | |
| unsigned int | ref_count | |
| unsigned int | private_pages_resident | |
| unsigned int | shared_pages_resident | |
| unsigned char | share_mode |
typedefvm_region_top_info_t
typedef struct vm_region_top_info *vm_region_top_info_t
typedefvm_region_top_info_data_t
typedef struct vm_region_top_info vm_region_top_info_data_t
macroVM_REGION_TOP_INFO_COUNT
#define VM_REGION_TOP_INFO_COUNT ((mach_msg_type_number_t) (sizeof(vm_region_top_info_data_t) / sizeof(natural_t)))
structvm_region_submap_info
| vm_prot_t | protection | present access protection |
| vm_prot_t | max_protection | max avail through vm_prot |
| vm_inherit_t | inheritance | behavior of map/obj on fork |
| uint32_t | offset | offset into object/map |
| unsigned int | user_tag | user tag on map entry |
| unsigned int | pages_resident | only valid for objects |
| unsigned int | pages_shared_now_private | only for objects |
| unsigned int | pages_swapped_out | only for objects |
| unsigned int | pages_dirtied | only for objects |
| unsigned int | ref_count | obj/map mappers, etc |
| unsigned short | shadow_depth | only for obj |
| unsigned char | external_pager | only for obj |
| unsigned char | share_mode | see enumeration |
| boolean_t | is_submap | submap vs obj |
| vm_behavior_t | behavior | access behavior hint |
| vm32_object_id_t | object_id | obj/map name, not a handle |
| unsigned short | user_wired_count |
typedefvm_region_submap_info_t
typedef struct vm_region_submap_info *vm_region_submap_info_t
typedefvm_region_submap_info_data_t
typedef struct vm_region_submap_info vm_region_submap_info_data_t
macroVM_REGION_SUBMAP_INFO_COUNT
#define VM_REGION_SUBMAP_INFO_COUNT ((mach_msg_type_number_t) (sizeof(vm_region_submap_info_data_t) / sizeof(natural_t)))
structvm_region_submap_info_64
| vm_prot_t | protection | v0 fields present access protection |
| vm_prot_t | max_protection | max avail through vm_prot |
| vm_inherit_t | inheritance | behavior of map/obj on fork |
| memory_object_offset_t | offset | offset into object/map |
| unsigned int | user_tag | user tag on map entry |
| unsigned int | pages_resident | only valid for objects |
| unsigned int | pages_shared_now_private | only for objects |
| unsigned int | pages_swapped_out | only for objects |
| unsigned int | pages_dirtied | only for objects |
| unsigned int | ref_count | obj/map mappers, etc |
| unsigned short | shadow_depth | only for obj |
| unsigned char | external_pager | only for obj |
| unsigned char | share_mode | see enumeration |
| boolean_t | is_submap | submap vs obj |
| vm_behavior_t | behavior | access behavior hint |
| vm32_object_id_t | object_id | obj/map name, not a handle |
| unsigned short | user_wired_count | |
| unsigned short | flags | |
| unsigned int | pages_reusable | v1 fields |
| vm_object_id_t | object_id_full | v2 fields |
typedefvm_region_submap_info_64_t
typedef struct vm_region_submap_info_64 *vm_region_submap_info_64_t
typedefvm_region_submap_info_data_64_t
typedef struct vm_region_submap_info_64 vm_region_submap_info_data_64_t
macroVM_REGION_SUBMAP_INFO_V2_SIZE
Note that this size is hard-coded at the MIG boundary in mach_types.defs
so if we ever increase this you'll need to also bump the definition of
vm_region_recurse_info_t.
#define VM_REGION_SUBMAP_INFO_V2_SIZE (sizeof (vm_region_submap_info_data_64_t))
macroVM_REGION_SUBMAP_INFO_V1_SIZE
v1 size is v2 size minus v2's new fields
#define VM_REGION_SUBMAP_INFO_V1_SIZE (VM_REGION_SUBMAP_INFO_V2_SIZE - sizeof (vm_object_id_t) /* object_id_full */ )
macroVM_REGION_SUBMAP_INFO_V0_SIZE
v0 size is v1 size minus v1's new fields
#define VM_REGION_SUBMAP_INFO_V0_SIZE (VM_REGION_SUBMAP_INFO_V1_SIZE - sizeof (unsigned int) /* pages_reusable */ )
macroVM_REGION_SUBMAP_INFO_V2_COUNT_64
#define VM_REGION_SUBMAP_INFO_V2_COUNT_64 ((mach_msg_type_number_t) (VM_REGION_SUBMAP_INFO_V2_SIZE / sizeof (natural_t)))
macroVM_REGION_SUBMAP_INFO_V1_COUNT_64
#define VM_REGION_SUBMAP_INFO_V1_COUNT_64 ((mach_msg_type_number_t) (VM_REGION_SUBMAP_INFO_V1_SIZE / sizeof (natural_t)))
macroVM_REGION_SUBMAP_INFO_V0_COUNT_64
#define VM_REGION_SUBMAP_INFO_V0_COUNT_64 ((mach_msg_type_number_t) (VM_REGION_SUBMAP_INFO_V0_SIZE / sizeof (natural_t)))
macroVM_REGION_SUBMAP_INFO_COUNT_64
set this to the latest version
#define VM_REGION_SUBMAP_INFO_COUNT_64 VM_REGION_SUBMAP_INFO_V2_COUNT_64
macroVM_REGION_FLAG_JIT_ENABLED
#define VM_REGION_FLAG_JIT_ENABLED 0x1
macroVM_REGION_FLAG_TPRO_ENABLED
#define VM_REGION_FLAG_TPRO_ENABLED 0x2
structvm_region_submap_short_info_64
| vm_prot_t | protection | present access protection |
| vm_prot_t | max_protection | max avail through vm_prot |
| vm_inherit_t | inheritance | behavior of map/obj on fork |
| memory_object_offset_t | offset | offset into object/map |
| unsigned int | user_tag | user tag on map entry |
| unsigned int | ref_count | obj/map mappers, etc |
| unsigned short | shadow_depth | only for obj |
| unsigned char | external_pager | only for obj |
| unsigned char | share_mode | see enumeration |
| boolean_t | is_submap | submap vs obj |
| vm_behavior_t | behavior | access behavior hint |
| vm32_object_id_t | object_id | obj/map name, not a handle |
| unsigned short | user_wired_count | |
| unsigned short | flags |
typedefvm_region_submap_short_info_64_t
typedef struct vm_region_submap_short_info_64 *vm_region_submap_short_info_64_t
typedefvm_region_submap_short_info_data_64_t
typedef struct vm_region_submap_short_info_64 vm_region_submap_short_info_data_64_t
macroVM_REGION_SUBMAP_SHORT_INFO_COUNT_64
#define VM_REGION_SUBMAP_SHORT_INFO_COUNT_64 ((mach_msg_type_number_t) (sizeof (vm_region_submap_short_info_data_64_t) / sizeof (natural_t)))
structmach_vm_read_entry
| mach_vm_address_t | address | |
| mach_vm_size_t | size |
structvm_read_entry
| vm_address_t | address | |
| vm_size_t | size |
macroVM_MAP_ENTRY_MAX
#define VM_MAP_ENTRY_MAX (256)
typedefmach_vm_read_entry_t
typedef struct mach_vm_read_entry mach_vm_read_entry_t[VM_MAP_ENTRY_MAX]
typedefvm_read_entry_t
typedef struct vm_read_entry vm_read_entry_t[VM_MAP_ENTRY_MAX]
macroVM_PAGE_INFO_MAX
#define VM_PAGE_INFO_MAX
typedefvm_page_info_t
typedef int *vm_page_info_t
typedefvm_page_info_data_t
typedef int vm_page_info_data_t[VM_PAGE_INFO_MAX]
typedefvm_page_info_flavor_t
typedef int vm_page_info_flavor_t
macroVM_PAGE_INFO_BASIC
#define VM_PAGE_INFO_BASIC 1
structvm_page_info_basic
| int | disposition | |
| int | ref_count | |
| vm_object_id_t | object_id | |
| memory_object_offset_t | offset | |
| int | depth | |
| int | __pad | pad to 64-bit boundary |
typedefvm_page_info_basic_t
typedef struct vm_page_info_basic *vm_page_info_basic_t
typedefvm_page_info_basic_data_t
typedef struct vm_page_info_basic vm_page_info_basic_data_t
macroVM_PAGE_INFO_BASIC_COUNT
#define VM_PAGE_INFO_BASIC_COUNT ((mach_msg_type_number_t) (sizeof(vm_page_info_basic_data_t)/sizeof(int)))