1 /*
2 * Mach Operating System
3 * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
4 * All Rights Reserved.
5 *
6 * Permission to use, copy, modify and distribute this software and its
7 * documentation is hereby granted, provided that both the copyright
8 * notice and this permission notice appear in all copies of the
9 * software, derivative works or modified versions, and any portions
10 * thereof, and that both notices appear in supporting documentation.
11 *
12 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
13 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
14 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
15 *
16 * Carnegie Mellon requests users of this software to return to
17 *
18 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
19 * School of Computer Science
20 * Carnegie Mellon University
21 * Pittsburgh PA 15213-3890
22 *
23 * any improvements or extensions that they make and grant Carnegie Mellon
24 * the rights to redistribute these changes.
25 */
26 /*
27 * HISTORY
28 * $Log: memory_object_default.defs,v $
29 * Revision 2.8 91/08/28 11:15:24 jsb
30 * Added conditionalized sequence number support.
31 * [91/08/13 rpd]
32 *
33 * Revision 2.7 91/07/01 08:25:22 jsb
34 * If KERNEL and NORMA_VM, then use a userprefix (to allow interposition).
35 * [91/06/29 16:35:53 jsb]
36 *
37 * Revision 2.6 91/06/25 10:30:41 rpd
38 * Changed the port-based type declarations
39 * to use mach_port_t as the C type name.
40 * [91/05/23 rpd]
41 *
42 * Revision 2.5 91/05/14 16:56:08 mrt
43 * Correcting copyright
44 *
45 * Revision 2.4 91/02/05 17:34:05 mrt
46 * Changed to new Mach copyright
47 * [91/02/01 17:19:22 mrt]
48 *
49 * Revision 2.3 90/08/06 17:06:16 rpd
50 * For compatibility with Mach 2.5, added dealloc to
51 * argument of memory_object_create.
52 * [90/08/04 rpd]
53 *
54 * Revision 2.2 90/06/02 14:59:00 rpd
55 * Converted to new IPC.
56 * [90/03/26 22:35:46 rpd]
57 *
58 * Revision 2.1 89/08/03 17:18:28 rwd
59 * Created.
60 *
61 * Revision 2.3 89/02/25 18:38:29 gm0w
62 * Changes for cleanup.
63 *
64 * Revision 2.2 89/01/15 16:31:26 rpd
65 * Moved from kern/ to mach/.
66 * [89/01/15 14:40:47 rpd]
67 *
68 * Revision 2.7 89/01/12 07:58:30 rpd
69 * Fixed includes.
70 * [89/01/12 04:52:50 rpd]
71 *
72 * Revision 2.6 88/08/25 18:17:23 mwyoung
73 * Rid the kernel_task of rights to the new memory_object in
74 * memory_object_create.
75 * Add size argument to memory_object_create.
76 * [88/08/11 18:47:16 mwyoung]
77 *
78 * Revision 2.5 88/08/06 18:23:00 rpd
79 * Added dealloc flag to new_memory_object arg of memory_object_create().
80 * Otherwise, kernel_task is left with send right, and this is very bad.
81 *
82 * 29-Jun-88 Michael Young (mwyoung) at Carnegie-Mellon University
83 * Use new types.
84 *
85 * 29-Jun-88 Michael Young (mwyoung) at Carnegie-Mellon University
86 * Moved data type declarations to "mach_types.defs".
87 *
88 * 9-Dec-87 Michael Young (mwyoung) at Carnegie-Mellon University
89 * Created.
90 */
91 /*
92 * File: mach/memory_object_default.defs
93 *
94 * Abstract:
95 * Mach external memory management interface declaration; subset
96 * that is applicable to managers of kernel-created memory objects.
97 */
98
99 subsystem
100 #if KERNEL_USER
101 KernelUser
102 #endif KERNEL_USER
103 memory_object_default 2250;
104
105 #ifdef KERNEL
106 #include <norma_vm.h>
107 #if NORMA_VM
108 userprefix k_;
109 #endif NORMA_VM
110 #endif KERNEL
111
112 #include <mach/std_types.defs>
113 #include <mach/mach_types.defs>
114
115 #if SEQNOS
116 serverprefix seqnos_;
117 serverdemux seqnos_memory_object_default_server;
118 #endif SEQNOS
119
120 /*
121 * Pass on responsibility for the new kernel-created memory
122 * object. The port on which this request is that port
123 * (possibly a memory object itself) registered as the "default
124 * pager". Other arguments are as described for memory_object_init.
125 * [No reply required.]
126 */
127 simpleroutine memory_object_create(
128 old_memory_object : memory_object_t =
129 MACH_MSG_TYPE_MOVE_SEND
130 ctype: mach_port_t;
131 #if SEQNOS
132 msgseqno seqno : mach_port_seqno_t;
133 #endif SEQNOS
134 new_memory_object : memory_object_t =
135 MACH_MSG_TYPE_MOVE_RECEIVE
136 ctype: mach_port_t
137 #if KERNEL_USER
138 /* for compatibility with Mach 2.5 kernels */
139 , dealloc
140 #endif KERNEL_USER
141 ;
142 new_object_size : vm_size_t;
143 new_control_port : memory_object_control_t =
144 MACH_MSG_TYPE_MAKE_SEND
145 ctype: mach_port_t;
146 new_name : memory_object_name_t =
147 MACH_MSG_TYPE_MAKE_SEND
148 ctype: mach_port_t;
149 new_page_size : vm_size_t);
150
151 /*
152 * Provide initial data contents for this region of
153 * the memory object. If data has already been written
154 * to the object, this value must be discarded; otherwise,
155 * this call acts identically to memory_object_data_write.
156 */
157 simpleroutine memory_object_data_initialize(
158 memory_object : memory_object_t;
159 #if SEQNOS
160 msgseqno seqno : mach_port_seqno_t;
161 #endif SEQNOS
162 memory_control_port : memory_object_control_t =
163 MACH_MSG_TYPE_MAKE_SEND
164 ctype: mach_port_t;
165 offset : vm_offset_t;
166 data : pointer_t);
167
168 #if 0
169 /*
170 * Indicate that the specified range of data in this memory object
171 * will not be requested again until it is reinitialized with
172 * memory_object_data_write or memory_object_data_initialize.
173 */
174 simpleroutine memory_object_data_terminate(
175 memory_object : memory_object_t;
176 #if SEQNOS
177 msgseqno seqno : mach_port_seqno_t;
178 #endif SEQNOS
179 memory_control_port : memory_object_control_t =
180 MACH_MSG_TYPE_MAKE_SEND
181 ctype: mach_port_t;
182 offset : vm_offset_t;
183 size : vm_size_t);
184 #else 0
185 skip; /* memory_object_data_terminate */
186 #endif 0
Cache object: 83a0274eedd0582460f4c55c534cac2d
|