1/* 2 * Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28/* 29 * @OSF_COPYRIGHT@ 30 */ 31/* 32 * Mach Operating System 33 * Copyright (c) 1991,1990 Carnegie Mellon University 34 * All Rights Reserved. 35 * 36 * Permission to use, copy, modify and distribute this software and its 37 * documentation is hereby granted, provided that both the copyright 38 * notice and this permission notice appear in all copies of the 39 * software, derivative works or modified versions, and any portions 40 * thereof, and that both notices appear in supporting documentation. 41 * 42 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 43 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR 44 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 45 * 46 * Carnegie Mellon requests users of this software to return to 47 * 48 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 49 * School of Computer Science 50 * Carnegie Mellon University 51 * Pittsburgh PA 15213-3890 52 * 53 * any improvements or extensions that they make and grant Carnegie Mellon 54 * the rights to redistribute these changes. 55 */ 56/* 57 * File: mach_debug/vm_info.h 58 * Author: Rich Draves 59 * Date: March, 1990 60 * 61 * Definitions for the VM debugging interface. 62 */ 63 64#ifndef _MACH_DEBUG_VM_INFO_H_ 65#define _MACH_DEBUG_VM_INFO_H_ 66 67#include <mach/boolean.h> 68#include <mach/machine/vm_types.h> 69#include <mach/vm_inherit.h> 70#include <mach/vm_prot.h> 71#include <mach/memory_object_types.h> 72 73#pragma pack(4) 74 75/* 76 * Remember to update the mig type definitions 77 * in mach_debug_types.defs when adding/removing fields. 78 */ 79typedef struct mach_vm_info_region { 80 mach_vm_offset_t vir_start; /* start of region */ 81 mach_vm_offset_t vir_end; /* end of region */ 82 mach_vm_offset_t vir_object; /* the mapped object(kernal addr) */ 83 memory_object_offset_t vir_offset; /* offset into object */ 84 boolean_t vir_needs_copy; /* does object need to be copied? */ 85 vm_prot_t vir_protection; /* protection code */ 86 vm_prot_t vir_max_protection; /* maximum protection */ 87 vm_inherit_t vir_inheritance; /* inheritance */ 88 natural_t vir_wired_count; /* number of times wired */ 89 natural_t vir_user_wired_count; /* number of times user has wired */ 90} mach_vm_info_region_t; 91 92typedef struct vm_info_region_64 { 93 natural_t vir_start; /* start of region */ 94 natural_t vir_end; /* end of region */ 95 natural_t vir_object; /* the mapped object */ 96 memory_object_offset_t vir_offset; /* offset into object */ 97 boolean_t vir_needs_copy; /* does object need to be copied? */ 98 vm_prot_t vir_protection; /* protection code */ 99 vm_prot_t vir_max_protection; /* maximum protection */ 100 vm_inherit_t vir_inheritance; /* inheritance */ 101 natural_t vir_wired_count; /* number of times wired */ 102 natural_t vir_user_wired_count; /* number of times user has wired */ 103} vm_info_region_64_t; 104 105typedef struct vm_info_region { 106 natural_t vir_start; /* start of region */ 107 natural_t vir_end; /* end of region */ 108 natural_t vir_object; /* the mapped object */ 109 natural_t vir_offset; /* offset into object */ 110 boolean_t vir_needs_copy; /* does object need to be copied? */ 111 vm_prot_t vir_protection; /* protection code */ 112 vm_prot_t vir_max_protection; /* maximum protection */ 113 vm_inherit_t vir_inheritance; /* inheritance */ 114 natural_t vir_wired_count; /* number of times wired */ 115 natural_t vir_user_wired_count; /* number of times user has wired */ 116} vm_info_region_t; 117 118 119typedef struct vm_info_object { 120 natural_t vio_object; /* this object */ 121 natural_t vio_size; /* object size (valid if internal - but too small) */ 122 unsigned int vio_ref_count; /* number of references */ 123 unsigned int vio_resident_page_count; /* number of resident pages */ 124 unsigned int vio_absent_count; /* number requested but not filled */ 125 natural_t vio_copy; /* copy object */ 126 natural_t vio_shadow; /* shadow object */ 127 natural_t vio_shadow_offset; /* offset into shadow object */ 128 natural_t vio_paging_offset; /* offset into memory object */ 129 memory_object_copy_strategy_t vio_copy_strategy; 130 /* how to handle data copy */ 131 vm_offset_t vio_last_alloc; /* offset of last allocation */ 132 /* many random attributes */ 133 unsigned int vio_paging_in_progress; 134 boolean_t vio_pager_created; 135 boolean_t vio_pager_initialized; 136 boolean_t vio_pager_ready; 137 boolean_t vio_can_persist; 138 boolean_t vio_internal; 139 boolean_t vio_temporary; 140 boolean_t vio_alive; 141 boolean_t vio_purgable; 142 boolean_t vio_purgable_volatile; 143} vm_info_object_t; 144 145typedef vm_info_object_t *vm_info_object_array_t; 146 147#pragma pack() 148 149#endif /* _MACH_DEBUG_VM_INFO_H_ */ 150