Root/
Source at commit 1733 created 12 years 6 months ago. By blackosx, Use the result from an intitial check to find if the target volume has an EFI system partition, later on in the installation process before checking for previous Chameleon installations. Add some feedback to the installer log. | |
---|---|
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 | *␉File:␉mach/vm_region.h␊ |
33 | *␊ |
34 | *␉Define the attributes of a task's memory region␊ |
35 | *␊ |
36 | */␊ |
37 | ␊ |
38 | #ifndef␉_MACH_VM_REGION_H_␊ |
39 | #define _MACH_VM_REGION_H_␊ |
40 | ␊ |
41 | #include <mach/boolean.h>␊ |
42 | #include <mach/vm_prot.h>␊ |
43 | #include <mach/vm_inherit.h>␊ |
44 | #include <mach/vm_behavior.h>␊ |
45 | #include <mach/vm_types.h>␊ |
46 | #include <mach/message.h>␊ |
47 | #include <mach/machine/vm_param.h>␊ |
48 | #include <mach/machine/vm_types.h>␊ |
49 | #include <mach/memory_object_types.h>␊ |
50 | ␊ |
51 | #include <sys/cdefs.h>␊ |
52 | ␊ |
53 | #pragma pack(4)␊ |
54 | ␊ |
55 | // LP64todo: all the current tools are 32bit, obviously never worked for 64b␊ |
56 | // so probably should be a real 32b ID vs. ptr.␊ |
57 | // Current users just check for equality␊ |
58 | typedef uint32_t vm32_object_id_t;␊ |
59 | ␊ |
60 | /*␊ |
61 | *␉Types defined:␊ |
62 | *␊ |
63 | *␉vm_region_info_t␉memory region attributes␊ |
64 | */␊ |
65 | ␊ |
66 | #define VM_REGION_INFO_MAX (1024)␊ |
67 | typedef int␉*vm_region_info_t;␊ |
68 | typedef int␉*vm_region_info_64_t;␊ |
69 | typedef int␉*vm_region_recurse_info_t;␊ |
70 | typedef int␉*vm_region_recurse_info_64_t;␊ |
71 | typedef int␉ vm_region_flavor_t;␊ |
72 | typedef int␉ vm_region_info_data_t[VM_REGION_INFO_MAX];␊ |
73 | ␊ |
74 | #define VM_REGION_BASIC_INFO_64␉␉9␊ |
75 | struct vm_region_basic_info_64 {␊ |
76 | ␉vm_prot_t␉␉protection;␊ |
77 | ␉vm_prot_t␉␉max_protection;␊ |
78 | ␉vm_inherit_t␉␉inheritance;␊ |
79 | ␉boolean_t␉␉shared;␊ |
80 | ␉boolean_t␉␉reserved;␊ |
81 | ␉memory_object_offset_t␉offset;␊ |
82 | ␉vm_behavior_t␉␉behavior;␊ |
83 | ␉unsigned short␉␉user_wired_count;␊ |
84 | };␊ |
85 | typedef struct vm_region_basic_info_64␉␉*vm_region_basic_info_64_t;␊ |
86 | typedef struct vm_region_basic_info_64␉␉ vm_region_basic_info_data_64_t;␊ |
87 | ␊ |
88 | #define VM_REGION_BASIC_INFO_COUNT_64␉((mach_msg_type_number_t) \␊ |
89 | ␉(sizeof(vm_region_basic_info_data_64_t)/sizeof(int)))␊ |
90 | ␊ |
91 | /*␊ |
92 | * Passing VM_REGION_BASIC_INFO to vm_region_64␊ |
93 | * automatically converts it to a VM_REGION_BASIC_INFO_64.␊ |
94 | * Please use that explicitly instead.␊ |
95 | */␊ |
96 | #define VM_REGION_BASIC_INFO␉␉10␊ |
97 | ␊ |
98 | /*␊ |
99 | * This is the legacy basic info structure. It is␊ |
100 | * deprecated because it passes only a 32-bit memory object␊ |
101 | * offset back - too small for many larger objects (e.g. files).␊ |
102 | */␊ |
103 | struct vm_region_basic_info {␊ |
104 | ␉vm_prot_t␉␉protection;␊ |
105 | ␉vm_prot_t␉␉max_protection;␊ |
106 | ␉vm_inherit_t␉␉inheritance;␊ |
107 | ␉boolean_t␉␉shared;␊ |
108 | ␉boolean_t␉␉reserved;␊ |
109 | ␉uint32_t␉␉offset; /* too small for a real offset */␊ |
110 | ␉vm_behavior_t␉␉behavior;␊ |
111 | ␉unsigned short␉␉user_wired_count;␊ |
112 | };␊ |
113 | ␊ |
114 | typedef struct vm_region_basic_info␉␉*vm_region_basic_info_t;␊ |
115 | typedef struct vm_region_basic_info␉␉ vm_region_basic_info_data_t;␊ |
116 | ␊ |
117 | #define VM_REGION_BASIC_INFO_COUNT ((mach_msg_type_number_t) \␊ |
118 | ␉(sizeof(vm_region_basic_info_data_t)/sizeof(int)))␊ |
119 | ␊ |
120 | #define VM_REGION_EXTENDED_INFO␉11␊ |
121 | ␊ |
122 | #define SM_COW 1␊ |
123 | #define SM_PRIVATE 2␊ |
124 | #define SM_EMPTY 3␊ |
125 | #define SM_SHARED 4␊ |
126 | #define SM_TRUESHARED 5␊ |
127 | #define SM_PRIVATE_ALIASED 6␊ |
128 | #define SM_SHARED_ALIASED 7␊ |
129 | ␊ |
130 | /* ␊ |
131 | * For submap info, the SM flags above are overlayed when a submap␊ |
132 | * is encountered. The field denotes whether or not machine level mapping␊ |
133 | * information is being shared. PTE's etc. When such sharing is taking␊ |
134 | * place the value returned is SM_TRUESHARED otherwise SM_PRIVATE is passed␊ |
135 | * back.␊ |
136 | */␊ |
137 | ␊ |
138 | struct vm_region_extended_info {␊ |
139 | ␉vm_prot_t␉␉protection;␊ |
140 | unsigned int user_tag;␊ |
141 | unsigned int pages_resident;␊ |
142 | unsigned int pages_shared_now_private;␊ |
143 | unsigned int pages_swapped_out;␊ |
144 | unsigned int pages_dirtied;␊ |
145 | unsigned int ref_count;␊ |
146 | unsigned short shadow_depth;␊ |
147 | unsigned char external_pager;␊ |
148 | unsigned char share_mode;␊ |
149 | };␊ |
150 | ␊ |
151 | typedef struct vm_region_extended_info␉␉*vm_region_extended_info_t;␊ |
152 | typedef struct vm_region_extended_info␉␉ vm_region_extended_info_data_t;␊ |
153 | ␊ |
154 | #define VM_REGION_EXTENDED_INFO_COUNT␉((mach_msg_type_number_t) \␊ |
155 | ␉(sizeof(vm_region_extended_info_data_t)/sizeof(int)))␊ |
156 | ␊ |
157 | ␊ |
158 | #define VM_REGION_TOP_INFO␉12␊ |
159 | ␊ |
160 | struct vm_region_top_info {␊ |
161 | unsigned int obj_id;␊ |
162 | unsigned int ref_count;␊ |
163 | unsigned int private_pages_resident;␊ |
164 | unsigned int shared_pages_resident;␊ |
165 | unsigned char share_mode;␊ |
166 | };␊ |
167 | ␊ |
168 | typedef struct vm_region_top_info␉␉*vm_region_top_info_t;␊ |
169 | typedef struct vm_region_top_info␉␉ vm_region_top_info_data_t;␊ |
170 | ␊ |
171 | #define VM_REGION_TOP_INFO_COUNT ((mach_msg_type_number_t) \␊ |
172 | ␉(sizeof(vm_region_top_info_data_t)/sizeof(int)))␊ |
173 | ␊ |
174 | ␊ |
175 | ␊ |
176 | /* ␊ |
177 | * vm_region_submap_info will return information on a submap or object.␊ |
178 | * The user supplies a nesting level on the call. When a walk of the␊ |
179 | * user's map is done and a submap is encountered, the nesting count is␊ |
180 | * checked. If the nesting count is greater than 1 the submap is entered and␊ |
181 | * the offset relative to the address in the base map is examined. If the␊ |
182 | * nesting count is zero, the information on the submap is returned.␊ |
183 | * The caller may thus learn about a submap and its contents by judicious␊ |
184 | * choice of the base map address and nesting count. The nesting count␊ |
185 | * allows penetration of recursively mapped submaps. If a submap is␊ |
186 | * encountered as a mapped entry of another submap, the caller may bump␊ |
187 | * the nesting count and call vm_region_recurse again on the target address␊ |
188 | * range. The "is_submap" field tells the caller whether or not a submap␊ |
189 | * has been encountered.␊ |
190 | *␊ |
191 | * Object only fields are filled in through a walking of the object shadow␊ |
192 | * chain (where one is present), and a walking of the resident page queue.␊ |
193 | * ␊ |
194 | */␊ |
195 | ␊ |
196 | struct vm_region_submap_info {␊ |
197 | ␉vm_prot_t␉␉protection; /* present access protection */␊ |
198 | ␉vm_prot_t␉␉max_protection; /* max avail through vm_prot */␊ |
199 | ␉vm_inherit_t␉␉inheritance;/* behavior of map/obj on fork */␊ |
200 | ␉uint32_t␉␉offset;␉␉/* offset into object/map */␊ |
201 | unsigned int user_tag;␉/* user tag on map entry */␊ |
202 | unsigned int pages_resident;␉/* only valid for objects */␊ |
203 | unsigned int pages_shared_now_private; /* only for objects */␊ |
204 | unsigned int pages_swapped_out; /* only for objects */␊ |
205 | unsigned int pages_dirtied; /* only for objects */␊ |
206 | unsigned int ref_count;␉ /* obj/map mappers, etc */␊ |
207 | unsigned short shadow_depth; ␉/* only for obj */␊ |
208 | unsigned char external_pager; /* only for obj */␊ |
209 | unsigned char share_mode;␉/* see enumeration */␊ |
210 | ␉boolean_t␉␉is_submap;␉/* submap vs obj */␊ |
211 | ␉vm_behavior_t␉␉behavior;␉/* access behavior hint */␊ |
212 | ␉vm32_object_id_t␉␉object_id;␉/* obj/map name, not a handle */␊ |
213 | ␉unsigned short␉␉user_wired_count; ␊ |
214 | };␊ |
215 | ␊ |
216 | typedef struct vm_region_submap_info␉␉*vm_region_submap_info_t;␊ |
217 | typedef struct vm_region_submap_info␉␉ vm_region_submap_info_data_t;␊ |
218 | ␊ |
219 | #define VM_REGION_SUBMAP_INFO_COUNT ((mach_msg_type_number_t) \␊ |
220 | ␉(sizeof(vm_region_submap_info_data_t)/sizeof(int)))␊ |
221 | ␊ |
222 | struct vm_region_submap_info_64 {␊ |
223 | ␉vm_prot_t␉␉protection; /* present access protection */␊ |
224 | ␉vm_prot_t␉␉max_protection; /* max avail through vm_prot */␊ |
225 | ␉vm_inherit_t␉␉inheritance;/* behavior of map/obj on fork */␊ |
226 | ␉memory_object_offset_t␉offset;␉␉/* offset into object/map */␊ |
227 | unsigned int user_tag;␉/* user tag on map entry */␊ |
228 | unsigned int pages_resident;␉/* only valid for objects */␊ |
229 | unsigned int pages_shared_now_private; /* only for objects */␊ |
230 | unsigned int pages_swapped_out; /* only for objects */␊ |
231 | unsigned int pages_dirtied; /* only for objects */␊ |
232 | unsigned int ref_count;␉ /* obj/map mappers, etc */␊ |
233 | unsigned short shadow_depth; ␉/* only for obj */␊ |
234 | unsigned char external_pager; /* only for obj */␊ |
235 | unsigned char share_mode;␉/* see enumeration */␊ |
236 | ␉boolean_t␉␉is_submap;␉/* submap vs obj */␊ |
237 | ␉vm_behavior_t␉␉behavior;␉/* access behavior hint */␊ |
238 | ␉vm32_object_id_t␉␉object_id;␉/* obj/map name, not a handle */␊ |
239 | ␉unsigned short␉␉user_wired_count; ␊ |
240 | };␊ |
241 | ␊ |
242 | typedef struct vm_region_submap_info_64␉␉*vm_region_submap_info_64_t;␊ |
243 | typedef struct vm_region_submap_info_64␉␉ vm_region_submap_info_data_64_t;␊ |
244 | ␊ |
245 | #define VM_REGION_SUBMAP_INFO_COUNT_64␉␉((mach_msg_type_number_t) \␊ |
246 | ␉(sizeof(vm_region_submap_info_data_64_t)/sizeof(int)))␊ |
247 | ␊ |
248 | struct vm_region_submap_short_info_64 {␊ |
249 | ␉vm_prot_t␉␉protection; /* present access protection */␊ |
250 | ␉vm_prot_t␉␉max_protection; /* max avail through vm_prot */␊ |
251 | ␉vm_inherit_t␉␉inheritance;/* behavior of map/obj on fork */␊ |
252 | ␉memory_object_offset_t␉offset;␉␉/* offset into object/map */␊ |
253 | unsigned int user_tag;␉/* user tag on map entry */␊ |
254 | unsigned int ref_count;␉ /* obj/map mappers, etc */␊ |
255 | unsigned short shadow_depth; ␉/* only for obj */␊ |
256 | unsigned char external_pager; /* only for obj */␊ |
257 | unsigned char share_mode;␉/* see enumeration */␊ |
258 | ␉boolean_t␉␉is_submap;␉/* submap vs obj */␊ |
259 | ␉vm_behavior_t␉␉behavior;␉/* access behavior hint */␊ |
260 | ␉vm32_object_id_t␉␉object_id;␉/* obj/map name, not a handle */␊ |
261 | ␉unsigned short␉␉user_wired_count; ␊ |
262 | };␊ |
263 | ␊ |
264 | typedef struct vm_region_submap_short_info_64␉*vm_region_submap_short_info_64_t;␊ |
265 | typedef struct vm_region_submap_short_info_64␉ vm_region_submap_short_info_data_64_t;␊ |
266 | ␊ |
267 | #define VM_REGION_SUBMAP_SHORT_INFO_COUNT_64␉((mach_msg_type_number_t) \␊ |
268 | ␉(sizeof(vm_region_submap_short_info_data_64_t)/sizeof(int)))␊ |
269 | ␊ |
270 | ␊ |
271 | struct mach_vm_read_entry {␊ |
272 | ␉mach_vm_address_t address;␊ |
273 | ␉mach_vm_size_t size;␊ |
274 | };␊ |
275 | ␊ |
276 | struct vm_read_entry {␊ |
277 | ␉vm_address_t␉address;␊ |
278 | ␉vm_size_t␉size;␊ |
279 | };␊ |
280 | ␊ |
281 | #if VM32_SUPPORT␊ |
282 | struct vm32_read_entry {␊ |
283 | ␉vm32_address_t␉address;␊ |
284 | ␉vm32_size_t␉size;␊ |
285 | };␊ |
286 | #endif␊ |
287 | ␊ |
288 | ␊ |
289 | #define VM_MAP_ENTRY_MAX (256)␊ |
290 | ␊ |
291 | typedef struct mach_vm_read_entry␉mach_vm_read_entry_t[VM_MAP_ENTRY_MAX];␊ |
292 | typedef struct vm_read_entry␉␉vm_read_entry_t[VM_MAP_ENTRY_MAX];␊ |
293 | #if VM32_SUPPORT␊ |
294 | typedef struct vm32_read_entry␉␉vm32_read_entry_t[VM_MAP_ENTRY_MAX];␊ |
295 | #endif␊ |
296 | ␊ |
297 | #pragma pack()␊ |
298 | ␊ |
299 | ␊ |
300 | #define VM_PAGE_INFO_MAX ␊ |
301 | typedef int *vm_page_info_t;␊ |
302 | typedef int vm_page_info_data_t[VM_PAGE_INFO_MAX];␊ |
303 | typedef int vm_page_info_flavor_t;␊ |
304 | ␊ |
305 | #define VM_PAGE_INFO_BASIC␉␉1␊ |
306 | struct vm_page_info_basic {␊ |
307 | ␉int␉␉␉disposition;␊ |
308 | ␉int␉␉␉ref_count;␊ |
309 | ␉vm_object_id_t␉␉object_id;␊ |
310 | ␉memory_object_offset_t␉offset;␊ |
311 | ␉int␉␉␉depth;␊ |
312 | };␊ |
313 | typedef struct vm_page_info_basic␉␉*vm_page_info_basic_t;␊ |
314 | typedef struct vm_page_info_basic␉␉vm_page_info_basic_data_t;␊ |
315 | ␊ |
316 | #define VM_PAGE_INFO_BASIC_COUNT␉((mach_msg_type_number_t) \␊ |
317 | ␉(sizeof(vm_page_info_basic_data_t)/sizeof(int)))␊ |
318 | ␊ |
319 | ␊ |
320 | #endif␉/*_MACH_VM_REGION_H_*/␊ |
321 |