+typedef struct vm_region_submap_info_64 *vm_region_submap_info_64_t;
+typedef struct vm_region_submap_info_64 vm_region_submap_info_data_64_t;
+
+#define VM_REGION_SUBMAP_INFO_V2_SIZE \
+ (sizeof (vm_region_submap_info_data_64_t))
+#define VM_REGION_SUBMAP_INFO_V1_SIZE \
+ (VM_REGION_SUBMAP_INFO_V2_SIZE - \
+ sizeof (vm_object_id_t) /* object_id_full */ )
+#define VM_REGION_SUBMAP_INFO_V0_SIZE \
+ (VM_REGION_SUBMAP_INFO_V1_SIZE - \
+ sizeof (unsigned int) /* pages_reusable */ )
+
+#define VM_REGION_SUBMAP_INFO_V2_COUNT_64 \
+ ((mach_msg_type_number_t) \
+ (VM_REGION_SUBMAP_INFO_V2_SIZE / sizeof (natural_t)))
+#define VM_REGION_SUBMAP_INFO_V1_COUNT_64 \
+ ((mach_msg_type_number_t) \
+ (VM_REGION_SUBMAP_INFO_V1_SIZE / sizeof (natural_t)))
+#define VM_REGION_SUBMAP_INFO_V0_COUNT_64 \
+ ((mach_msg_type_number_t) \
+ (VM_REGION_SUBMAP_INFO_V0_SIZE / sizeof (natural_t)))
+
+/* set this to the latest version */
+#define VM_REGION_SUBMAP_INFO_COUNT_64 VM_REGION_SUBMAP_INFO_V2_COUNT_64
+
+struct vm_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;
+};
+
+typedef struct vm_region_submap_short_info_64 *vm_region_submap_short_info_64_t;
+typedef struct vm_region_submap_short_info_64 vm_region_submap_short_info_data_64_t;