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 exc */
10
11#define __MIG_check__Request__exc_subsystem__ 1
12
13#include "exc_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 _Xexception_raise
99 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
100
101mig_internal novalue _Xexception_raise_state
102 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
103
104mig_internal novalue _Xexception_raise_state_identity
105 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
106
107
108#if ( __MigTypeCheck )
109#if __MIG_check__Request__exc_subsystem__
110#if !defined(__MIG_check__Request__exception_raise_t__defined)
111#define __MIG_check__Request__exception_raise_t__defined
112
113mig_internal kern_return_t __MIG_check__Request__exception_raise_t(__attribute__((__unused__)) __Request__exception_raise_t *In0P)
114{
115
116 typedef __Request__exception_raise_t __Request;
117#if __MigTypeCheck
118 unsigned int msgh_size;
119#endif /* __MigTypeCheck */
120
121#if __MigTypeCheck
122 msgh_size = In0P->Head.msgh_size;
123 if (!(In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
124 (In0P->msgh_body.msgh_descriptor_count != 2) ||
125 (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 8)) || (msgh_size > (mach_msg_size_t)sizeof(__Request)))
126 return MIG_BAD_ARGUMENTS;
127#endif /* __MigTypeCheck */
128
129#if __MigTypeCheck
130 if (In0P->thread.type != MACH_MSG_PORT_DESCRIPTOR ||
131 In0P->thread.disposition != 17)
132 return MIG_TYPE_ERROR;
133#endif /* __MigTypeCheck */
134
135#if __MigTypeCheck
136 if (In0P->task.type != MACH_MSG_PORT_DESCRIPTOR ||
137 In0P->task.disposition != 17)
138 return MIG_TYPE_ERROR;
139#endif /* __MigTypeCheck */
140
141#if defined(__NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined)
142 if (In0P->NDR.int_rep != NDR_record.int_rep)
143 __NDR_convert__int_rep__Request__exception_raise_t__codeCnt(&In0P->codeCnt, In0P->NDR.int_rep);
144#endif /* __NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined */
145#if __MigTypeCheck
146 if ( In0P->codeCnt > 2 )
147 return MIG_BAD_ARGUMENTS;
148 if (((msgh_size - (mach_msg_size_t)(sizeof(__Request) - 8)) / 4 < In0P->codeCnt) ||
149 (msgh_size != (mach_msg_size_t)(sizeof(__Request) - 8) + (4 * In0P->codeCnt)))
150 return MIG_BAD_ARGUMENTS;
151#endif /* __MigTypeCheck */
152
153 return MACH_MSG_SUCCESS;
154}
155#endif /* !defined(__MIG_check__Request__exception_raise_t__defined) */
156#endif /* __MIG_check__Request__exc_subsystem__ */
157#endif /* ( __MigTypeCheck ) */
158
159
160/* Routine exception_raise */
161mig_internal novalue _Xexception_raise
162 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
163{
164
165#ifdef __MigPackStructs
166#pragma pack(4)
167#endif
168 typedef struct {
169 mach_msg_header_t Head;
170 /* start of the kernel processed data */
171 mach_msg_body_t msgh_body;
172 mach_msg_port_descriptor_t thread;
173 mach_msg_port_descriptor_t task;
174 /* end of the kernel processed data */
175 NDR_record_t NDR;
176 exception_type_t exception;
177 mach_msg_type_number_t codeCnt;
178 integer_t code[2];
179 mach_msg_trailer_t trailer;
180 } Request __attribute__((unused));
181#ifdef __MigPackStructs
182#pragma pack()
183#endif
184 typedef __Request__exception_raise_t __Request;
185 typedef __Reply__exception_raise_t Reply __attribute__((unused));
186
187 /*
188 * typedef struct {
189 * mach_msg_header_t Head;
190 * NDR_record_t NDR;
191 * kern_return_t RetCode;
192 * } mig_reply_error_t;
193 */
194
195 Request *In0P = (Request *) InHeadP;
196 Reply *OutP = (Reply *) OutHeadP;
197#ifdef __MIG_check__Request__exception_raise_t__defined
198 kern_return_t check_result;
199#endif /* __MIG_check__Request__exception_raise_t__defined */
200
201#if __MigKernelSpecificCode
202#else
203#endif /* __MigKernelSpecificCode */
204 __DeclareRcvRpc(2401, "exception_raise")
205 __BeforeRcvRpc(2401, "exception_raise")
206
207#if defined(__MIG_check__Request__exception_raise_t__defined)
208 check_result = __MIG_check__Request__exception_raise_t((__Request *)In0P);
209 if (check_result != MACH_MSG_SUCCESS)
210 { MIG_RETURN_ERROR(OutP, check_result); }
211#endif /* defined(__MIG_check__Request__exception_raise_t__defined) */
212
213 OutP->RetCode = catch_exception_raise(In0P->Head.msgh_request_port, In0P->thread.name, In0P->task.name, In0P->exception, In0P->code, In0P->codeCnt);
214#if __MigKernelSpecificCode
215#endif /* __MigKernelSpecificCode */
216
217 OutP->NDR = NDR_record;
218
219
220 __AfterRcvRpc(2401, "exception_raise")
221}
222
223#if ( __MigTypeCheck )
224#if __MIG_check__Request__exc_subsystem__
225#if !defined(__MIG_check__Request__exception_raise_state_t__defined)
226#define __MIG_check__Request__exception_raise_state_t__defined
227
228mig_internal kern_return_t __MIG_check__Request__exception_raise_state_t(__attribute__((__unused__)) __Request__exception_raise_state_t *In0P, __attribute__((__unused__)) __Request__exception_raise_state_t **In1PP)
229{
230
231 typedef __Request__exception_raise_state_t __Request;
232 __Request *In1P;
233#if __MigTypeCheck
234 unsigned int msgh_size;
235#endif /* __MigTypeCheck */
236 unsigned int msgh_size_delta;
237
238#if __MigTypeCheck
239 msgh_size = In0P->Head.msgh_size;
240 if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
241 (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 2464)) || (msgh_size > (mach_msg_size_t)sizeof(__Request)))
242 return MIG_BAD_ARGUMENTS;
243#endif /* __MigTypeCheck */
244
245#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined)
246 if (In0P->NDR.int_rep != NDR_record.int_rep)
247 __NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt(&In0P->codeCnt, In0P->NDR.int_rep);
248#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined */
249 msgh_size_delta = (4 * In0P->codeCnt);
250#if __MigTypeCheck
251 if ( In0P->codeCnt > 2 )
252 return MIG_BAD_ARGUMENTS;
253 if (((msgh_size - (mach_msg_size_t)(sizeof(__Request) - 2464)) / 4 < In0P->codeCnt) ||
254 (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 2464) + (4 * In0P->codeCnt)))
255 return MIG_BAD_ARGUMENTS;
256 msgh_size -= msgh_size_delta;
257#endif /* __MigTypeCheck */
258
259 *In1PP = In1P = (__Request *) ((pointer_t) In0P + msgh_size_delta - 8);
260
261#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined)
262 if (In0P->NDR.int_rep != NDR_record.int_rep)
263 __NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt(&In1P->old_stateCnt, In1P->NDR.int_rep);
264#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined */
265#if __MigTypeCheck
266 if ( In1P->old_stateCnt > 614 )
267 return MIG_BAD_ARGUMENTS;
268 if (((msgh_size - (mach_msg_size_t)(sizeof(__Request) - 2464)) / 4 < In1P->old_stateCnt) ||
269 (msgh_size != (mach_msg_size_t)(sizeof(__Request) - 2464) + (4 * In1P->old_stateCnt)))
270 return MIG_BAD_ARGUMENTS;
271#endif /* __MigTypeCheck */
272
273 return MACH_MSG_SUCCESS;
274}
275#endif /* !defined(__MIG_check__Request__exception_raise_state_t__defined) */
276#endif /* __MIG_check__Request__exc_subsystem__ */
277#endif /* ( __MigTypeCheck ) */
278
279
280/* Routine exception_raise_state */
281mig_internal novalue _Xexception_raise_state
282 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
283{
284
285#ifdef __MigPackStructs
286#pragma pack(4)
287#endif
288 typedef struct {
289 mach_msg_header_t Head;
290 NDR_record_t NDR;
291 exception_type_t exception;
292 mach_msg_type_number_t codeCnt;
293 integer_t code[2];
294 int flavor;
295 mach_msg_type_number_t old_stateCnt;
296 natural_t old_state[614];
297 mach_msg_trailer_t trailer;
298 } Request __attribute__((unused));
299#ifdef __MigPackStructs
300#pragma pack()
301#endif
302 typedef __Request__exception_raise_state_t __Request;
303 typedef __Reply__exception_raise_state_t Reply __attribute__((unused));
304
305 /*
306 * typedef struct {
307 * mach_msg_header_t Head;
308 * NDR_record_t NDR;
309 * kern_return_t RetCode;
310 * } mig_reply_error_t;
311 */
312
313 Request *In0P = (Request *) InHeadP;
314 Request *In1P;
315 Reply *OutP = (Reply *) OutHeadP;
316#ifdef __MIG_check__Request__exception_raise_state_t__defined
317 kern_return_t check_result;
318#endif /* __MIG_check__Request__exception_raise_state_t__defined */
319
320#if __MigKernelSpecificCode
321#else
322#endif /* __MigKernelSpecificCode */
323 __DeclareRcvRpc(2402, "exception_raise_state")
324 __BeforeRcvRpc(2402, "exception_raise_state")
325
326#if defined(__MIG_check__Request__exception_raise_state_t__defined)
327 check_result = __MIG_check__Request__exception_raise_state_t((__Request *)In0P, (__Request **)&In1P);
328 if (check_result != MACH_MSG_SUCCESS)
329 { MIG_RETURN_ERROR(OutP, check_result); }
330#endif /* defined(__MIG_check__Request__exception_raise_state_t__defined) */
331
332 OutP->new_stateCnt = 614;
333
334 OutP->RetCode = catch_exception_raise_state(In0P->Head.msgh_request_port, In0P->exception, In0P->code, In0P->codeCnt, &In1P->flavor, In1P->old_state, In1P->old_stateCnt, OutP->new_state, &OutP->new_stateCnt);
335 if (OutP->RetCode != KERN_SUCCESS) {
336 MIG_RETURN_ERROR(OutP, OutP->RetCode);
337 }
338#if __MigKernelSpecificCode
339#endif /* __MigKernelSpecificCode */
340
341 OutP->NDR = NDR_record;
342
343
344 OutP->flavor = In1P->flavor;
345 OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply) - 2456) + (((4 * OutP->new_stateCnt)));
346
347 __AfterRcvRpc(2402, "exception_raise_state")
348}
349
350#if ( __MigTypeCheck )
351#if __MIG_check__Request__exc_subsystem__
352#if !defined(__MIG_check__Request__exception_raise_state_identity_t__defined)
353#define __MIG_check__Request__exception_raise_state_identity_t__defined
354
355mig_internal kern_return_t __MIG_check__Request__exception_raise_state_identity_t(__attribute__((__unused__)) __Request__exception_raise_state_identity_t *In0P, __attribute__((__unused__)) __Request__exception_raise_state_identity_t **In1PP)
356{
357
358 typedef __Request__exception_raise_state_identity_t __Request;
359 __Request *In1P;
360#if __MigTypeCheck
361 unsigned int msgh_size;
362#endif /* __MigTypeCheck */
363 unsigned int msgh_size_delta;
364
365#if __MigTypeCheck
366 msgh_size = In0P->Head.msgh_size;
367 if (!(In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
368 (In0P->msgh_body.msgh_descriptor_count != 2) ||
369 (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 2464)) || (msgh_size > (mach_msg_size_t)sizeof(__Request)))
370 return MIG_BAD_ARGUMENTS;
371#endif /* __MigTypeCheck */
372
373#if __MigTypeCheck
374 if (In0P->thread.type != MACH_MSG_PORT_DESCRIPTOR ||
375 In0P->thread.disposition != 17)
376 return MIG_TYPE_ERROR;
377#endif /* __MigTypeCheck */
378
379#if __MigTypeCheck
380 if (In0P->task.type != MACH_MSG_PORT_DESCRIPTOR ||
381 In0P->task.disposition != 17)
382 return MIG_TYPE_ERROR;
383#endif /* __MigTypeCheck */
384
385#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined)
386 if (In0P->NDR.int_rep != NDR_record.int_rep)
387 __NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt(&In0P->codeCnt, In0P->NDR.int_rep);
388#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined */
389 msgh_size_delta = (4 * In0P->codeCnt);
390#if __MigTypeCheck
391 if ( In0P->codeCnt > 2 )
392 return MIG_BAD_ARGUMENTS;
393 if (((msgh_size - (mach_msg_size_t)(sizeof(__Request) - 2464)) / 4 < In0P->codeCnt) ||
394 (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 2464) + (4 * In0P->codeCnt)))
395 return MIG_BAD_ARGUMENTS;
396 msgh_size -= msgh_size_delta;
397#endif /* __MigTypeCheck */
398
399 *In1PP = In1P = (__Request *) ((pointer_t) In0P + msgh_size_delta - 8);
400
401#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined)
402 if (In0P->NDR.int_rep != NDR_record.int_rep)
403 __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt(&In1P->old_stateCnt, In1P->NDR.int_rep);
404#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined */
405#if __MigTypeCheck
406 if ( In1P->old_stateCnt > 614 )
407 return MIG_BAD_ARGUMENTS;
408 if (((msgh_size - (mach_msg_size_t)(sizeof(__Request) - 2464)) / 4 < In1P->old_stateCnt) ||
409 (msgh_size != (mach_msg_size_t)(sizeof(__Request) - 2464) + (4 * In1P->old_stateCnt)))
410 return MIG_BAD_ARGUMENTS;
411#endif /* __MigTypeCheck */
412
413 return MACH_MSG_SUCCESS;
414}
415#endif /* !defined(__MIG_check__Request__exception_raise_state_identity_t__defined) */
416#endif /* __MIG_check__Request__exc_subsystem__ */
417#endif /* ( __MigTypeCheck ) */
418
419
420/* Routine exception_raise_state_identity */
421mig_internal novalue _Xexception_raise_state_identity
422 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
423{
424
425#ifdef __MigPackStructs
426#pragma pack(4)
427#endif
428 typedef struct {
429 mach_msg_header_t Head;
430 /* start of the kernel processed data */
431 mach_msg_body_t msgh_body;
432 mach_msg_port_descriptor_t thread;
433 mach_msg_port_descriptor_t task;
434 /* end of the kernel processed data */
435 NDR_record_t NDR;
436 exception_type_t exception;
437 mach_msg_type_number_t codeCnt;
438 integer_t code[2];
439 int flavor;
440 mach_msg_type_number_t old_stateCnt;
441 natural_t old_state[614];
442 mach_msg_trailer_t trailer;
443 } Request __attribute__((unused));
444#ifdef __MigPackStructs
445#pragma pack()
446#endif
447 typedef __Request__exception_raise_state_identity_t __Request;
448 typedef __Reply__exception_raise_state_identity_t Reply __attribute__((unused));
449
450 /*
451 * typedef struct {
452 * mach_msg_header_t Head;
453 * NDR_record_t NDR;
454 * kern_return_t RetCode;
455 * } mig_reply_error_t;
456 */
457
458 Request *In0P = (Request *) InHeadP;
459 Request *In1P;
460 Reply *OutP = (Reply *) OutHeadP;
461#ifdef __MIG_check__Request__exception_raise_state_identity_t__defined
462 kern_return_t check_result;
463#endif /* __MIG_check__Request__exception_raise_state_identity_t__defined */
464
465#if __MigKernelSpecificCode
466#else
467#endif /* __MigKernelSpecificCode */
468 __DeclareRcvRpc(2403, "exception_raise_state_identity")
469 __BeforeRcvRpc(2403, "exception_raise_state_identity")
470
471#if defined(__MIG_check__Request__exception_raise_state_identity_t__defined)
472 check_result = __MIG_check__Request__exception_raise_state_identity_t((__Request *)In0P, (__Request **)&In1P);
473 if (check_result != MACH_MSG_SUCCESS)
474 { MIG_RETURN_ERROR(OutP, check_result); }
475#endif /* defined(__MIG_check__Request__exception_raise_state_identity_t__defined) */
476
477 OutP->new_stateCnt = 614;
478
479 OutP->RetCode = catch_exception_raise_state_identity(In0P->Head.msgh_request_port, In0P->thread.name, In0P->task.name, In0P->exception, In0P->code, In0P->codeCnt, &In1P->flavor, In1P->old_state, In1P->old_stateCnt, OutP->new_state, &OutP->new_stateCnt);
480 if (OutP->RetCode != KERN_SUCCESS) {
481 MIG_RETURN_ERROR(OutP, OutP->RetCode);
482 }
483#if __MigKernelSpecificCode
484#endif /* __MigKernelSpecificCode */
485
486 OutP->NDR = NDR_record;
487
488
489 OutP->flavor = In1P->flavor;
490 OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply) - 2456) + (((4 * OutP->new_stateCnt)));
491
492 __AfterRcvRpc(2403, "exception_raise_state_identity")
493}
494
495
496
497/* Description of this subsystem, for use in direct RPC */
498const struct catch_exc_subsystem catch_exc_subsystem = {
499 exc_server_routine,
500 2401,
501 2404,
502 (mach_msg_size_t)sizeof(union __ReplyUnion__catch_exc_subsystem),
503 (vm_address_t)0,
504 {
505 { (mig_impl_routine_t) 0,
506 (mig_stub_routine_t) _Xexception_raise, 6, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__exception_raise_t)},
507 { (mig_impl_routine_t) 0,
508 (mig_stub_routine_t) _Xexception_raise_state, 9, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__exception_raise_state_t)},
509 { (mig_impl_routine_t) 0,
510 (mig_stub_routine_t) _Xexception_raise_state_identity, 11, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__exception_raise_state_identity_t)},
511 }
512};
513
514mig_external boolean_t exc_server
515 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
516{
517 /*
518 * typedef struct {
519 * mach_msg_header_t Head;
520 * NDR_record_t NDR;
521 * kern_return_t RetCode;
522 * } mig_reply_error_t;
523 */
524
525 register mig_routine_t routine;
526
527 OutHeadP->msgh_bits = MACH_MSGH_BITS(MACH_MSGH_BITS_REPLY(InHeadP->msgh_bits), 0);
528 OutHeadP->msgh_remote_port = InHeadP->msgh_reply_port;
529 /* Minimal size: routine() will update it if different */
530 OutHeadP->msgh_size = (mach_msg_size_t)sizeof(mig_reply_error_t);
531 OutHeadP->msgh_local_port = MACH_PORT_NULL;
532 OutHeadP->msgh_id = InHeadP->msgh_id + 100;
533 OutHeadP->msgh_reserved = 0;
534
535 if ((InHeadP->msgh_id > 2403) || (InHeadP->msgh_id < 2401) ||
536 ((routine = catch_exc_subsystem.routine[InHeadP->msgh_id - 2401].stub_routine) == 0)) {
537 ((mig_reply_error_t *)OutHeadP)->NDR = NDR_record;
538 ((mig_reply_error_t *)OutHeadP)->RetCode = MIG_BAD_ID;
539 return FALSE;
540 }
541 (*routine) (InHeadP, OutHeadP);
542 return TRUE;
543}
544
545mig_external mig_routine_t exc_server_routine
546 (mach_msg_header_t *InHeadP)
547{
548 register int msgh_id;
549
550 msgh_id = InHeadP->msgh_id - 2401;
551
552 if ((msgh_id > 2) || (msgh_id < 0))
553 return 0;
554
555 return catch_exc_subsystem.routine[msgh_id].stub_routine;
556}
557