1/*
2 * Copyright (c) 1999-2004 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_APACHE_LICENSE_HEADER_START@
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 *     http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 * @APPLE_APACHE_LICENSE_HEADER_END@
19 */
20/*
21 * bootstrap -- fundamental service initiator and port server
22 * Mike DeMoney, NeXT, Inc.
23 * Copyright, 1990.  All rights reserved.
24 */
25
26subsystem job 400;
27
28#include <mach/std_types.defs>
29#include <mach/mach_types.defs>
30#include "job_types.defs"
31import "vproc.h";
32import "vproc_priv.h";
33import "vproc_internal.h";
34
35userprefix vproc_mig_;
36serverprefix job_mig_;
37
38routine
39create_server(
40				j			: job_t;
41				servercmd	: cmd_t;
42				serveruid	: uid_t;
43				ondemand	: boolean_t;
44out				serverport	: mach_port_make_send_t
45);
46
47routine
48reboot2(
49				j			: job_t;
50				flags		: uint64_t
51);
52
53routine
54check_in2(
55				j			: job_t;
56				servicename	: name_t;
57out				serviceport	: mach_port_move_receive_t;
58out				instanceid	: uuid_t;
59				flags		: uint64_t
60);
61
62routine
63register2(
64				j			: job_t;
65				servicename	: name_t;
66				serviceport	: mach_port_t;
67				flags		: uint64_t
68);
69
70routine
71look_up2(
72				j			: job_t;
73sreplyport		rp			: mach_port_make_send_once_t;
74				servicename	: name_t;
75out				serviceport	: mach_port_t;
76UserAuditToken	servercreds	: audit_token_t;
77				targetpid	: pid_t;
78				instanceid	: uuid_t;
79				flags		: uint64_t
80);
81
82routine
83send_signal(
84				j			: job_t;
85sreplyport		rp			: mach_port_make_send_once_t;
86				label		: name_t;
87				sig			: integer_t
88);
89
90routine
91parent(
92				j			: job_t;
93sreplyport		rp			: mach_port_make_send_once_t;
94out				parentport	: mach_port_make_send_t
95);
96
97routine
98post_fork_ping(
99				j			: job_t;
100				taskport	: task_t;
101out				asport		: mach_port_t
102);
103
104routine
105info(
106				j			: job_t;
107out				names		: name_array_t, dealloc;
108out				jobs		: name_array_t, dealloc;
109out				actives		: bootstrap_status_array_t, dealloc;
110				flags		: uint64_t
111);
112
113routine
114subset(
115				j			: job_t;
116				reqport		: mach_port_t;
117out				subsetport	: mach_port_make_send_t
118);
119
120skip; /* Formerly setup_shmem. */
121
122routine
123take_subset(
124				j			: job_t;
125out				reqport		: mach_port_move_send_t;
126out				recvport	: mach_port_move_receive_t;
127out				jobs		: pointer_t, dealloc;
128out				ports		: mach_port_move_send_array_t, dealloc
129);
130
131routine
132getsocket(
133				j			: job_t;
134out				sockpath	: name_t
135);
136
137skip; /* Formerly spawn. */
138
139skip; /* Formerly wait. */
140
141skip; /* Formerly uncork_fork. */
142
143routine
144swap_integer(
145				j			: job_t;
146				inkey		: vproc_gsk_t;
147				outkey		: vproc_gsk_t;
148				inval		: int64_t;
149out				outval		: int64_t
150);
151
152routine
153log(
154				j			: job_t;
155				pri			: integer_t;
156				err			: integer_t;
157				message		: logmsg_t
158);
159
160routine
161lookup_per_user_context(
162				j			: job_t;
163				uid			: uid_t;
164out				userbport	: mach_port_t
165);
166
167routine
168move_subset(
169				j			: job_t;
170				targetport	: mach_port_t;
171				session		: name_t;
172				asport		: mach_port_t;
173				flags		: uint64_t
174);
175
176routine
177swap_complex(
178				j			: job_t;
179				inkey		: vproc_gsk_t;
180				outkey		: vproc_gsk_t;
181				inval		: pointer_t;
182out				outval		: pointer_t, dealloc
183);
184
185routine
186log_drain(
187				j			: job_t;
188sreplyport		rp			: mach_port_make_send_once_t;
189out				outval		: pointer_t, dealloc
190);
191
192routine
193log_forward(
194				j			: job_t;
195				inval		: pointer_t
196);
197
198routine
199kickstart(
200				j			: job_t;
201				label		: name_t;
202out				pid			: pid_t;
203				flags		: natural_t
204);
205
206skip; /* Formerly embedded_wait. */
207
208routine
209lookup_children(
210				j			: job_t;
211out 			childports	: mach_port_move_send_array_t, dealloc;
212out				childnames	: name_array_t, dealloc;
213out				childprops	: bootstrap_property_array_t, dealloc
214);
215
216routine
217switch_to_session(
218				j			: job_t;
219				reqport		: mach_port_t;
220				session		: name_t;
221				asport		: mach_port_t;
222out				newbsport	: mach_port_make_send_t
223);
224
225skip; /* Formerly transaction_count_for_pid. */
226
227routine
228pid_is_managed(
229				j			: job_t;
230				pid			: pid_t;
231out				managed		: boolean_t
232);
233
234routine
235port_for_label(
236				j			: job_t;
237				label		: name_t;
238out				jport		: mach_port_make_send_t
239);
240
241routine
242init_session(
243				j			: job_t;
244				session		: name_t;
245				asport		: mach_port_t
246);
247
248routine
249set_security_session(
250				j			: job_t;
251				uuid		: uuid_t;
252				asport		: mach_port_t
253);
254
255skip; /* Formerly wait2. */
256
257skip; /* Formerly event_source_check_in. */
258
259skip; /* Formerly event_set_state. */
260
261routine
262spawn2(
263				j			: job_t;
264sreplyport		rp			: mach_port_make_send_once_t;
265				job			: pointer_t;
266				asport		: mach_port_t;
267out				outpid		: pid_t;
268out				obsrvport	: mach_port_move_receive_t
269);
270
271routine
272get_root_bootstrap(
273				j			: job_t;
274out				rootbs		: mach_port_move_send_t
275);
276
277routine
278legacy_ipc_request(
279				j			: job_t;
280				request		: pointer_t;
281				request_fds	: mach_port_move_send_array_t;
282out				reply		: pointer_t, dealloc;
283out				reply_fds	: mach_port_move_send_array_t, dealloc;
284				asport		: mach_port_t
285);
286
287routine
288get_listener_port_rights(
289				j			: job_t;
290out				sports		: mach_port_make_send_array_t, dealloc
291);
292
293routine
294register_gui_session(
295				j			: job_t;
296				asport		: mach_port_t
297);
298