1 | /* |
2 | * IDENTIFICATION: |
3 | * stub generated Tue Apr 9 11:33:41 2019 |
4 | * with a MiG generated by bootstrap_cmds-96.20.2.200.4 |
5 | * OPTIONS: |
6 | * KernelServer |
7 | */ |
8 | |
9 | /* Module memory_object_control */ |
10 | |
11 | #define __MIG_check__Request__memory_object_control_subsystem__ 1 |
12 | |
13 | #include "memory_object_control_server.h" |
14 | |
15 | #ifndef mig_internal |
16 | #define mig_internal static __inline__ |
17 | #endif /* mig_internal */ |
18 | |
19 | #ifndef mig_external |
20 | #define mig_external |
21 | #endif /* mig_external */ |
22 | |
23 | #if !defined(__MigTypeCheck) && defined(TypeCheck) |
24 | #define __MigTypeCheck TypeCheck /* Legacy setting */ |
25 | #endif /* !defined(__MigTypeCheck) */ |
26 | |
27 | #if !defined(__MigKernelSpecificCode) && defined(_MIG_KERNEL_SPECIFIC_CODE_) |
28 | #define __MigKernelSpecificCode _MIG_KERNEL_SPECIFIC_CODE_ /* Legacy setting */ |
29 | #endif /* !defined(__MigKernelSpecificCode) */ |
30 | |
31 | #ifndef LimitCheck |
32 | #define LimitCheck 0 |
33 | #endif /* LimitCheck */ |
34 | |
35 | #ifndef min |
36 | #define min(a,b) ( ((a) < (b))? (a): (b) ) |
37 | #endif /* min */ |
38 | |
39 | #if !defined(_WALIGN_) |
40 | #define _WALIGN_(x) (((x) + 3) & ~3) |
41 | #endif /* !defined(_WALIGN_) */ |
42 | |
43 | #if !defined(_WALIGNSZ_) |
44 | #define _WALIGNSZ_(x) _WALIGN_(sizeof(x)) |
45 | #endif /* !defined(_WALIGNSZ_) */ |
46 | |
47 | #ifndef UseStaticTemplates |
48 | #define UseStaticTemplates 0 |
49 | #endif /* UseStaticTemplates */ |
50 | |
51 | #ifndef __DeclareRcvRpc |
52 | #define __DeclareRcvRpc(_NUM_, _NAME_) |
53 | #endif /* __DeclareRcvRpc */ |
54 | |
55 | #ifndef __BeforeRcvRpc |
56 | #define __BeforeRcvRpc(_NUM_, _NAME_) |
57 | #endif /* __BeforeRcvRpc */ |
58 | |
59 | #ifndef __AfterRcvRpc |
60 | #define __AfterRcvRpc(_NUM_, _NAME_) |
61 | #endif /* __AfterRcvRpc */ |
62 | |
63 | #ifndef __DeclareRcvSimple |
64 | #define __DeclareRcvSimple(_NUM_, _NAME_) |
65 | #endif /* __DeclareRcvSimple */ |
66 | |
67 | #ifndef __BeforeRcvSimple |
68 | #define __BeforeRcvSimple(_NUM_, _NAME_) |
69 | #endif /* __BeforeRcvSimple */ |
70 | |
71 | #ifndef __AfterRcvSimple |
72 | #define __AfterRcvSimple(_NUM_, _NAME_) |
73 | #endif /* __AfterRcvSimple */ |
74 | |
75 | #define novalue void |
76 | |
77 | #if __MigKernelSpecificCode |
78 | #define msgh_request_port msgh_remote_port |
79 | #define MACH_MSGH_BITS_REQUEST(bits) MACH_MSGH_BITS_REMOTE(bits) |
80 | #define msgh_reply_port msgh_local_port |
81 | #define MACH_MSGH_BITS_REPLY(bits) MACH_MSGH_BITS_LOCAL(bits) |
82 | #else |
83 | #define msgh_request_port msgh_local_port |
84 | #define MACH_MSGH_BITS_REQUEST(bits) MACH_MSGH_BITS_LOCAL(bits) |
85 | #define msgh_reply_port msgh_remote_port |
86 | #define MACH_MSGH_BITS_REPLY(bits) MACH_MSGH_BITS_REMOTE(bits) |
87 | #endif /* __MigKernelSpecificCode */ |
88 | |
89 | #define MIG_RETURN_ERROR(X, code) {\ |
90 | ((mig_reply_error_t *)X)->RetCode = code;\ |
91 | ((mig_reply_error_t *)X)->NDR = NDR_record;\ |
92 | return;\ |
93 | } |
94 | |
95 | /* Forward Declarations */ |
96 | |
97 | |
98 | mig_internal novalue _Xmemory_object_get_attributes |
99 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); |
100 | |
101 | mig_internal novalue _Xmemory_object_change_attributes |
102 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); |
103 | |
104 | mig_internal novalue _Xmemory_object_synchronize_completed |
105 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); |
106 | |
107 | mig_internal novalue _Xmemory_object_lock_request |
108 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); |
109 | |
110 | mig_internal novalue _Xmemory_object_destroy |
111 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); |
112 | |
113 | mig_internal novalue _Xmemory_object_upl_request |
114 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); |
115 | |
116 | mig_internal novalue _Xmemory_object_super_upl_request |
117 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); |
118 | |
119 | mig_internal novalue _Xmemory_object_cluster_size |
120 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); |
121 | |
122 | mig_internal novalue _Xmemory_object_page_op |
123 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); |
124 | |
125 | mig_internal novalue _Xmemory_object_recover_named |
126 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); |
127 | |
128 | mig_internal novalue _Xmemory_object_release_name |
129 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); |
130 | |
131 | mig_internal novalue _Xmemory_object_range_op |
132 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); |
133 | |
134 | |
135 | #if ( __MigTypeCheck ) |
136 | #if __MIG_check__Request__memory_object_control_subsystem__ |
137 | #if !defined(__MIG_check__Request__memory_object_get_attributes_t__defined) |
138 | #define __MIG_check__Request__memory_object_get_attributes_t__defined |
139 | |
140 | mig_internal kern_return_t __MIG_check__Request__memory_object_get_attributes_t(__attribute__((__unused__)) __Request__memory_object_get_attributes_t *In0P) |
141 | { |
142 | |
143 | typedef __Request__memory_object_get_attributes_t __Request; |
144 | #if __MigTypeCheck |
145 | if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || |
146 | (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request))) |
147 | return MIG_BAD_ARGUMENTS; |
148 | #endif /* __MigTypeCheck */ |
149 | |
150 | return MACH_MSG_SUCCESS; |
151 | } |
152 | #endif /* !defined(__MIG_check__Request__memory_object_get_attributes_t__defined) */ |
153 | #endif /* __MIG_check__Request__memory_object_control_subsystem__ */ |
154 | #endif /* ( __MigTypeCheck ) */ |
155 | |
156 | |
157 | /* Routine memory_object_get_attributes */ |
158 | mig_internal novalue _Xmemory_object_get_attributes |
159 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) |
160 | { |
161 | |
162 | #ifdef __MigPackStructs |
163 | #pragma pack(4) |
164 | #endif |
165 | typedef struct { |
166 | mach_msg_header_t Head; |
167 | NDR_record_t NDR; |
168 | memory_object_flavor_t flavor; |
169 | mach_msg_type_number_t attributesCnt; |
170 | mach_msg_trailer_t trailer; |
171 | } Request __attribute__((unused)); |
172 | #ifdef __MigPackStructs |
173 | #pragma pack() |
174 | #endif |
175 | typedef __Request__memory_object_get_attributes_t __Request; |
176 | typedef __Reply__memory_object_get_attributes_t Reply __attribute__((unused)); |
177 | |
178 | /* |
179 | * typedef struct { |
180 | * mach_msg_header_t Head; |
181 | * NDR_record_t NDR; |
182 | * kern_return_t RetCode; |
183 | * } mig_reply_error_t; |
184 | */ |
185 | |
186 | Request *In0P = (Request *) InHeadP; |
187 | Reply *OutP = (Reply *) OutHeadP; |
188 | #ifdef __MIG_check__Request__memory_object_get_attributes_t__defined |
189 | kern_return_t check_result; |
190 | #endif /* __MIG_check__Request__memory_object_get_attributes_t__defined */ |
191 | |
192 | #if __MigKernelSpecificCode |
193 | #else |
194 | #endif /* __MigKernelSpecificCode */ |
195 | memory_object_control_t memory_control; |
196 | |
197 | __DeclareRcvRpc(2000, "memory_object_get_attributes" ) |
198 | __BeforeRcvRpc(2000, "memory_object_get_attributes" ) |
199 | |
200 | #if defined(__MIG_check__Request__memory_object_get_attributes_t__defined) |
201 | check_result = __MIG_check__Request__memory_object_get_attributes_t((__Request *)In0P); |
202 | if (check_result != MACH_MSG_SUCCESS) |
203 | { MIG_RETURN_ERROR(OutP, check_result); } |
204 | #endif /* defined(__MIG_check__Request__memory_object_get_attributes_t__defined) */ |
205 | |
206 | memory_control = convert_port_to_mo_control(In0P->Head.msgh_request_port); |
207 | |
208 | OutP->attributesCnt = 6; |
209 | if (In0P->attributesCnt < OutP->attributesCnt) |
210 | OutP->attributesCnt = In0P->attributesCnt; |
211 | |
212 | OutP->RetCode = memory_object_get_attributes(memory_control, In0P->flavor, OutP->attributes, &OutP->attributesCnt); |
213 | memory_object_control_deallocate(memory_control); |
214 | if (OutP->RetCode != KERN_SUCCESS) { |
215 | MIG_RETURN_ERROR(OutP, OutP->RetCode); |
216 | } |
217 | #if __MigKernelSpecificCode |
218 | #endif /* __MigKernelSpecificCode */ |
219 | |
220 | OutP->NDR = NDR_record; |
221 | |
222 | OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply) - 24) + (((4 * OutP->attributesCnt))); |
223 | |
224 | __AfterRcvRpc(2000, "memory_object_get_attributes" ) |
225 | } |
226 | |
227 | #if ( __MigTypeCheck ) |
228 | #if __MIG_check__Request__memory_object_control_subsystem__ |
229 | #if !defined(__MIG_check__Request__memory_object_change_attributes_t__defined) |
230 | #define __MIG_check__Request__memory_object_change_attributes_t__defined |
231 | |
232 | mig_internal kern_return_t __MIG_check__Request__memory_object_change_attributes_t(__attribute__((__unused__)) __Request__memory_object_change_attributes_t *In0P) |
233 | { |
234 | |
235 | typedef __Request__memory_object_change_attributes_t __Request; |
236 | #if __MigTypeCheck |
237 | unsigned int msgh_size; |
238 | #endif /* __MigTypeCheck */ |
239 | |
240 | #if __MigTypeCheck |
241 | msgh_size = In0P->Head.msgh_size; |
242 | if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || |
243 | (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 24)) || (msgh_size > (mach_msg_size_t)sizeof(__Request))) |
244 | return MIG_BAD_ARGUMENTS; |
245 | #endif /* __MigTypeCheck */ |
246 | |
247 | #if defined(__NDR_convert__int_rep__Request__memory_object_change_attributes_t__attributesCnt__defined) |
248 | if (In0P->NDR.int_rep != NDR_record.int_rep) |
249 | __NDR_convert__int_rep__Request__memory_object_change_attributes_t__attributesCnt(&In0P->attributesCnt, In0P->NDR.int_rep); |
250 | #endif /* __NDR_convert__int_rep__Request__memory_object_change_attributes_t__attributesCnt__defined */ |
251 | #if __MigTypeCheck |
252 | if ( In0P->attributesCnt > 6 ) |
253 | return MIG_BAD_ARGUMENTS; |
254 | if (((msgh_size - (mach_msg_size_t)(sizeof(__Request) - 24)) / 4 < In0P->attributesCnt) || |
255 | (msgh_size != (mach_msg_size_t)(sizeof(__Request) - 24) + (4 * In0P->attributesCnt))) |
256 | return MIG_BAD_ARGUMENTS; |
257 | #endif /* __MigTypeCheck */ |
258 | |
259 | return MACH_MSG_SUCCESS; |
260 | } |
261 | #endif /* !defined(__MIG_check__Request__memory_object_change_attributes_t__defined) */ |
262 | #endif /* __MIG_check__Request__memory_object_control_subsystem__ */ |
263 | #endif /* ( __MigTypeCheck ) */ |
264 | |
265 | |
266 | /* Routine memory_object_change_attributes */ |
267 | mig_internal novalue _Xmemory_object_change_attributes |
268 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) |
269 | { |
270 | |
271 | #ifdef __MigPackStructs |
272 | #pragma pack(4) |
273 | #endif |
274 | typedef struct { |
275 | mach_msg_header_t Head; |
276 | NDR_record_t NDR; |
277 | memory_object_flavor_t flavor; |
278 | mach_msg_type_number_t attributesCnt; |
279 | int attributes[6]; |
280 | mach_msg_trailer_t trailer; |
281 | } Request __attribute__((unused)); |
282 | #ifdef __MigPackStructs |
283 | #pragma pack() |
284 | #endif |
285 | typedef __Request__memory_object_change_attributes_t __Request; |
286 | typedef __Reply__memory_object_change_attributes_t Reply __attribute__((unused)); |
287 | |
288 | /* |
289 | * typedef struct { |
290 | * mach_msg_header_t Head; |
291 | * NDR_record_t NDR; |
292 | * kern_return_t RetCode; |
293 | * } mig_reply_error_t; |
294 | */ |
295 | |
296 | Request *In0P = (Request *) InHeadP; |
297 | Reply *OutP = (Reply *) OutHeadP; |
298 | #ifdef __MIG_check__Request__memory_object_change_attributes_t__defined |
299 | kern_return_t check_result; |
300 | #endif /* __MIG_check__Request__memory_object_change_attributes_t__defined */ |
301 | |
302 | #if __MigKernelSpecificCode |
303 | #else |
304 | #endif /* __MigKernelSpecificCode */ |
305 | memory_object_control_t memory_control; |
306 | |
307 | __DeclareRcvRpc(2001, "memory_object_change_attributes" ) |
308 | __BeforeRcvRpc(2001, "memory_object_change_attributes" ) |
309 | |
310 | #if defined(__MIG_check__Request__memory_object_change_attributes_t__defined) |
311 | check_result = __MIG_check__Request__memory_object_change_attributes_t((__Request *)In0P); |
312 | if (check_result != MACH_MSG_SUCCESS) |
313 | { MIG_RETURN_ERROR(OutP, check_result); } |
314 | #endif /* defined(__MIG_check__Request__memory_object_change_attributes_t__defined) */ |
315 | |
316 | memory_control = convert_port_to_mo_control(In0P->Head.msgh_request_port); |
317 | |
318 | OutP->RetCode = memory_object_change_attributes(memory_control, In0P->flavor, In0P->attributes, In0P->attributesCnt); |
319 | memory_object_control_deallocate(memory_control); |
320 | #if __MigKernelSpecificCode |
321 | #endif /* __MigKernelSpecificCode */ |
322 | |
323 | OutP->NDR = NDR_record; |
324 | |
325 | |
326 | __AfterRcvRpc(2001, "memory_object_change_attributes" ) |
327 | } |
328 | |
329 | #if ( __MigTypeCheck ) |
330 | #if __MIG_check__Request__memory_object_control_subsystem__ |
331 | #if !defined(__MIG_check__Request__memory_object_synchronize_completed_t__defined) |
332 | #define __MIG_check__Request__memory_object_synchronize_completed_t__defined |
333 | |
334 | mig_internal kern_return_t __MIG_check__Request__memory_object_synchronize_completed_t(__attribute__((__unused__)) __Request__memory_object_synchronize_completed_t *In0P) |
335 | { |
336 | |
337 | typedef __Request__memory_object_synchronize_completed_t __Request; |
338 | #if __MigTypeCheck |
339 | if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || |
340 | (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request))) |
341 | return MIG_BAD_ARGUMENTS; |
342 | #endif /* __MigTypeCheck */ |
343 | |
344 | return MACH_MSG_SUCCESS; |
345 | } |
346 | #endif /* !defined(__MIG_check__Request__memory_object_synchronize_completed_t__defined) */ |
347 | #endif /* __MIG_check__Request__memory_object_control_subsystem__ */ |
348 | #endif /* ( __MigTypeCheck ) */ |
349 | |
350 | |
351 | /* Routine memory_object_synchronize_completed */ |
352 | mig_internal novalue _Xmemory_object_synchronize_completed |
353 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) |
354 | { |
355 | |
356 | #ifdef __MigPackStructs |
357 | #pragma pack(4) |
358 | #endif |
359 | typedef struct { |
360 | mach_msg_header_t Head; |
361 | NDR_record_t NDR; |
362 | memory_object_offset_t offset; |
363 | memory_object_size_t length; |
364 | mach_msg_trailer_t trailer; |
365 | } Request __attribute__((unused)); |
366 | #ifdef __MigPackStructs |
367 | #pragma pack() |
368 | #endif |
369 | typedef __Request__memory_object_synchronize_completed_t __Request; |
370 | typedef __Reply__memory_object_synchronize_completed_t Reply __attribute__((unused)); |
371 | |
372 | /* |
373 | * typedef struct { |
374 | * mach_msg_header_t Head; |
375 | * NDR_record_t NDR; |
376 | * kern_return_t RetCode; |
377 | * } mig_reply_error_t; |
378 | */ |
379 | |
380 | Request *In0P = (Request *) InHeadP; |
381 | Reply *OutP = (Reply *) OutHeadP; |
382 | #ifdef __MIG_check__Request__memory_object_synchronize_completed_t__defined |
383 | kern_return_t check_result; |
384 | #endif /* __MIG_check__Request__memory_object_synchronize_completed_t__defined */ |
385 | |
386 | #if __MigKernelSpecificCode |
387 | #else |
388 | #endif /* __MigKernelSpecificCode */ |
389 | memory_object_control_t memory_control; |
390 | |
391 | __DeclareRcvRpc(2002, "memory_object_synchronize_completed" ) |
392 | __BeforeRcvRpc(2002, "memory_object_synchronize_completed" ) |
393 | |
394 | #if defined(__MIG_check__Request__memory_object_synchronize_completed_t__defined) |
395 | check_result = __MIG_check__Request__memory_object_synchronize_completed_t((__Request *)In0P); |
396 | if (check_result != MACH_MSG_SUCCESS) |
397 | { MIG_RETURN_ERROR(OutP, check_result); } |
398 | #endif /* defined(__MIG_check__Request__memory_object_synchronize_completed_t__defined) */ |
399 | |
400 | memory_control = convert_port_to_mo_control(In0P->Head.msgh_request_port); |
401 | |
402 | OutP->RetCode = memory_object_synchronize_completed(memory_control, In0P->offset, In0P->length); |
403 | memory_object_control_deallocate(memory_control); |
404 | #if __MigKernelSpecificCode |
405 | #endif /* __MigKernelSpecificCode */ |
406 | |
407 | OutP->NDR = NDR_record; |
408 | |
409 | |
410 | __AfterRcvRpc(2002, "memory_object_synchronize_completed" ) |
411 | } |
412 | |
413 | #if ( __MigTypeCheck ) |
414 | #if __MIG_check__Request__memory_object_control_subsystem__ |
415 | #if !defined(__MIG_check__Request__memory_object_lock_request_t__defined) |
416 | #define __MIG_check__Request__memory_object_lock_request_t__defined |
417 | |
418 | mig_internal kern_return_t __MIG_check__Request__memory_object_lock_request_t(__attribute__((__unused__)) __Request__memory_object_lock_request_t *In0P) |
419 | { |
420 | |
421 | typedef __Request__memory_object_lock_request_t __Request; |
422 | #if __MigTypeCheck |
423 | if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || |
424 | (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request))) |
425 | return MIG_BAD_ARGUMENTS; |
426 | #endif /* __MigTypeCheck */ |
427 | |
428 | return MACH_MSG_SUCCESS; |
429 | } |
430 | #endif /* !defined(__MIG_check__Request__memory_object_lock_request_t__defined) */ |
431 | #endif /* __MIG_check__Request__memory_object_control_subsystem__ */ |
432 | #endif /* ( __MigTypeCheck ) */ |
433 | |
434 | |
435 | /* Routine memory_object_lock_request */ |
436 | mig_internal novalue _Xmemory_object_lock_request |
437 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) |
438 | { |
439 | |
440 | #ifdef __MigPackStructs |
441 | #pragma pack(4) |
442 | #endif |
443 | typedef struct { |
444 | mach_msg_header_t Head; |
445 | NDR_record_t NDR; |
446 | memory_object_offset_t offset; |
447 | memory_object_size_t size; |
448 | memory_object_return_t should_return; |
449 | integer_t flags; |
450 | vm_prot_t lock_value; |
451 | mach_msg_trailer_t trailer; |
452 | } Request __attribute__((unused)); |
453 | #ifdef __MigPackStructs |
454 | #pragma pack() |
455 | #endif |
456 | typedef __Request__memory_object_lock_request_t __Request; |
457 | typedef __Reply__memory_object_lock_request_t Reply __attribute__((unused)); |
458 | |
459 | /* |
460 | * typedef struct { |
461 | * mach_msg_header_t Head; |
462 | * NDR_record_t NDR; |
463 | * kern_return_t RetCode; |
464 | * } mig_reply_error_t; |
465 | */ |
466 | |
467 | Request *In0P = (Request *) InHeadP; |
468 | Reply *OutP = (Reply *) OutHeadP; |
469 | #ifdef __MIG_check__Request__memory_object_lock_request_t__defined |
470 | kern_return_t check_result; |
471 | #endif /* __MIG_check__Request__memory_object_lock_request_t__defined */ |
472 | |
473 | #if __MigKernelSpecificCode |
474 | #else |
475 | #endif /* __MigKernelSpecificCode */ |
476 | memory_object_control_t memory_control; |
477 | |
478 | __DeclareRcvRpc(2003, "memory_object_lock_request" ) |
479 | __BeforeRcvRpc(2003, "memory_object_lock_request" ) |
480 | |
481 | #if defined(__MIG_check__Request__memory_object_lock_request_t__defined) |
482 | check_result = __MIG_check__Request__memory_object_lock_request_t((__Request *)In0P); |
483 | if (check_result != MACH_MSG_SUCCESS) |
484 | { MIG_RETURN_ERROR(OutP, check_result); } |
485 | #endif /* defined(__MIG_check__Request__memory_object_lock_request_t__defined) */ |
486 | |
487 | memory_control = convert_port_to_mo_control(In0P->Head.msgh_request_port); |
488 | |
489 | OutP->RetCode = memory_object_lock_request(memory_control, In0P->offset, In0P->size, &OutP->resid_offset, &OutP->io_errno, In0P->should_return, In0P->flags, In0P->lock_value); |
490 | memory_object_control_deallocate(memory_control); |
491 | if (OutP->RetCode != KERN_SUCCESS) { |
492 | MIG_RETURN_ERROR(OutP, OutP->RetCode); |
493 | } |
494 | #if __MigKernelSpecificCode |
495 | #endif /* __MigKernelSpecificCode */ |
496 | |
497 | OutP->NDR = NDR_record; |
498 | |
499 | |
500 | OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply)); |
501 | __AfterRcvRpc(2003, "memory_object_lock_request" ) |
502 | } |
503 | |
504 | #if ( __MigTypeCheck ) |
505 | #if __MIG_check__Request__memory_object_control_subsystem__ |
506 | #if !defined(__MIG_check__Request__memory_object_destroy_t__defined) |
507 | #define __MIG_check__Request__memory_object_destroy_t__defined |
508 | |
509 | mig_internal kern_return_t __MIG_check__Request__memory_object_destroy_t(__attribute__((__unused__)) __Request__memory_object_destroy_t *In0P) |
510 | { |
511 | |
512 | typedef __Request__memory_object_destroy_t __Request; |
513 | #if __MigTypeCheck |
514 | if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || |
515 | (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request))) |
516 | return MIG_BAD_ARGUMENTS; |
517 | #endif /* __MigTypeCheck */ |
518 | |
519 | return MACH_MSG_SUCCESS; |
520 | } |
521 | #endif /* !defined(__MIG_check__Request__memory_object_destroy_t__defined) */ |
522 | #endif /* __MIG_check__Request__memory_object_control_subsystem__ */ |
523 | #endif /* ( __MigTypeCheck ) */ |
524 | |
525 | |
526 | /* Routine memory_object_destroy */ |
527 | mig_internal novalue _Xmemory_object_destroy |
528 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) |
529 | { |
530 | |
531 | #ifdef __MigPackStructs |
532 | #pragma pack(4) |
533 | #endif |
534 | typedef struct { |
535 | mach_msg_header_t Head; |
536 | NDR_record_t NDR; |
537 | kern_return_t reason; |
538 | mach_msg_trailer_t trailer; |
539 | } Request __attribute__((unused)); |
540 | #ifdef __MigPackStructs |
541 | #pragma pack() |
542 | #endif |
543 | typedef __Request__memory_object_destroy_t __Request; |
544 | typedef __Reply__memory_object_destroy_t Reply __attribute__((unused)); |
545 | |
546 | /* |
547 | * typedef struct { |
548 | * mach_msg_header_t Head; |
549 | * NDR_record_t NDR; |
550 | * kern_return_t RetCode; |
551 | * } mig_reply_error_t; |
552 | */ |
553 | |
554 | Request *In0P = (Request *) InHeadP; |
555 | Reply *OutP = (Reply *) OutHeadP; |
556 | #ifdef __MIG_check__Request__memory_object_destroy_t__defined |
557 | kern_return_t check_result; |
558 | #endif /* __MIG_check__Request__memory_object_destroy_t__defined */ |
559 | |
560 | #if __MigKernelSpecificCode |
561 | #else |
562 | #endif /* __MigKernelSpecificCode */ |
563 | memory_object_control_t memory_control; |
564 | |
565 | __DeclareRcvRpc(2004, "memory_object_destroy" ) |
566 | __BeforeRcvRpc(2004, "memory_object_destroy" ) |
567 | |
568 | #if defined(__MIG_check__Request__memory_object_destroy_t__defined) |
569 | check_result = __MIG_check__Request__memory_object_destroy_t((__Request *)In0P); |
570 | if (check_result != MACH_MSG_SUCCESS) |
571 | { MIG_RETURN_ERROR(OutP, check_result); } |
572 | #endif /* defined(__MIG_check__Request__memory_object_destroy_t__defined) */ |
573 | |
574 | memory_control = convert_port_to_mo_control(In0P->Head.msgh_request_port); |
575 | |
576 | OutP->RetCode = memory_object_destroy(memory_control, In0P->reason); |
577 | memory_object_control_deallocate(memory_control); |
578 | #if __MigKernelSpecificCode |
579 | #endif /* __MigKernelSpecificCode */ |
580 | |
581 | OutP->NDR = NDR_record; |
582 | |
583 | |
584 | __AfterRcvRpc(2004, "memory_object_destroy" ) |
585 | } |
586 | |
587 | #if ( __MigTypeCheck ) |
588 | #if __MIG_check__Request__memory_object_control_subsystem__ |
589 | #if !defined(__MIG_check__Request__memory_object_upl_request_t__defined) |
590 | #define __MIG_check__Request__memory_object_upl_request_t__defined |
591 | |
592 | mig_internal kern_return_t __MIG_check__Request__memory_object_upl_request_t(__attribute__((__unused__)) __Request__memory_object_upl_request_t *In0P) |
593 | { |
594 | |
595 | typedef __Request__memory_object_upl_request_t __Request; |
596 | #if __MigTypeCheck |
597 | if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || |
598 | (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request))) |
599 | return MIG_BAD_ARGUMENTS; |
600 | #endif /* __MigTypeCheck */ |
601 | |
602 | return MACH_MSG_SUCCESS; |
603 | } |
604 | #endif /* !defined(__MIG_check__Request__memory_object_upl_request_t__defined) */ |
605 | #endif /* __MIG_check__Request__memory_object_control_subsystem__ */ |
606 | #endif /* ( __MigTypeCheck ) */ |
607 | |
608 | |
609 | /* Routine memory_object_upl_request */ |
610 | mig_internal novalue _Xmemory_object_upl_request |
611 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) |
612 | { |
613 | |
614 | #ifdef __MigPackStructs |
615 | #pragma pack(4) |
616 | #endif |
617 | typedef struct { |
618 | mach_msg_header_t Head; |
619 | NDR_record_t NDR; |
620 | memory_object_offset_t offset; |
621 | upl_size_t size; |
622 | mach_msg_type_number_t page_listCnt; |
623 | integer_t cntrl_flags; |
624 | integer_t tag; |
625 | mach_msg_trailer_t trailer; |
626 | } Request __attribute__((unused)); |
627 | #ifdef __MigPackStructs |
628 | #pragma pack() |
629 | #endif |
630 | typedef __Request__memory_object_upl_request_t __Request; |
631 | typedef __Reply__memory_object_upl_request_t Reply __attribute__((unused)); |
632 | |
633 | /* |
634 | * typedef struct { |
635 | * mach_msg_header_t Head; |
636 | * NDR_record_t NDR; |
637 | * kern_return_t RetCode; |
638 | * } mig_reply_error_t; |
639 | */ |
640 | |
641 | Request *In0P = (Request *) InHeadP; |
642 | Reply *OutP = (Reply *) OutHeadP; |
643 | #ifdef __MIG_check__Request__memory_object_upl_request_t__defined |
644 | kern_return_t check_result; |
645 | #endif /* __MIG_check__Request__memory_object_upl_request_t__defined */ |
646 | |
647 | #if __MigKernelSpecificCode |
648 | #if UseStaticTemplates |
649 | const static mach_msg_port_descriptor_t uplTemplate = { |
650 | /* name = */ MACH_PORT_NULL, |
651 | /* pad1 = */ 0, |
652 | /* pad2 = */ 0, |
653 | /* disp = */ 17, |
654 | /* type = */ MACH_MSG_PORT_DESCRIPTOR, |
655 | }; |
656 | #endif /* UseStaticTemplates */ |
657 | |
658 | #else |
659 | #if UseStaticTemplates |
660 | const static mach_msg_port_descriptor_t uplTemplate = { |
661 | /* name = */ MACH_PORT_NULL, |
662 | /* pad1 = */ 0, |
663 | /* pad2 = */ 0, |
664 | /* disp = */ 19, |
665 | /* type = */ MACH_MSG_PORT_DESCRIPTOR, |
666 | }; |
667 | #endif /* UseStaticTemplates */ |
668 | |
669 | #endif /* __MigKernelSpecificCode */ |
670 | kern_return_t RetCode; |
671 | memory_object_control_t memory_control; |
672 | upl_t upl; |
673 | |
674 | __DeclareRcvRpc(2005, "memory_object_upl_request" ) |
675 | __BeforeRcvRpc(2005, "memory_object_upl_request" ) |
676 | |
677 | #if defined(__MIG_check__Request__memory_object_upl_request_t__defined) |
678 | check_result = __MIG_check__Request__memory_object_upl_request_t((__Request *)In0P); |
679 | if (check_result != MACH_MSG_SUCCESS) |
680 | { MIG_RETURN_ERROR(OutP, check_result); } |
681 | #endif /* defined(__MIG_check__Request__memory_object_upl_request_t__defined) */ |
682 | |
683 | #if UseStaticTemplates |
684 | OutP->upl = uplTemplate; |
685 | #else /* UseStaticTemplates */ |
686 | #if __MigKernelSpecificCode |
687 | OutP->upl.disposition = 17; |
688 | #else |
689 | OutP->upl.disposition = 19; |
690 | #endif /* __MigKernelSpecificCode */ |
691 | #if !(defined(KERNEL) && defined(__LP64__)) |
692 | OutP->upl.pad1 = 0; |
693 | #endif |
694 | OutP->upl.pad2 = 0; |
695 | OutP->upl.type = MACH_MSG_PORT_DESCRIPTOR; |
696 | #if defined(KERNEL) |
697 | OutP->upl.pad_end = 0; |
698 | #endif |
699 | #endif /* UseStaticTemplates */ |
700 | |
701 | |
702 | memory_control = convert_port_to_mo_control(In0P->Head.msgh_request_port); |
703 | |
704 | OutP->page_listCnt = 256; |
705 | if (In0P->page_listCnt < OutP->page_listCnt) |
706 | OutP->page_listCnt = In0P->page_listCnt; |
707 | |
708 | RetCode = memory_object_upl_request(memory_control, In0P->offset, In0P->size, &upl, OutP->page_list, &OutP->page_listCnt, In0P->cntrl_flags, In0P->tag); |
709 | memory_object_control_deallocate(memory_control); |
710 | if (RetCode != KERN_SUCCESS) { |
711 | MIG_RETURN_ERROR(OutP, RetCode); |
712 | } |
713 | #if __MigKernelSpecificCode |
714 | #endif /* __MigKernelSpecificCode */ |
715 | OutP->upl.name = (mach_port_t)convert_upl_to_port(upl); |
716 | |
717 | |
718 | OutP->NDR = NDR_record; |
719 | |
720 | OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply) - 2048) + (((8 * OutP->page_listCnt))); |
721 | |
722 | OutP->Head.msgh_bits |= MACH_MSGH_BITS_COMPLEX; |
723 | OutP->msgh_body.msgh_descriptor_count = 1; |
724 | __AfterRcvRpc(2005, "memory_object_upl_request" ) |
725 | } |
726 | |
727 | #if ( __MigTypeCheck ) |
728 | #if __MIG_check__Request__memory_object_control_subsystem__ |
729 | #if !defined(__MIG_check__Request__memory_object_super_upl_request_t__defined) |
730 | #define __MIG_check__Request__memory_object_super_upl_request_t__defined |
731 | |
732 | mig_internal kern_return_t __MIG_check__Request__memory_object_super_upl_request_t(__attribute__((__unused__)) __Request__memory_object_super_upl_request_t *In0P) |
733 | { |
734 | |
735 | typedef __Request__memory_object_super_upl_request_t __Request; |
736 | #if __MigTypeCheck |
737 | if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || |
738 | (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request))) |
739 | return MIG_BAD_ARGUMENTS; |
740 | #endif /* __MigTypeCheck */ |
741 | |
742 | return MACH_MSG_SUCCESS; |
743 | } |
744 | #endif /* !defined(__MIG_check__Request__memory_object_super_upl_request_t__defined) */ |
745 | #endif /* __MIG_check__Request__memory_object_control_subsystem__ */ |
746 | #endif /* ( __MigTypeCheck ) */ |
747 | |
748 | |
749 | /* Routine memory_object_super_upl_request */ |
750 | mig_internal novalue _Xmemory_object_super_upl_request |
751 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) |
752 | { |
753 | |
754 | #ifdef __MigPackStructs |
755 | #pragma pack(4) |
756 | #endif |
757 | typedef struct { |
758 | mach_msg_header_t Head; |
759 | NDR_record_t NDR; |
760 | memory_object_offset_t offset; |
761 | upl_size_t size; |
762 | upl_size_t super_size; |
763 | mach_msg_type_number_t page_listCnt; |
764 | integer_t cntrl_flags; |
765 | integer_t tag; |
766 | mach_msg_trailer_t trailer; |
767 | } Request __attribute__((unused)); |
768 | #ifdef __MigPackStructs |
769 | #pragma pack() |
770 | #endif |
771 | typedef __Request__memory_object_super_upl_request_t __Request; |
772 | typedef __Reply__memory_object_super_upl_request_t Reply __attribute__((unused)); |
773 | |
774 | /* |
775 | * typedef struct { |
776 | * mach_msg_header_t Head; |
777 | * NDR_record_t NDR; |
778 | * kern_return_t RetCode; |
779 | * } mig_reply_error_t; |
780 | */ |
781 | |
782 | Request *In0P = (Request *) InHeadP; |
783 | Reply *OutP = (Reply *) OutHeadP; |
784 | #ifdef __MIG_check__Request__memory_object_super_upl_request_t__defined |
785 | kern_return_t check_result; |
786 | #endif /* __MIG_check__Request__memory_object_super_upl_request_t__defined */ |
787 | |
788 | #if __MigKernelSpecificCode |
789 | #if UseStaticTemplates |
790 | const static mach_msg_port_descriptor_t uplTemplate = { |
791 | /* name = */ MACH_PORT_NULL, |
792 | /* pad1 = */ 0, |
793 | /* pad2 = */ 0, |
794 | /* disp = */ 17, |
795 | /* type = */ MACH_MSG_PORT_DESCRIPTOR, |
796 | }; |
797 | #endif /* UseStaticTemplates */ |
798 | |
799 | #else |
800 | #if UseStaticTemplates |
801 | const static mach_msg_port_descriptor_t uplTemplate = { |
802 | /* name = */ MACH_PORT_NULL, |
803 | /* pad1 = */ 0, |
804 | /* pad2 = */ 0, |
805 | /* disp = */ 19, |
806 | /* type = */ MACH_MSG_PORT_DESCRIPTOR, |
807 | }; |
808 | #endif /* UseStaticTemplates */ |
809 | |
810 | #endif /* __MigKernelSpecificCode */ |
811 | kern_return_t RetCode; |
812 | memory_object_control_t memory_control; |
813 | upl_t upl; |
814 | |
815 | __DeclareRcvRpc(2006, "memory_object_super_upl_request" ) |
816 | __BeforeRcvRpc(2006, "memory_object_super_upl_request" ) |
817 | |
818 | #if defined(__MIG_check__Request__memory_object_super_upl_request_t__defined) |
819 | check_result = __MIG_check__Request__memory_object_super_upl_request_t((__Request *)In0P); |
820 | if (check_result != MACH_MSG_SUCCESS) |
821 | { MIG_RETURN_ERROR(OutP, check_result); } |
822 | #endif /* defined(__MIG_check__Request__memory_object_super_upl_request_t__defined) */ |
823 | |
824 | #if UseStaticTemplates |
825 | OutP->upl = uplTemplate; |
826 | #else /* UseStaticTemplates */ |
827 | #if __MigKernelSpecificCode |
828 | OutP->upl.disposition = 17; |
829 | #else |
830 | OutP->upl.disposition = 19; |
831 | #endif /* __MigKernelSpecificCode */ |
832 | #if !(defined(KERNEL) && defined(__LP64__)) |
833 | OutP->upl.pad1 = 0; |
834 | #endif |
835 | OutP->upl.pad2 = 0; |
836 | OutP->upl.type = MACH_MSG_PORT_DESCRIPTOR; |
837 | #if defined(KERNEL) |
838 | OutP->upl.pad_end = 0; |
839 | #endif |
840 | #endif /* UseStaticTemplates */ |
841 | |
842 | |
843 | memory_control = convert_port_to_mo_control(In0P->Head.msgh_request_port); |
844 | |
845 | OutP->page_listCnt = 256; |
846 | if (In0P->page_listCnt < OutP->page_listCnt) |
847 | OutP->page_listCnt = In0P->page_listCnt; |
848 | |
849 | RetCode = memory_object_super_upl_request(memory_control, In0P->offset, In0P->size, In0P->super_size, &upl, OutP->page_list, &OutP->page_listCnt, In0P->cntrl_flags, In0P->tag); |
850 | memory_object_control_deallocate(memory_control); |
851 | if (RetCode != KERN_SUCCESS) { |
852 | MIG_RETURN_ERROR(OutP, RetCode); |
853 | } |
854 | #if __MigKernelSpecificCode |
855 | #endif /* __MigKernelSpecificCode */ |
856 | OutP->upl.name = (mach_port_t)convert_upl_to_port(upl); |
857 | |
858 | |
859 | OutP->NDR = NDR_record; |
860 | |
861 | OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply) - 2048) + (((8 * OutP->page_listCnt))); |
862 | |
863 | OutP->Head.msgh_bits |= MACH_MSGH_BITS_COMPLEX; |
864 | OutP->msgh_body.msgh_descriptor_count = 1; |
865 | __AfterRcvRpc(2006, "memory_object_super_upl_request" ) |
866 | } |
867 | |
868 | #if ( __MigTypeCheck ) |
869 | #if __MIG_check__Request__memory_object_control_subsystem__ |
870 | #if !defined(__MIG_check__Request__memory_object_cluster_size_t__defined) |
871 | #define __MIG_check__Request__memory_object_cluster_size_t__defined |
872 | |
873 | mig_internal kern_return_t __MIG_check__Request__memory_object_cluster_size_t(__attribute__((__unused__)) __Request__memory_object_cluster_size_t *In0P) |
874 | { |
875 | |
876 | typedef __Request__memory_object_cluster_size_t __Request; |
877 | #if __MigTypeCheck |
878 | if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || |
879 | (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request))) |
880 | return MIG_BAD_ARGUMENTS; |
881 | #endif /* __MigTypeCheck */ |
882 | |
883 | return MACH_MSG_SUCCESS; |
884 | } |
885 | #endif /* !defined(__MIG_check__Request__memory_object_cluster_size_t__defined) */ |
886 | #endif /* __MIG_check__Request__memory_object_control_subsystem__ */ |
887 | #endif /* ( __MigTypeCheck ) */ |
888 | |
889 | |
890 | /* Routine memory_object_cluster_size */ |
891 | mig_internal novalue _Xmemory_object_cluster_size |
892 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) |
893 | { |
894 | |
895 | #ifdef __MigPackStructs |
896 | #pragma pack(4) |
897 | #endif |
898 | typedef struct { |
899 | mach_msg_header_t Head; |
900 | NDR_record_t NDR; |
901 | memory_object_fault_info_t fault_info; |
902 | mach_msg_trailer_t trailer; |
903 | } Request __attribute__((unused)); |
904 | #ifdef __MigPackStructs |
905 | #pragma pack() |
906 | #endif |
907 | typedef __Request__memory_object_cluster_size_t __Request; |
908 | typedef __Reply__memory_object_cluster_size_t Reply __attribute__((unused)); |
909 | |
910 | /* |
911 | * typedef struct { |
912 | * mach_msg_header_t Head; |
913 | * NDR_record_t NDR; |
914 | * kern_return_t RetCode; |
915 | * } mig_reply_error_t; |
916 | */ |
917 | |
918 | Request *In0P = (Request *) InHeadP; |
919 | Reply *OutP = (Reply *) OutHeadP; |
920 | #ifdef __MIG_check__Request__memory_object_cluster_size_t__defined |
921 | kern_return_t check_result; |
922 | #endif /* __MIG_check__Request__memory_object_cluster_size_t__defined */ |
923 | |
924 | #if __MigKernelSpecificCode |
925 | #else |
926 | #endif /* __MigKernelSpecificCode */ |
927 | memory_object_control_t control; |
928 | |
929 | __DeclareRcvRpc(2007, "memory_object_cluster_size" ) |
930 | __BeforeRcvRpc(2007, "memory_object_cluster_size" ) |
931 | |
932 | #if defined(__MIG_check__Request__memory_object_cluster_size_t__defined) |
933 | check_result = __MIG_check__Request__memory_object_cluster_size_t((__Request *)In0P); |
934 | if (check_result != MACH_MSG_SUCCESS) |
935 | { MIG_RETURN_ERROR(OutP, check_result); } |
936 | #endif /* defined(__MIG_check__Request__memory_object_cluster_size_t__defined) */ |
937 | |
938 | control = convert_port_to_mo_control(In0P->Head.msgh_request_port); |
939 | |
940 | OutP->RetCode = memory_object_cluster_size(control, &OutP->start, &OutP->length, &OutP->io_streaming, In0P->fault_info); |
941 | memory_object_control_deallocate(control); |
942 | if (OutP->RetCode != KERN_SUCCESS) { |
943 | MIG_RETURN_ERROR(OutP, OutP->RetCode); |
944 | } |
945 | #if __MigKernelSpecificCode |
946 | #endif /* __MigKernelSpecificCode */ |
947 | |
948 | OutP->NDR = NDR_record; |
949 | |
950 | |
951 | OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply)); |
952 | __AfterRcvRpc(2007, "memory_object_cluster_size" ) |
953 | } |
954 | |
955 | #if ( __MigTypeCheck ) |
956 | #if __MIG_check__Request__memory_object_control_subsystem__ |
957 | #if !defined(__MIG_check__Request__memory_object_page_op_t__defined) |
958 | #define __MIG_check__Request__memory_object_page_op_t__defined |
959 | |
960 | mig_internal kern_return_t __MIG_check__Request__memory_object_page_op_t(__attribute__((__unused__)) __Request__memory_object_page_op_t *In0P) |
961 | { |
962 | |
963 | typedef __Request__memory_object_page_op_t __Request; |
964 | #if __MigTypeCheck |
965 | if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || |
966 | (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request))) |
967 | return MIG_BAD_ARGUMENTS; |
968 | #endif /* __MigTypeCheck */ |
969 | |
970 | return MACH_MSG_SUCCESS; |
971 | } |
972 | #endif /* !defined(__MIG_check__Request__memory_object_page_op_t__defined) */ |
973 | #endif /* __MIG_check__Request__memory_object_control_subsystem__ */ |
974 | #endif /* ( __MigTypeCheck ) */ |
975 | |
976 | |
977 | /* Routine memory_object_page_op */ |
978 | mig_internal novalue _Xmemory_object_page_op |
979 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) |
980 | { |
981 | |
982 | #ifdef __MigPackStructs |
983 | #pragma pack(4) |
984 | #endif |
985 | typedef struct { |
986 | mach_msg_header_t Head; |
987 | NDR_record_t NDR; |
988 | memory_object_offset_t offset; |
989 | integer_t ops; |
990 | mach_msg_trailer_t trailer; |
991 | } Request __attribute__((unused)); |
992 | #ifdef __MigPackStructs |
993 | #pragma pack() |
994 | #endif |
995 | typedef __Request__memory_object_page_op_t __Request; |
996 | typedef __Reply__memory_object_page_op_t Reply __attribute__((unused)); |
997 | |
998 | /* |
999 | * typedef struct { |
1000 | * mach_msg_header_t Head; |
1001 | * NDR_record_t NDR; |
1002 | * kern_return_t RetCode; |
1003 | * } mig_reply_error_t; |
1004 | */ |
1005 | |
1006 | Request *In0P = (Request *) InHeadP; |
1007 | Reply *OutP = (Reply *) OutHeadP; |
1008 | #ifdef __MIG_check__Request__memory_object_page_op_t__defined |
1009 | kern_return_t check_result; |
1010 | #endif /* __MIG_check__Request__memory_object_page_op_t__defined */ |
1011 | |
1012 | #if __MigKernelSpecificCode |
1013 | #else |
1014 | #endif /* __MigKernelSpecificCode */ |
1015 | memory_object_control_t memory_control; |
1016 | |
1017 | __DeclareRcvRpc(2008, "memory_object_page_op" ) |
1018 | __BeforeRcvRpc(2008, "memory_object_page_op" ) |
1019 | |
1020 | #if defined(__MIG_check__Request__memory_object_page_op_t__defined) |
1021 | check_result = __MIG_check__Request__memory_object_page_op_t((__Request *)In0P); |
1022 | if (check_result != MACH_MSG_SUCCESS) |
1023 | { MIG_RETURN_ERROR(OutP, check_result); } |
1024 | #endif /* defined(__MIG_check__Request__memory_object_page_op_t__defined) */ |
1025 | |
1026 | memory_control = convert_port_to_mo_control(In0P->Head.msgh_request_port); |
1027 | |
1028 | OutP->RetCode = memory_object_page_op(memory_control, In0P->offset, In0P->ops, &OutP->phys_entry, &OutP->flags); |
1029 | memory_object_control_deallocate(memory_control); |
1030 | if (OutP->RetCode != KERN_SUCCESS) { |
1031 | MIG_RETURN_ERROR(OutP, OutP->RetCode); |
1032 | } |
1033 | #if __MigKernelSpecificCode |
1034 | #endif /* __MigKernelSpecificCode */ |
1035 | |
1036 | OutP->NDR = NDR_record; |
1037 | |
1038 | |
1039 | OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply)); |
1040 | __AfterRcvRpc(2008, "memory_object_page_op" ) |
1041 | } |
1042 | |
1043 | #if ( __MigTypeCheck ) |
1044 | #if __MIG_check__Request__memory_object_control_subsystem__ |
1045 | #if !defined(__MIG_check__Request__memory_object_recover_named_t__defined) |
1046 | #define __MIG_check__Request__memory_object_recover_named_t__defined |
1047 | |
1048 | mig_internal kern_return_t __MIG_check__Request__memory_object_recover_named_t(__attribute__((__unused__)) __Request__memory_object_recover_named_t *In0P) |
1049 | { |
1050 | |
1051 | typedef __Request__memory_object_recover_named_t __Request; |
1052 | #if __MigTypeCheck |
1053 | if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || |
1054 | (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request))) |
1055 | return MIG_BAD_ARGUMENTS; |
1056 | #endif /* __MigTypeCheck */ |
1057 | |
1058 | return MACH_MSG_SUCCESS; |
1059 | } |
1060 | #endif /* !defined(__MIG_check__Request__memory_object_recover_named_t__defined) */ |
1061 | #endif /* __MIG_check__Request__memory_object_control_subsystem__ */ |
1062 | #endif /* ( __MigTypeCheck ) */ |
1063 | |
1064 | |
1065 | /* Routine memory_object_recover_named */ |
1066 | mig_internal novalue _Xmemory_object_recover_named |
1067 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) |
1068 | { |
1069 | |
1070 | #ifdef __MigPackStructs |
1071 | #pragma pack(4) |
1072 | #endif |
1073 | typedef struct { |
1074 | mach_msg_header_t Head; |
1075 | NDR_record_t NDR; |
1076 | boolean_t wait_on_terminating; |
1077 | mach_msg_trailer_t trailer; |
1078 | } Request __attribute__((unused)); |
1079 | #ifdef __MigPackStructs |
1080 | #pragma pack() |
1081 | #endif |
1082 | typedef __Request__memory_object_recover_named_t __Request; |
1083 | typedef __Reply__memory_object_recover_named_t Reply __attribute__((unused)); |
1084 | |
1085 | /* |
1086 | * typedef struct { |
1087 | * mach_msg_header_t Head; |
1088 | * NDR_record_t NDR; |
1089 | * kern_return_t RetCode; |
1090 | * } mig_reply_error_t; |
1091 | */ |
1092 | |
1093 | Request *In0P = (Request *) InHeadP; |
1094 | Reply *OutP = (Reply *) OutHeadP; |
1095 | #ifdef __MIG_check__Request__memory_object_recover_named_t__defined |
1096 | kern_return_t check_result; |
1097 | #endif /* __MIG_check__Request__memory_object_recover_named_t__defined */ |
1098 | |
1099 | #if __MigKernelSpecificCode |
1100 | #else |
1101 | #endif /* __MigKernelSpecificCode */ |
1102 | memory_object_control_t memory_control; |
1103 | |
1104 | __DeclareRcvRpc(2009, "memory_object_recover_named" ) |
1105 | __BeforeRcvRpc(2009, "memory_object_recover_named" ) |
1106 | |
1107 | #if defined(__MIG_check__Request__memory_object_recover_named_t__defined) |
1108 | check_result = __MIG_check__Request__memory_object_recover_named_t((__Request *)In0P); |
1109 | if (check_result != MACH_MSG_SUCCESS) |
1110 | { MIG_RETURN_ERROR(OutP, check_result); } |
1111 | #endif /* defined(__MIG_check__Request__memory_object_recover_named_t__defined) */ |
1112 | |
1113 | memory_control = convert_port_to_mo_control(In0P->Head.msgh_request_port); |
1114 | |
1115 | OutP->RetCode = memory_object_recover_named(memory_control, In0P->wait_on_terminating); |
1116 | memory_object_control_deallocate(memory_control); |
1117 | #if __MigKernelSpecificCode |
1118 | #endif /* __MigKernelSpecificCode */ |
1119 | |
1120 | OutP->NDR = NDR_record; |
1121 | |
1122 | |
1123 | __AfterRcvRpc(2009, "memory_object_recover_named" ) |
1124 | } |
1125 | |
1126 | #if ( __MigTypeCheck ) |
1127 | #if __MIG_check__Request__memory_object_control_subsystem__ |
1128 | #if !defined(__MIG_check__Request__memory_object_release_name_t__defined) |
1129 | #define __MIG_check__Request__memory_object_release_name_t__defined |
1130 | |
1131 | mig_internal kern_return_t __MIG_check__Request__memory_object_release_name_t(__attribute__((__unused__)) __Request__memory_object_release_name_t *In0P) |
1132 | { |
1133 | |
1134 | typedef __Request__memory_object_release_name_t __Request; |
1135 | #if __MigTypeCheck |
1136 | if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || |
1137 | (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request))) |
1138 | return MIG_BAD_ARGUMENTS; |
1139 | #endif /* __MigTypeCheck */ |
1140 | |
1141 | return MACH_MSG_SUCCESS; |
1142 | } |
1143 | #endif /* !defined(__MIG_check__Request__memory_object_release_name_t__defined) */ |
1144 | #endif /* __MIG_check__Request__memory_object_control_subsystem__ */ |
1145 | #endif /* ( __MigTypeCheck ) */ |
1146 | |
1147 | |
1148 | /* Routine memory_object_release_name */ |
1149 | mig_internal novalue _Xmemory_object_release_name |
1150 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) |
1151 | { |
1152 | |
1153 | #ifdef __MigPackStructs |
1154 | #pragma pack(4) |
1155 | #endif |
1156 | typedef struct { |
1157 | mach_msg_header_t Head; |
1158 | NDR_record_t NDR; |
1159 | integer_t flags; |
1160 | mach_msg_trailer_t trailer; |
1161 | } Request __attribute__((unused)); |
1162 | #ifdef __MigPackStructs |
1163 | #pragma pack() |
1164 | #endif |
1165 | typedef __Request__memory_object_release_name_t __Request; |
1166 | typedef __Reply__memory_object_release_name_t Reply __attribute__((unused)); |
1167 | |
1168 | /* |
1169 | * typedef struct { |
1170 | * mach_msg_header_t Head; |
1171 | * NDR_record_t NDR; |
1172 | * kern_return_t RetCode; |
1173 | * } mig_reply_error_t; |
1174 | */ |
1175 | |
1176 | Request *In0P = (Request *) InHeadP; |
1177 | Reply *OutP = (Reply *) OutHeadP; |
1178 | #ifdef __MIG_check__Request__memory_object_release_name_t__defined |
1179 | kern_return_t check_result; |
1180 | #endif /* __MIG_check__Request__memory_object_release_name_t__defined */ |
1181 | |
1182 | #if __MigKernelSpecificCode |
1183 | #else |
1184 | #endif /* __MigKernelSpecificCode */ |
1185 | memory_object_control_t memory_control; |
1186 | |
1187 | __DeclareRcvRpc(2010, "memory_object_release_name" ) |
1188 | __BeforeRcvRpc(2010, "memory_object_release_name" ) |
1189 | |
1190 | #if defined(__MIG_check__Request__memory_object_release_name_t__defined) |
1191 | check_result = __MIG_check__Request__memory_object_release_name_t((__Request *)In0P); |
1192 | if (check_result != MACH_MSG_SUCCESS) |
1193 | { MIG_RETURN_ERROR(OutP, check_result); } |
1194 | #endif /* defined(__MIG_check__Request__memory_object_release_name_t__defined) */ |
1195 | |
1196 | memory_control = convert_port_to_mo_control(In0P->Head.msgh_request_port); |
1197 | |
1198 | OutP->RetCode = memory_object_release_name(memory_control, In0P->flags); |
1199 | memory_object_control_deallocate(memory_control); |
1200 | #if __MigKernelSpecificCode |
1201 | #endif /* __MigKernelSpecificCode */ |
1202 | |
1203 | OutP->NDR = NDR_record; |
1204 | |
1205 | |
1206 | __AfterRcvRpc(2010, "memory_object_release_name" ) |
1207 | } |
1208 | |
1209 | #if ( __MigTypeCheck ) |
1210 | #if __MIG_check__Request__memory_object_control_subsystem__ |
1211 | #if !defined(__MIG_check__Request__memory_object_range_op_t__defined) |
1212 | #define __MIG_check__Request__memory_object_range_op_t__defined |
1213 | |
1214 | mig_internal kern_return_t __MIG_check__Request__memory_object_range_op_t(__attribute__((__unused__)) __Request__memory_object_range_op_t *In0P) |
1215 | { |
1216 | |
1217 | typedef __Request__memory_object_range_op_t __Request; |
1218 | #if __MigTypeCheck |
1219 | if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || |
1220 | (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request))) |
1221 | return MIG_BAD_ARGUMENTS; |
1222 | #endif /* __MigTypeCheck */ |
1223 | |
1224 | return MACH_MSG_SUCCESS; |
1225 | } |
1226 | #endif /* !defined(__MIG_check__Request__memory_object_range_op_t__defined) */ |
1227 | #endif /* __MIG_check__Request__memory_object_control_subsystem__ */ |
1228 | #endif /* ( __MigTypeCheck ) */ |
1229 | |
1230 | |
1231 | /* Routine memory_object_range_op */ |
1232 | mig_internal novalue _Xmemory_object_range_op |
1233 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) |
1234 | { |
1235 | |
1236 | #ifdef __MigPackStructs |
1237 | #pragma pack(4) |
1238 | #endif |
1239 | typedef struct { |
1240 | mach_msg_header_t Head; |
1241 | NDR_record_t NDR; |
1242 | memory_object_offset_t offset_beg; |
1243 | memory_object_offset_t offset_end; |
1244 | integer_t ops; |
1245 | mach_msg_trailer_t trailer; |
1246 | } Request __attribute__((unused)); |
1247 | #ifdef __MigPackStructs |
1248 | #pragma pack() |
1249 | #endif |
1250 | typedef __Request__memory_object_range_op_t __Request; |
1251 | typedef __Reply__memory_object_range_op_t Reply __attribute__((unused)); |
1252 | |
1253 | /* |
1254 | * typedef struct { |
1255 | * mach_msg_header_t Head; |
1256 | * NDR_record_t NDR; |
1257 | * kern_return_t RetCode; |
1258 | * } mig_reply_error_t; |
1259 | */ |
1260 | |
1261 | Request *In0P = (Request *) InHeadP; |
1262 | Reply *OutP = (Reply *) OutHeadP; |
1263 | #ifdef __MIG_check__Request__memory_object_range_op_t__defined |
1264 | kern_return_t check_result; |
1265 | #endif /* __MIG_check__Request__memory_object_range_op_t__defined */ |
1266 | |
1267 | #if __MigKernelSpecificCode |
1268 | #else |
1269 | #endif /* __MigKernelSpecificCode */ |
1270 | memory_object_control_t memory_control; |
1271 | |
1272 | __DeclareRcvRpc(2011, "memory_object_range_op" ) |
1273 | __BeforeRcvRpc(2011, "memory_object_range_op" ) |
1274 | |
1275 | #if defined(__MIG_check__Request__memory_object_range_op_t__defined) |
1276 | check_result = __MIG_check__Request__memory_object_range_op_t((__Request *)In0P); |
1277 | if (check_result != MACH_MSG_SUCCESS) |
1278 | { MIG_RETURN_ERROR(OutP, check_result); } |
1279 | #endif /* defined(__MIG_check__Request__memory_object_range_op_t__defined) */ |
1280 | |
1281 | memory_control = convert_port_to_mo_control(In0P->Head.msgh_request_port); |
1282 | |
1283 | OutP->RetCode = memory_object_range_op(memory_control, In0P->offset_beg, In0P->offset_end, In0P->ops, &OutP->range); |
1284 | memory_object_control_deallocate(memory_control); |
1285 | if (OutP->RetCode != KERN_SUCCESS) { |
1286 | MIG_RETURN_ERROR(OutP, OutP->RetCode); |
1287 | } |
1288 | #if __MigKernelSpecificCode |
1289 | #endif /* __MigKernelSpecificCode */ |
1290 | |
1291 | OutP->NDR = NDR_record; |
1292 | |
1293 | |
1294 | OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply)); |
1295 | __AfterRcvRpc(2011, "memory_object_range_op" ) |
1296 | } |
1297 | |
1298 | |
1299 | |
1300 | /* Description of this subsystem, for use in direct RPC */ |
1301 | const struct memory_object_control_subsystem memory_object_control_subsystem = { |
1302 | memory_object_control_server_routine, |
1303 | 2000, |
1304 | 2012, |
1305 | (mach_msg_size_t)sizeof(union __ReplyUnion__memory_object_control_subsystem), |
1306 | (vm_address_t)0, |
1307 | { |
1308 | { (mig_impl_routine_t) 0, |
1309 | (mig_stub_routine_t) _Xmemory_object_get_attributes, 4, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__memory_object_get_attributes_t)}, |
1310 | { (mig_impl_routine_t) 0, |
1311 | (mig_stub_routine_t) _Xmemory_object_change_attributes, 4, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__memory_object_change_attributes_t)}, |
1312 | { (mig_impl_routine_t) 0, |
1313 | (mig_stub_routine_t) _Xmemory_object_synchronize_completed, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__memory_object_synchronize_completed_t)}, |
1314 | { (mig_impl_routine_t) 0, |
1315 | (mig_stub_routine_t) _Xmemory_object_lock_request, 10, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__memory_object_lock_request_t)}, |
1316 | { (mig_impl_routine_t) 0, |
1317 | (mig_stub_routine_t) _Xmemory_object_destroy, 2, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__memory_object_destroy_t)}, |
1318 | { (mig_impl_routine_t) 0, |
1319 | (mig_stub_routine_t) _Xmemory_object_upl_request, 9, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__memory_object_upl_request_t)}, |
1320 | { (mig_impl_routine_t) 0, |
1321 | (mig_stub_routine_t) _Xmemory_object_super_upl_request, 10, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__memory_object_super_upl_request_t)}, |
1322 | { (mig_impl_routine_t) 0, |
1323 | (mig_stub_routine_t) _Xmemory_object_cluster_size, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__memory_object_cluster_size_t)}, |
1324 | { (mig_impl_routine_t) 0, |
1325 | (mig_stub_routine_t) _Xmemory_object_page_op, 6, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__memory_object_page_op_t)}, |
1326 | { (mig_impl_routine_t) 0, |
1327 | (mig_stub_routine_t) _Xmemory_object_recover_named, 2, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__memory_object_recover_named_t)}, |
1328 | { (mig_impl_routine_t) 0, |
1329 | (mig_stub_routine_t) _Xmemory_object_release_name, 2, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__memory_object_release_name_t)}, |
1330 | { (mig_impl_routine_t) 0, |
1331 | (mig_stub_routine_t) _Xmemory_object_range_op, 7, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__memory_object_range_op_t)}, |
1332 | } |
1333 | }; |
1334 | |
1335 | mig_external boolean_t memory_object_control_server |
1336 | (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) |
1337 | { |
1338 | /* |
1339 | * typedef struct { |
1340 | * mach_msg_header_t Head; |
1341 | * NDR_record_t NDR; |
1342 | * kern_return_t RetCode; |
1343 | * } mig_reply_error_t; |
1344 | */ |
1345 | |
1346 | register mig_routine_t routine; |
1347 | |
1348 | OutHeadP->msgh_bits = MACH_MSGH_BITS(MACH_MSGH_BITS_REPLY(InHeadP->msgh_bits), 0); |
1349 | OutHeadP->msgh_remote_port = InHeadP->msgh_reply_port; |
1350 | /* Minimal size: routine() will update it if different */ |
1351 | OutHeadP->msgh_size = (mach_msg_size_t)sizeof(mig_reply_error_t); |
1352 | OutHeadP->msgh_local_port = MACH_PORT_NULL; |
1353 | OutHeadP->msgh_id = InHeadP->msgh_id + 100; |
1354 | OutHeadP->msgh_reserved = 0; |
1355 | |
1356 | if ((InHeadP->msgh_id > 2011) || (InHeadP->msgh_id < 2000) || |
1357 | ((routine = memory_object_control_subsystem.routine[InHeadP->msgh_id - 2000].stub_routine) == 0)) { |
1358 | ((mig_reply_error_t *)OutHeadP)->NDR = NDR_record; |
1359 | ((mig_reply_error_t *)OutHeadP)->RetCode = MIG_BAD_ID; |
1360 | return FALSE; |
1361 | } |
1362 | (*routine) (InHeadP, OutHeadP); |
1363 | return TRUE; |
1364 | } |
1365 | |
1366 | mig_external mig_routine_t memory_object_control_server_routine |
1367 | (mach_msg_header_t *InHeadP) |
1368 | { |
1369 | register int msgh_id; |
1370 | |
1371 | msgh_id = InHeadP->msgh_id - 2000; |
1372 | |
1373 | if ((msgh_id > 11) || (msgh_id < 0)) |
1374 | return 0; |
1375 | |
1376 | return memory_object_control_subsystem.routine[msgh_id].stub_routine; |
1377 | } |
1378 | |