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
98mig_internal novalue _Xmemory_object_get_attributes
99 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
100
101mig_internal novalue _Xmemory_object_change_attributes
102 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
103
104mig_internal novalue _Xmemory_object_synchronize_completed
105 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
106
107mig_internal novalue _Xmemory_object_lock_request
108 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
109
110mig_internal novalue _Xmemory_object_destroy
111 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
112
113mig_internal novalue _Xmemory_object_upl_request
114 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
115
116mig_internal novalue _Xmemory_object_super_upl_request
117 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
118
119mig_internal novalue _Xmemory_object_cluster_size
120 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
121
122mig_internal novalue _Xmemory_object_page_op
123 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
124
125mig_internal novalue _Xmemory_object_recover_named
126 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
127
128mig_internal novalue _Xmemory_object_release_name
129 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
130
131mig_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
140mig_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 */
158mig_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
232mig_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 */
267mig_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
334mig_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 */
352mig_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
418mig_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 */
436mig_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
509mig_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 */
527mig_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
592mig_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 */
610mig_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
732mig_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 */
750mig_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
873mig_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 */
891mig_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
960mig_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 */
978mig_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
1048mig_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 */
1066mig_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
1131mig_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 */
1149mig_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
1214mig_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 */
1232mig_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 */
1301const 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
1335mig_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
1366mig_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