1#ifndef _map_server_
2#define _map_server_
3
4/* Module map */
5
6#include <string.h>
7#include <mach/ndr.h>
8#include <mach/boolean.h>
9#include <mach/kern_return.h>
10#include <mach/notify.h>
11#include <mach/mach_types.h>
12#include <mach/message.h>
13#include <mach/mig_errors.h>
14#include <mach/port.h>
15
16/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
17
18#if defined(__has_include)
19#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
20#ifndef USING_MIG_STRNCPY_ZEROFILL
21#define USING_MIG_STRNCPY_ZEROFILL
22#endif
23#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
24#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
25#ifdef __cplusplus
26extern "C" {
27#endif
28 extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
29#ifdef __cplusplus
30}
31#endif
32#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
33#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
34#endif /* __has_include */
35
36/* END MIG_STRNCPY_ZEROFILL CODE */
37
38
39#ifdef AUTOTEST
40#ifndef FUNCTION_PTR_T
41#define FUNCTION_PTR_T
42typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
43typedef struct {
44 char *name;
45 function_ptr_t function;
46} function_table_entry;
47typedef function_table_entry *function_table_t;
48#endif /* FUNCTION_PTR_T */
49#endif /* AUTOTEST */
50
51#ifndef map_MSG_COUNT
52#define map_MSG_COUNT 32
53#endif /* map_MSG_COUNT */
54
55#include <mach/std_types.h>
56#include <mach/mig.h>
57#include <ipc/ipc_voucher.h>
58#include <kern/ipc_kobject.h>
59#include <kern/ipc_tt.h>
60#include <kern/ipc_host.h>
61#include <kern/ipc_sync.h>
62#include <kern/ledger.h>
63#include <kern/processor.h>
64#include <kern/sync_lock.h>
65#include <kern/sync_sema.h>
66#include <vm/memory_object.h>
67#include <vm/vm_map.h>
68#include <kern/ipc_mig.h>
69#include <mach/mig.h>
70#include <mach/mach_types.h>
71#include <mach_debug/mach_debug_types.h>
72
73#ifdef __BeforeMigServerHeader
74__BeforeMigServerHeader
75#endif /* __BeforeMigServerHeader */
76
77
78/* Routine region */
79#ifdef mig_external
80mig_external
81#else
82extern
83#endif /* mig_external */
84kern_return_t vm32_region
85(
86 vm_map_t target_task,
87 vm32_address_t *address,
88 vm32_size_t *size,
89 vm_region_flavor_t flavor,
90 vm_region_info_t info,
91 mach_msg_type_number_t *infoCnt,
92 mach_port_t *object_name
93);
94
95/* Routine allocate */
96#ifdef mig_external
97mig_external
98#else
99extern
100#endif /* mig_external */
101kern_return_t vm32_allocate
102(
103 vm_map_t target_task,
104 vm32_address_t *address,
105 vm32_size_t size,
106 int flags
107);
108
109/* Routine deallocate */
110#ifdef mig_external
111mig_external
112#else
113extern
114#endif /* mig_external */
115kern_return_t vm32_deallocate
116(
117 vm_map_t target_task,
118 vm32_address_t address,
119 vm32_size_t size
120);
121
122/* Routine protect */
123#ifdef mig_external
124mig_external
125#else
126extern
127#endif /* mig_external */
128kern_return_t vm32_protect
129(
130 vm_map_t target_task,
131 vm32_address_t address,
132 vm32_size_t size,
133 boolean_t set_maximum,
134 vm_prot_t new_protection
135);
136
137/* Routine inherit */
138#ifdef mig_external
139mig_external
140#else
141extern
142#endif /* mig_external */
143kern_return_t vm32_inherit
144(
145 vm_map_t target_task,
146 vm32_address_t address,
147 vm32_size_t size,
148 vm_inherit_t new_inheritance
149);
150
151/* Routine read */
152#ifdef mig_external
153mig_external
154#else
155extern
156#endif /* mig_external */
157kern_return_t vm32_read
158(
159 vm_map_t target_task,
160 vm32_address_t address,
161 vm32_size_t size,
162 vm_offset_t *data,
163 mach_msg_type_number_t *dataCnt
164);
165
166/* Routine read_list */
167#ifdef mig_external
168mig_external
169#else
170extern
171#endif /* mig_external */
172kern_return_t vm32_read_list
173(
174 vm_map_t target_task,
175 vm32_read_entry_t data_list,
176 natural_t count
177);
178
179/* Routine write */
180#ifdef mig_external
181mig_external
182#else
183extern
184#endif /* mig_external */
185kern_return_t vm32_write
186(
187 vm_map_t target_task,
188 vm32_address_t address,
189 vm_offset_t data,
190 mach_msg_type_number_t dataCnt
191);
192
193/* Routine copy */
194#ifdef mig_external
195mig_external
196#else
197extern
198#endif /* mig_external */
199kern_return_t vm32_copy
200(
201 vm_map_t target_task,
202 vm32_address_t source_address,
203 vm32_size_t size,
204 vm32_address_t dest_address
205);
206
207/* Routine read_overwrite */
208#ifdef mig_external
209mig_external
210#else
211extern
212#endif /* mig_external */
213kern_return_t vm32_read_overwrite
214(
215 vm_map_t target_task,
216 vm32_address_t address,
217 vm32_size_t size,
218 vm32_address_t data,
219 vm32_size_t *outsize
220);
221
222/* Routine msync */
223#ifdef mig_external
224mig_external
225#else
226extern
227#endif /* mig_external */
228kern_return_t vm32_msync
229(
230 vm_map_t target_task,
231 vm32_address_t address,
232 vm32_size_t size,
233 vm_sync_t sync_flags
234);
235
236/* Routine behavior_set */
237#ifdef mig_external
238mig_external
239#else
240extern
241#endif /* mig_external */
242kern_return_t vm32_behavior_set
243(
244 vm_map_t target_task,
245 vm32_address_t address,
246 vm32_size_t size,
247 vm_behavior_t new_behavior
248);
249
250/* Routine map */
251#ifdef mig_external
252mig_external
253#else
254extern
255#endif /* mig_external */
256kern_return_t vm32_map
257(
258 vm_map_t target_task,
259 vm32_address_t *address,
260 vm32_size_t size,
261 vm32_address_t mask,
262 int flags,
263 mem_entry_name_port_t object,
264 vm32_offset_t offset,
265 boolean_t copy,
266 vm_prot_t cur_protection,
267 vm_prot_t max_protection,
268 vm_inherit_t inheritance
269);
270
271/* Routine machine_attribute */
272#ifdef mig_external
273mig_external
274#else
275extern
276#endif /* mig_external */
277kern_return_t vm32_machine_attribute
278(
279 vm_map_t target_task,
280 vm32_address_t address,
281 vm32_size_t size,
282 vm_machine_attribute_t attribute,
283 vm_machine_attribute_val_t *value
284);
285
286/* Routine remap */
287#ifdef mig_external
288mig_external
289#else
290extern
291#endif /* mig_external */
292kern_return_t vm32_remap
293(
294 vm_map_t target_task,
295 vm32_address_t *target_address,
296 vm32_size_t size,
297 vm32_address_t mask,
298 boolean_t anywhere,
299 vm_map_t src_task,
300 vm32_address_t src_address,
301 boolean_t copy,
302 vm_prot_t *cur_protection,
303 vm_prot_t *max_protection,
304 vm_inherit_t inheritance
305);
306
307/* Routine _task_wire */
308#ifdef mig_external
309mig_external
310#else
311extern
312#endif /* mig_external */
313kern_return_t vm32__task_wire
314(
315 vm_map_t target_task,
316 boolean_t must_wire
317);
318
319/* Routine make_memory_entry */
320#ifdef mig_external
321mig_external
322#else
323extern
324#endif /* mig_external */
325kern_return_t vm32_make_memory_entry
326(
327 vm_map_t target_task,
328 vm32_size_t *size,
329 vm32_offset_t offset,
330 vm_prot_t permission,
331 mem_entry_name_port_t *object_handle,
332 mem_entry_name_port_t parent_entry
333);
334
335/* Routine map_page_query */
336#ifdef mig_external
337mig_external
338#else
339extern
340#endif /* mig_external */
341kern_return_t vm32_map_page_query
342(
343 vm_map_t target_map,
344 vm32_offset_t offset,
345 integer_t *disposition,
346 integer_t *ref_count
347);
348
349/* Routine region_info */
350#ifdef mig_external
351mig_external
352#else
353extern
354#endif /* mig_external */
355kern_return_t vm32_region_info
356(
357 vm_map_t task,
358 vm32_address_t address,
359 vm_info_region_t *region,
360 vm_info_object_array_t *objects,
361 mach_msg_type_number_t *objectsCnt
362);
363
364/* Routine mapped_pages_info */
365#ifdef mig_external
366mig_external
367#else
368extern
369#endif /* mig_external */
370kern_return_t vm32_mapped_pages_info
371(
372 vm_map_t task,
373 page_address_array_t *pages,
374 mach_msg_type_number_t *pagesCnt
375);
376
377/* Routine region_recurse */
378#ifdef mig_external
379mig_external
380#else
381extern
382#endif /* mig_external */
383kern_return_t vm32_region_recurse
384(
385 vm_map_t target_task,
386 vm32_address_t *address,
387 vm32_size_t *size,
388 natural_t *nesting_depth,
389 vm_region_recurse_info_t info,
390 mach_msg_type_number_t *infoCnt
391);
392
393/* Routine region_recurse_64 */
394#ifdef mig_external
395mig_external
396#else
397extern
398#endif /* mig_external */
399kern_return_t vm32_region_recurse_64
400(
401 vm_map_t target_task,
402 vm32_address_t *address,
403 vm32_size_t *size,
404 natural_t *nesting_depth,
405 vm_region_recurse_info_t info,
406 mach_msg_type_number_t *infoCnt
407);
408
409/* Routine region_info_64 */
410#ifdef mig_external
411mig_external
412#else
413extern
414#endif /* mig_external */
415kern_return_t vm32_region_info_64
416(
417 vm_map_t task,
418 vm32_address_t address,
419 vm_info_region_64_t *region,
420 vm_info_object_array_t *objects,
421 mach_msg_type_number_t *objectsCnt
422);
423
424/* Routine region_64 */
425#ifdef mig_external
426mig_external
427#else
428extern
429#endif /* mig_external */
430kern_return_t vm32_region_64
431(
432 vm_map_t target_task,
433 vm32_address_t *address,
434 vm32_size_t *size,
435 vm_region_flavor_t flavor,
436 vm_region_info_t info,
437 mach_msg_type_number_t *infoCnt,
438 mach_port_t *object_name
439);
440
441/* Routine make_memory_entry_64 */
442#ifdef mig_external
443mig_external
444#else
445extern
446#endif /* mig_external */
447kern_return_t vm32_make_memory_entry_64
448(
449 vm_map_t target_task,
450 memory_object_size_t *size,
451 memory_object_offset_t offset,
452 vm_prot_t permission,
453 mach_port_t *object_handle,
454 mem_entry_name_port_t parent_entry
455);
456
457/* Routine map_64 */
458#ifdef mig_external
459mig_external
460#else
461extern
462#endif /* mig_external */
463kern_return_t vm32_map_64
464(
465 vm_map_t target_task,
466 vm32_address_t *address,
467 vm32_size_t size,
468 vm32_address_t mask,
469 int flags,
470 mem_entry_name_port_t object,
471 memory_object_offset_t offset,
472 boolean_t copy,
473 vm_prot_t cur_protection,
474 vm_prot_t max_protection,
475 vm_inherit_t inheritance
476);
477
478/* Routine purgable_control */
479#ifdef mig_external
480mig_external
481#else
482extern
483#endif /* mig_external */
484kern_return_t vm32_purgable_control
485(
486 vm_map_t target_task,
487 vm32_address_t address,
488 vm_purgable_t control,
489 int *state
490);
491
492/* Routine _map_exec_lockdown */
493#ifdef mig_external
494mig_external
495#else
496extern
497#endif /* mig_external */
498kern_return_t vm32__map_exec_lockdown
499(
500 vm_map_t target_task
501);
502
503#ifdef mig_external
504mig_external
505#else
506extern
507#endif /* mig_external */
508boolean_t map_server(
509 mach_msg_header_t *InHeadP,
510 mach_msg_header_t *OutHeadP);
511
512#ifdef mig_external
513mig_external
514#else
515extern
516#endif /* mig_external */
517mig_routine_t map_server_routine(
518 mach_msg_header_t *InHeadP);
519
520
521/* Description of this subsystem, for use in direct RPC */
522extern const struct vm32_map_subsystem {
523 mig_server_routine_t server; /* Server routine */
524 mach_msg_id_t start; /* Min routine number */
525 mach_msg_id_t end; /* Max routine number + 1 */
526 unsigned int maxsize; /* Max msg size */
527 vm_address_t reserved; /* Reserved */
528 struct routine_descriptor /*Array of routine descriptors */
529 routine[32];
530} vm32_map_subsystem;
531
532/* typedefs for all requests */
533
534#ifndef __Request__map_subsystem__defined
535#define __Request__map_subsystem__defined
536
537#ifdef __MigPackStructs
538#pragma pack(4)
539#endif
540 typedef struct {
541 mach_msg_header_t Head;
542 NDR_record_t NDR;
543 vm32_address_t address;
544 vm_region_flavor_t flavor;
545 mach_msg_type_number_t infoCnt;
546 } __Request__region_t __attribute__((unused));
547#ifdef __MigPackStructs
548#pragma pack()
549#endif
550
551#ifdef __MigPackStructs
552#pragma pack(4)
553#endif
554 typedef struct {
555 mach_msg_header_t Head;
556 NDR_record_t NDR;
557 vm32_address_t address;
558 vm32_size_t size;
559 int flags;
560 } __Request__allocate_t __attribute__((unused));
561#ifdef __MigPackStructs
562#pragma pack()
563#endif
564
565#ifdef __MigPackStructs
566#pragma pack(4)
567#endif
568 typedef struct {
569 mach_msg_header_t Head;
570 NDR_record_t NDR;
571 vm32_address_t address;
572 vm32_size_t size;
573 } __Request__deallocate_t __attribute__((unused));
574#ifdef __MigPackStructs
575#pragma pack()
576#endif
577
578#ifdef __MigPackStructs
579#pragma pack(4)
580#endif
581 typedef struct {
582 mach_msg_header_t Head;
583 NDR_record_t NDR;
584 vm32_address_t address;
585 vm32_size_t size;
586 boolean_t set_maximum;
587 vm_prot_t new_protection;
588 } __Request__protect_t __attribute__((unused));
589#ifdef __MigPackStructs
590#pragma pack()
591#endif
592
593#ifdef __MigPackStructs
594#pragma pack(4)
595#endif
596 typedef struct {
597 mach_msg_header_t Head;
598 NDR_record_t NDR;
599 vm32_address_t address;
600 vm32_size_t size;
601 vm_inherit_t new_inheritance;
602 } __Request__inherit_t __attribute__((unused));
603#ifdef __MigPackStructs
604#pragma pack()
605#endif
606
607#ifdef __MigPackStructs
608#pragma pack(4)
609#endif
610 typedef struct {
611 mach_msg_header_t Head;
612 NDR_record_t NDR;
613 vm32_address_t address;
614 vm32_size_t size;
615 } __Request__read_t __attribute__((unused));
616#ifdef __MigPackStructs
617#pragma pack()
618#endif
619
620#ifdef __MigPackStructs
621#pragma pack(4)
622#endif
623 typedef struct {
624 mach_msg_header_t Head;
625 NDR_record_t NDR;
626 vm32_read_entry_t data_list;
627 natural_t count;
628 } __Request__read_list_t __attribute__((unused));
629#ifdef __MigPackStructs
630#pragma pack()
631#endif
632
633#ifdef __MigPackStructs
634#pragma pack(4)
635#endif
636 typedef struct {
637 mach_msg_header_t Head;
638 /* start of the kernel processed data */
639 mach_msg_body_t msgh_body;
640 mach_msg_ool_descriptor_t data;
641 /* end of the kernel processed data */
642 NDR_record_t NDR;
643 vm32_address_t address;
644 mach_msg_type_number_t dataCnt;
645 } __Request__write_t __attribute__((unused));
646#ifdef __MigPackStructs
647#pragma pack()
648#endif
649
650#ifdef __MigPackStructs
651#pragma pack(4)
652#endif
653 typedef struct {
654 mach_msg_header_t Head;
655 NDR_record_t NDR;
656 vm32_address_t source_address;
657 vm32_size_t size;
658 vm32_address_t dest_address;
659 } __Request__copy_t __attribute__((unused));
660#ifdef __MigPackStructs
661#pragma pack()
662#endif
663
664#ifdef __MigPackStructs
665#pragma pack(4)
666#endif
667 typedef struct {
668 mach_msg_header_t Head;
669 NDR_record_t NDR;
670 vm32_address_t address;
671 vm32_size_t size;
672 vm32_address_t data;
673 } __Request__read_overwrite_t __attribute__((unused));
674#ifdef __MigPackStructs
675#pragma pack()
676#endif
677
678#ifdef __MigPackStructs
679#pragma pack(4)
680#endif
681 typedef struct {
682 mach_msg_header_t Head;
683 NDR_record_t NDR;
684 vm32_address_t address;
685 vm32_size_t size;
686 vm_sync_t sync_flags;
687 } __Request__msync_t __attribute__((unused));
688#ifdef __MigPackStructs
689#pragma pack()
690#endif
691
692#ifdef __MigPackStructs
693#pragma pack(4)
694#endif
695 typedef struct {
696 mach_msg_header_t Head;
697 NDR_record_t NDR;
698 vm32_address_t address;
699 vm32_size_t size;
700 vm_behavior_t new_behavior;
701 } __Request__behavior_set_t __attribute__((unused));
702#ifdef __MigPackStructs
703#pragma pack()
704#endif
705
706#ifdef __MigPackStructs
707#pragma pack(4)
708#endif
709 typedef struct {
710 mach_msg_header_t Head;
711 /* start of the kernel processed data */
712 mach_msg_body_t msgh_body;
713 mach_msg_port_descriptor_t object;
714 /* end of the kernel processed data */
715 NDR_record_t NDR;
716 vm32_address_t address;
717 vm32_size_t size;
718 vm32_address_t mask;
719 int flags;
720 vm32_offset_t offset;
721 boolean_t copy;
722 vm_prot_t cur_protection;
723 vm_prot_t max_protection;
724 vm_inherit_t inheritance;
725 } __Request__map_t __attribute__((unused));
726#ifdef __MigPackStructs
727#pragma pack()
728#endif
729
730#ifdef __MigPackStructs
731#pragma pack(4)
732#endif
733 typedef struct {
734 mach_msg_header_t Head;
735 NDR_record_t NDR;
736 vm32_address_t address;
737 vm32_size_t size;
738 vm_machine_attribute_t attribute;
739 vm_machine_attribute_val_t value;
740 } __Request__machine_attribute_t __attribute__((unused));
741#ifdef __MigPackStructs
742#pragma pack()
743#endif
744
745#ifdef __MigPackStructs
746#pragma pack(4)
747#endif
748 typedef struct {
749 mach_msg_header_t Head;
750 /* start of the kernel processed data */
751 mach_msg_body_t msgh_body;
752 mach_msg_port_descriptor_t src_task;
753 /* end of the kernel processed data */
754 NDR_record_t NDR;
755 vm32_address_t target_address;
756 vm32_size_t size;
757 vm32_address_t mask;
758 boolean_t anywhere;
759 vm32_address_t src_address;
760 boolean_t copy;
761 vm_inherit_t inheritance;
762 } __Request__remap_t __attribute__((unused));
763#ifdef __MigPackStructs
764#pragma pack()
765#endif
766
767#ifdef __MigPackStructs
768#pragma pack(4)
769#endif
770 typedef struct {
771 mach_msg_header_t Head;
772 NDR_record_t NDR;
773 boolean_t must_wire;
774 } __Request___task_wire_t __attribute__((unused));
775#ifdef __MigPackStructs
776#pragma pack()
777#endif
778
779#ifdef __MigPackStructs
780#pragma pack(4)
781#endif
782 typedef struct {
783 mach_msg_header_t Head;
784 /* start of the kernel processed data */
785 mach_msg_body_t msgh_body;
786 mach_msg_port_descriptor_t parent_entry;
787 /* end of the kernel processed data */
788 NDR_record_t NDR;
789 vm32_size_t size;
790 vm32_offset_t offset;
791 vm_prot_t permission;
792 } __Request__make_memory_entry_t __attribute__((unused));
793#ifdef __MigPackStructs
794#pragma pack()
795#endif
796
797#ifdef __MigPackStructs
798#pragma pack(4)
799#endif
800 typedef struct {
801 mach_msg_header_t Head;
802 NDR_record_t NDR;
803 vm32_offset_t offset;
804 } __Request__map_page_query_t __attribute__((unused));
805#ifdef __MigPackStructs
806#pragma pack()
807#endif
808
809#ifdef __MigPackStructs
810#pragma pack(4)
811#endif
812 typedef struct {
813 mach_msg_header_t Head;
814 NDR_record_t NDR;
815 vm32_address_t address;
816 } __Request__region_info_t __attribute__((unused));
817#ifdef __MigPackStructs
818#pragma pack()
819#endif
820
821#ifdef __MigPackStructs
822#pragma pack(4)
823#endif
824 typedef struct {
825 mach_msg_header_t Head;
826 } __Request__mapped_pages_info_t __attribute__((unused));
827#ifdef __MigPackStructs
828#pragma pack()
829#endif
830
831#ifdef __MigPackStructs
832#pragma pack(4)
833#endif
834 typedef struct {
835 mach_msg_header_t Head;
836 NDR_record_t NDR;
837 vm32_address_t address;
838 natural_t nesting_depth;
839 mach_msg_type_number_t infoCnt;
840 } __Request__region_recurse_t __attribute__((unused));
841#ifdef __MigPackStructs
842#pragma pack()
843#endif
844
845#ifdef __MigPackStructs
846#pragma pack(4)
847#endif
848 typedef struct {
849 mach_msg_header_t Head;
850 NDR_record_t NDR;
851 vm32_address_t address;
852 natural_t nesting_depth;
853 mach_msg_type_number_t infoCnt;
854 } __Request__region_recurse_64_t __attribute__((unused));
855#ifdef __MigPackStructs
856#pragma pack()
857#endif
858
859#ifdef __MigPackStructs
860#pragma pack(4)
861#endif
862 typedef struct {
863 mach_msg_header_t Head;
864 NDR_record_t NDR;
865 vm32_address_t address;
866 } __Request__region_info_64_t __attribute__((unused));
867#ifdef __MigPackStructs
868#pragma pack()
869#endif
870
871#ifdef __MigPackStructs
872#pragma pack(4)
873#endif
874 typedef struct {
875 mach_msg_header_t Head;
876 NDR_record_t NDR;
877 vm32_address_t address;
878 vm_region_flavor_t flavor;
879 mach_msg_type_number_t infoCnt;
880 } __Request__region_64_t __attribute__((unused));
881#ifdef __MigPackStructs
882#pragma pack()
883#endif
884
885#ifdef __MigPackStructs
886#pragma pack(4)
887#endif
888 typedef struct {
889 mach_msg_header_t Head;
890 /* start of the kernel processed data */
891 mach_msg_body_t msgh_body;
892 mach_msg_port_descriptor_t parent_entry;
893 /* end of the kernel processed data */
894 NDR_record_t NDR;
895 memory_object_size_t size;
896 memory_object_offset_t offset;
897 vm_prot_t permission;
898 } __Request__make_memory_entry_64_t __attribute__((unused));
899#ifdef __MigPackStructs
900#pragma pack()
901#endif
902
903#ifdef __MigPackStructs
904#pragma pack(4)
905#endif
906 typedef struct {
907 mach_msg_header_t Head;
908 /* start of the kernel processed data */
909 mach_msg_body_t msgh_body;
910 mach_msg_port_descriptor_t object;
911 /* end of the kernel processed data */
912 NDR_record_t NDR;
913 vm32_address_t address;
914 vm32_size_t size;
915 vm32_address_t mask;
916 int flags;
917 memory_object_offset_t offset;
918 boolean_t copy;
919 vm_prot_t cur_protection;
920 vm_prot_t max_protection;
921 vm_inherit_t inheritance;
922 } __Request__map_64_t __attribute__((unused));
923#ifdef __MigPackStructs
924#pragma pack()
925#endif
926
927#ifdef __MigPackStructs
928#pragma pack(4)
929#endif
930 typedef struct {
931 mach_msg_header_t Head;
932 NDR_record_t NDR;
933 vm32_address_t address;
934 vm_purgable_t control;
935 int state;
936 } __Request__purgable_control_t __attribute__((unused));
937#ifdef __MigPackStructs
938#pragma pack()
939#endif
940
941#ifdef __MigPackStructs
942#pragma pack(4)
943#endif
944 typedef struct {
945 mach_msg_header_t Head;
946 } __Request___map_exec_lockdown_t __attribute__((unused));
947#ifdef __MigPackStructs
948#pragma pack()
949#endif
950#endif /* !__Request__map_subsystem__defined */
951
952
953/* union of all requests */
954
955#ifndef __RequestUnion__vm32_map_subsystem__defined
956#define __RequestUnion__vm32_map_subsystem__defined
957union __RequestUnion__vm32_map_subsystem {
958 __Request__region_t Request_region;
959 __Request__allocate_t Request_allocate;
960 __Request__deallocate_t Request_deallocate;
961 __Request__protect_t Request_protect;
962 __Request__inherit_t Request_inherit;
963 __Request__read_t Request_read;
964 __Request__read_list_t Request_read_list;
965 __Request__write_t Request_write;
966 __Request__copy_t Request_copy;
967 __Request__read_overwrite_t Request_read_overwrite;
968 __Request__msync_t Request_msync;
969 __Request__behavior_set_t Request_behavior_set;
970 __Request__map_t Request_map;
971 __Request__machine_attribute_t Request_machine_attribute;
972 __Request__remap_t Request_remap;
973 __Request___task_wire_t Request__task_wire;
974 __Request__make_memory_entry_t Request_make_memory_entry;
975 __Request__map_page_query_t Request_map_page_query;
976 __Request__region_info_t Request_region_info;
977 __Request__mapped_pages_info_t Request_mapped_pages_info;
978 __Request__region_recurse_t Request_region_recurse;
979 __Request__region_recurse_64_t Request_region_recurse_64;
980 __Request__region_info_64_t Request_region_info_64;
981 __Request__region_64_t Request_region_64;
982 __Request__make_memory_entry_64_t Request_make_memory_entry_64;
983 __Request__map_64_t Request_map_64;
984 __Request__purgable_control_t Request_purgable_control;
985 __Request___map_exec_lockdown_t Request__map_exec_lockdown;
986};
987#endif /* __RequestUnion__vm32_map_subsystem__defined */
988/* typedefs for all replies */
989
990#ifndef __Reply__map_subsystem__defined
991#define __Reply__map_subsystem__defined
992
993#ifdef __MigPackStructs
994#pragma pack(4)
995#endif
996 typedef struct {
997 mach_msg_header_t Head;
998 /* start of the kernel processed data */
999 mach_msg_body_t msgh_body;
1000 mach_msg_port_descriptor_t object_name;
1001 /* end of the kernel processed data */
1002 NDR_record_t NDR;
1003 vm32_address_t address;
1004 vm32_size_t size;
1005 mach_msg_type_number_t infoCnt;
1006 int info[10];
1007 } __Reply__region_t __attribute__((unused));
1008#ifdef __MigPackStructs
1009#pragma pack()
1010#endif
1011
1012#ifdef __MigPackStructs
1013#pragma pack(4)
1014#endif
1015 typedef struct {
1016 mach_msg_header_t Head;
1017 NDR_record_t NDR;
1018 kern_return_t RetCode;
1019 vm32_address_t address;
1020 } __Reply__allocate_t __attribute__((unused));
1021#ifdef __MigPackStructs
1022#pragma pack()
1023#endif
1024
1025#ifdef __MigPackStructs
1026#pragma pack(4)
1027#endif
1028 typedef struct {
1029 mach_msg_header_t Head;
1030 NDR_record_t NDR;
1031 kern_return_t RetCode;
1032 } __Reply__deallocate_t __attribute__((unused));
1033#ifdef __MigPackStructs
1034#pragma pack()
1035#endif
1036
1037#ifdef __MigPackStructs
1038#pragma pack(4)
1039#endif
1040 typedef struct {
1041 mach_msg_header_t Head;
1042 NDR_record_t NDR;
1043 kern_return_t RetCode;
1044 } __Reply__protect_t __attribute__((unused));
1045#ifdef __MigPackStructs
1046#pragma pack()
1047#endif
1048
1049#ifdef __MigPackStructs
1050#pragma pack(4)
1051#endif
1052 typedef struct {
1053 mach_msg_header_t Head;
1054 NDR_record_t NDR;
1055 kern_return_t RetCode;
1056 } __Reply__inherit_t __attribute__((unused));
1057#ifdef __MigPackStructs
1058#pragma pack()
1059#endif
1060
1061#ifdef __MigPackStructs
1062#pragma pack(4)
1063#endif
1064 typedef struct {
1065 mach_msg_header_t Head;
1066 /* start of the kernel processed data */
1067 mach_msg_body_t msgh_body;
1068 mach_msg_ool_descriptor_t data;
1069 /* end of the kernel processed data */
1070 NDR_record_t NDR;
1071 mach_msg_type_number_t dataCnt;
1072 } __Reply__read_t __attribute__((unused));
1073#ifdef __MigPackStructs
1074#pragma pack()
1075#endif
1076
1077#ifdef __MigPackStructs
1078#pragma pack(4)
1079#endif
1080 typedef struct {
1081 mach_msg_header_t Head;
1082 NDR_record_t NDR;
1083 kern_return_t RetCode;
1084 vm32_read_entry_t data_list;
1085 } __Reply__read_list_t __attribute__((unused));
1086#ifdef __MigPackStructs
1087#pragma pack()
1088#endif
1089
1090#ifdef __MigPackStructs
1091#pragma pack(4)
1092#endif
1093 typedef struct {
1094 mach_msg_header_t Head;
1095 NDR_record_t NDR;
1096 kern_return_t RetCode;
1097 } __Reply__write_t __attribute__((unused));
1098#ifdef __MigPackStructs
1099#pragma pack()
1100#endif
1101
1102#ifdef __MigPackStructs
1103#pragma pack(4)
1104#endif
1105 typedef struct {
1106 mach_msg_header_t Head;
1107 NDR_record_t NDR;
1108 kern_return_t RetCode;
1109 } __Reply__copy_t __attribute__((unused));
1110#ifdef __MigPackStructs
1111#pragma pack()
1112#endif
1113
1114#ifdef __MigPackStructs
1115#pragma pack(4)
1116#endif
1117 typedef struct {
1118 mach_msg_header_t Head;
1119 NDR_record_t NDR;
1120 kern_return_t RetCode;
1121 vm32_size_t outsize;
1122 } __Reply__read_overwrite_t __attribute__((unused));
1123#ifdef __MigPackStructs
1124#pragma pack()
1125#endif
1126
1127#ifdef __MigPackStructs
1128#pragma pack(4)
1129#endif
1130 typedef struct {
1131 mach_msg_header_t Head;
1132 NDR_record_t NDR;
1133 kern_return_t RetCode;
1134 } __Reply__msync_t __attribute__((unused));
1135#ifdef __MigPackStructs
1136#pragma pack()
1137#endif
1138
1139#ifdef __MigPackStructs
1140#pragma pack(4)
1141#endif
1142 typedef struct {
1143 mach_msg_header_t Head;
1144 NDR_record_t NDR;
1145 kern_return_t RetCode;
1146 } __Reply__behavior_set_t __attribute__((unused));
1147#ifdef __MigPackStructs
1148#pragma pack()
1149#endif
1150
1151#ifdef __MigPackStructs
1152#pragma pack(4)
1153#endif
1154 typedef struct {
1155 mach_msg_header_t Head;
1156 NDR_record_t NDR;
1157 kern_return_t RetCode;
1158 vm32_address_t address;
1159 } __Reply__map_t __attribute__((unused));
1160#ifdef __MigPackStructs
1161#pragma pack()
1162#endif
1163
1164#ifdef __MigPackStructs
1165#pragma pack(4)
1166#endif
1167 typedef struct {
1168 mach_msg_header_t Head;
1169 NDR_record_t NDR;
1170 kern_return_t RetCode;
1171 vm_machine_attribute_val_t value;
1172 } __Reply__machine_attribute_t __attribute__((unused));
1173#ifdef __MigPackStructs
1174#pragma pack()
1175#endif
1176
1177#ifdef __MigPackStructs
1178#pragma pack(4)
1179#endif
1180 typedef struct {
1181 mach_msg_header_t Head;
1182 NDR_record_t NDR;
1183 kern_return_t RetCode;
1184 vm32_address_t target_address;
1185 vm_prot_t cur_protection;
1186 vm_prot_t max_protection;
1187 } __Reply__remap_t __attribute__((unused));
1188#ifdef __MigPackStructs
1189#pragma pack()
1190#endif
1191
1192#ifdef __MigPackStructs
1193#pragma pack(4)
1194#endif
1195 typedef struct {
1196 mach_msg_header_t Head;
1197 NDR_record_t NDR;
1198 kern_return_t RetCode;
1199 } __Reply___task_wire_t __attribute__((unused));
1200#ifdef __MigPackStructs
1201#pragma pack()
1202#endif
1203
1204#ifdef __MigPackStructs
1205#pragma pack(4)
1206#endif
1207 typedef struct {
1208 mach_msg_header_t Head;
1209 /* start of the kernel processed data */
1210 mach_msg_body_t msgh_body;
1211 mach_msg_port_descriptor_t object_handle;
1212 /* end of the kernel processed data */
1213 NDR_record_t NDR;
1214 vm32_size_t size;
1215 } __Reply__make_memory_entry_t __attribute__((unused));
1216#ifdef __MigPackStructs
1217#pragma pack()
1218#endif
1219
1220#ifdef __MigPackStructs
1221#pragma pack(4)
1222#endif
1223 typedef struct {
1224 mach_msg_header_t Head;
1225 NDR_record_t NDR;
1226 kern_return_t RetCode;
1227 integer_t disposition;
1228 integer_t ref_count;
1229 } __Reply__map_page_query_t __attribute__((unused));
1230#ifdef __MigPackStructs
1231#pragma pack()
1232#endif
1233
1234#ifdef __MigPackStructs
1235#pragma pack(4)
1236#endif
1237 typedef struct {
1238 mach_msg_header_t Head;
1239 /* start of the kernel processed data */
1240 mach_msg_body_t msgh_body;
1241 mach_msg_ool_descriptor_t objects;
1242 /* end of the kernel processed data */
1243 NDR_record_t NDR;
1244 vm_info_region_t region;
1245 mach_msg_type_number_t objectsCnt;
1246 } __Reply__region_info_t __attribute__((unused));
1247#ifdef __MigPackStructs
1248#pragma pack()
1249#endif
1250
1251#ifdef __MigPackStructs
1252#pragma pack(4)
1253#endif
1254 typedef struct {
1255 mach_msg_header_t Head;
1256 /* start of the kernel processed data */
1257 mach_msg_body_t msgh_body;
1258 mach_msg_ool_descriptor_t pages;
1259 /* end of the kernel processed data */
1260 NDR_record_t NDR;
1261 mach_msg_type_number_t pagesCnt;
1262 } __Reply__mapped_pages_info_t __attribute__((unused));
1263#ifdef __MigPackStructs
1264#pragma pack()
1265#endif
1266
1267#ifdef __MigPackStructs
1268#pragma pack(4)
1269#endif
1270 typedef struct {
1271 mach_msg_header_t Head;
1272 NDR_record_t NDR;
1273 kern_return_t RetCode;
1274 vm32_address_t address;
1275 vm32_size_t size;
1276 natural_t nesting_depth;
1277 mach_msg_type_number_t infoCnt;
1278 int info[19];
1279 } __Reply__region_recurse_t __attribute__((unused));
1280#ifdef __MigPackStructs
1281#pragma pack()
1282#endif
1283
1284#ifdef __MigPackStructs
1285#pragma pack(4)
1286#endif
1287 typedef struct {
1288 mach_msg_header_t Head;
1289 NDR_record_t NDR;
1290 kern_return_t RetCode;
1291 vm32_address_t address;
1292 vm32_size_t size;
1293 natural_t nesting_depth;
1294 mach_msg_type_number_t infoCnt;
1295 int info[19];
1296 } __Reply__region_recurse_64_t __attribute__((unused));
1297#ifdef __MigPackStructs
1298#pragma pack()
1299#endif
1300
1301#ifdef __MigPackStructs
1302#pragma pack(4)
1303#endif
1304 typedef struct {
1305 mach_msg_header_t Head;
1306 /* start of the kernel processed data */
1307 mach_msg_body_t msgh_body;
1308 mach_msg_ool_descriptor_t objects;
1309 /* end of the kernel processed data */
1310 NDR_record_t NDR;
1311 vm_info_region_64_t region;
1312 mach_msg_type_number_t objectsCnt;
1313 } __Reply__region_info_64_t __attribute__((unused));
1314#ifdef __MigPackStructs
1315#pragma pack()
1316#endif
1317
1318#ifdef __MigPackStructs
1319#pragma pack(4)
1320#endif
1321 typedef struct {
1322 mach_msg_header_t Head;
1323 /* start of the kernel processed data */
1324 mach_msg_body_t msgh_body;
1325 mach_msg_port_descriptor_t object_name;
1326 /* end of the kernel processed data */
1327 NDR_record_t NDR;
1328 vm32_address_t address;
1329 vm32_size_t size;
1330 mach_msg_type_number_t infoCnt;
1331 int info[10];
1332 } __Reply__region_64_t __attribute__((unused));
1333#ifdef __MigPackStructs
1334#pragma pack()
1335#endif
1336
1337#ifdef __MigPackStructs
1338#pragma pack(4)
1339#endif
1340 typedef struct {
1341 mach_msg_header_t Head;
1342 /* start of the kernel processed data */
1343 mach_msg_body_t msgh_body;
1344 mach_msg_port_descriptor_t object_handle;
1345 /* end of the kernel processed data */
1346 NDR_record_t NDR;
1347 memory_object_size_t size;
1348 } __Reply__make_memory_entry_64_t __attribute__((unused));
1349#ifdef __MigPackStructs
1350#pragma pack()
1351#endif
1352
1353#ifdef __MigPackStructs
1354#pragma pack(4)
1355#endif
1356 typedef struct {
1357 mach_msg_header_t Head;
1358 NDR_record_t NDR;
1359 kern_return_t RetCode;
1360 vm32_address_t address;
1361 } __Reply__map_64_t __attribute__((unused));
1362#ifdef __MigPackStructs
1363#pragma pack()
1364#endif
1365
1366#ifdef __MigPackStructs
1367#pragma pack(4)
1368#endif
1369 typedef struct {
1370 mach_msg_header_t Head;
1371 NDR_record_t NDR;
1372 kern_return_t RetCode;
1373 int state;
1374 } __Reply__purgable_control_t __attribute__((unused));
1375#ifdef __MigPackStructs
1376#pragma pack()
1377#endif
1378
1379#ifdef __MigPackStructs
1380#pragma pack(4)
1381#endif
1382 typedef struct {
1383 mach_msg_header_t Head;
1384 NDR_record_t NDR;
1385 kern_return_t RetCode;
1386 } __Reply___map_exec_lockdown_t __attribute__((unused));
1387#ifdef __MigPackStructs
1388#pragma pack()
1389#endif
1390#endif /* !__Reply__map_subsystem__defined */
1391
1392
1393/* union of all replies */
1394
1395#ifndef __ReplyUnion__vm32_map_subsystem__defined
1396#define __ReplyUnion__vm32_map_subsystem__defined
1397union __ReplyUnion__vm32_map_subsystem {
1398 __Reply__region_t Reply_region;
1399 __Reply__allocate_t Reply_allocate;
1400 __Reply__deallocate_t Reply_deallocate;
1401 __Reply__protect_t Reply_protect;
1402 __Reply__inherit_t Reply_inherit;
1403 __Reply__read_t Reply_read;
1404 __Reply__read_list_t Reply_read_list;
1405 __Reply__write_t Reply_write;
1406 __Reply__copy_t Reply_copy;
1407 __Reply__read_overwrite_t Reply_read_overwrite;
1408 __Reply__msync_t Reply_msync;
1409 __Reply__behavior_set_t Reply_behavior_set;
1410 __Reply__map_t Reply_map;
1411 __Reply__machine_attribute_t Reply_machine_attribute;
1412 __Reply__remap_t Reply_remap;
1413 __Reply___task_wire_t Reply__task_wire;
1414 __Reply__make_memory_entry_t Reply_make_memory_entry;
1415 __Reply__map_page_query_t Reply_map_page_query;
1416 __Reply__region_info_t Reply_region_info;
1417 __Reply__mapped_pages_info_t Reply_mapped_pages_info;
1418 __Reply__region_recurse_t Reply_region_recurse;
1419 __Reply__region_recurse_64_t Reply_region_recurse_64;
1420 __Reply__region_info_64_t Reply_region_info_64;
1421 __Reply__region_64_t Reply_region_64;
1422 __Reply__make_memory_entry_64_t Reply_make_memory_entry_64;
1423 __Reply__map_64_t Reply_map_64;
1424 __Reply__purgable_control_t Reply_purgable_control;
1425 __Reply___map_exec_lockdown_t Reply__map_exec_lockdown;
1426};
1427#endif /* __RequestUnion__vm32_map_subsystem__defined */
1428
1429#ifndef subsystem_to_name_map_map
1430#define subsystem_to_name_map_map \
1431 { "region", 3800 },\
1432 { "allocate", 3801 },\
1433 { "deallocate", 3802 },\
1434 { "protect", 3803 },\
1435 { "inherit", 3804 },\
1436 { "read", 3805 },\
1437 { "read_list", 3806 },\
1438 { "write", 3807 },\
1439 { "copy", 3808 },\
1440 { "read_overwrite", 3809 },\
1441 { "msync", 3810 },\
1442 { "behavior_set", 3811 },\
1443 { "map", 3812 },\
1444 { "machine_attribute", 3813 },\
1445 { "remap", 3814 },\
1446 { "_task_wire", 3815 },\
1447 { "make_memory_entry", 3816 },\
1448 { "map_page_query", 3817 },\
1449 { "region_info", 3818 },\
1450 { "mapped_pages_info", 3819 },\
1451 { "region_recurse", 3821 },\
1452 { "region_recurse_64", 3822 },\
1453 { "region_info_64", 3823 },\
1454 { "region_64", 3824 },\
1455 { "make_memory_entry_64", 3825 },\
1456 { "map_64", 3826 },\
1457 { "purgable_control", 3830 },\
1458 { "_map_exec_lockdown", 3831 }
1459#endif
1460
1461#ifdef __AfterMigServerHeader
1462__AfterMigServerHeader
1463#endif /* __AfterMigServerHeader */
1464
1465#endif /* _map_server_ */
1466