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 processor_set */
10
11#define __MIG_check__Request__processor_set_subsystem__ 1
12
13#include "processor_set_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 _Xprocessor_set_statistics
99 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
100
101mig_internal novalue _Xprocessor_set_destroy
102 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
103
104mig_internal novalue _Xprocessor_set_max_priority
105 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
106
107mig_internal novalue _Xprocessor_set_policy_enable
108 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
109
110mig_internal novalue _Xprocessor_set_policy_disable
111 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
112
113mig_internal novalue _Xprocessor_set_tasks
114 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
115
116mig_internal novalue _Xprocessor_set_threads
117 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
118
119mig_internal novalue _Xprocessor_set_policy_control
120 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
121
122mig_internal novalue _Xprocessor_set_stack_usage
123 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
124
125mig_internal novalue _Xprocessor_set_info
126 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
127
128
129#if ( __MigTypeCheck )
130#if __MIG_check__Request__processor_set_subsystem__
131#if !defined(__MIG_check__Request__processor_set_statistics_t__defined)
132#define __MIG_check__Request__processor_set_statistics_t__defined
133
134mig_internal kern_return_t __MIG_check__Request__processor_set_statistics_t(__attribute__((__unused__)) __Request__processor_set_statistics_t *In0P)
135{
136
137 typedef __Request__processor_set_statistics_t __Request;
138#if __MigTypeCheck
139 if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
140 (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request)))
141 return MIG_BAD_ARGUMENTS;
142#endif /* __MigTypeCheck */
143
144 return MACH_MSG_SUCCESS;
145}
146#endif /* !defined(__MIG_check__Request__processor_set_statistics_t__defined) */
147#endif /* __MIG_check__Request__processor_set_subsystem__ */
148#endif /* ( __MigTypeCheck ) */
149
150
151/* Routine processor_set_statistics */
152mig_internal novalue _Xprocessor_set_statistics
153 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
154{
155
156#ifdef __MigPackStructs
157#pragma pack(4)
158#endif
159 typedef struct {
160 mach_msg_header_t Head;
161 NDR_record_t NDR;
162 processor_set_flavor_t flavor;
163 mach_msg_type_number_t info_outCnt;
164 mach_msg_trailer_t trailer;
165 } Request __attribute__((unused));
166#ifdef __MigPackStructs
167#pragma pack()
168#endif
169 typedef __Request__processor_set_statistics_t __Request;
170 typedef __Reply__processor_set_statistics_t Reply __attribute__((unused));
171
172 /*
173 * typedef struct {
174 * mach_msg_header_t Head;
175 * NDR_record_t NDR;
176 * kern_return_t RetCode;
177 * } mig_reply_error_t;
178 */
179
180 Request *In0P = (Request *) InHeadP;
181 Reply *OutP = (Reply *) OutHeadP;
182#ifdef __MIG_check__Request__processor_set_statistics_t__defined
183 kern_return_t check_result;
184#endif /* __MIG_check__Request__processor_set_statistics_t__defined */
185
186#if __MigKernelSpecificCode
187#else
188#endif /* __MigKernelSpecificCode */
189 processor_set_name_t pset;
190
191 __DeclareRcvRpc(4000, "processor_set_statistics")
192 __BeforeRcvRpc(4000, "processor_set_statistics")
193
194#if defined(__MIG_check__Request__processor_set_statistics_t__defined)
195 check_result = __MIG_check__Request__processor_set_statistics_t((__Request *)In0P);
196 if (check_result != MACH_MSG_SUCCESS)
197 { MIG_RETURN_ERROR(OutP, check_result); }
198#endif /* defined(__MIG_check__Request__processor_set_statistics_t__defined) */
199
200 pset = convert_port_to_pset_name(In0P->Head.msgh_request_port);
201
202 OutP->info_outCnt = 5;
203 if (In0P->info_outCnt < OutP->info_outCnt)
204 OutP->info_outCnt = In0P->info_outCnt;
205
206 OutP->RetCode = processor_set_statistics(pset, In0P->flavor, OutP->info_out, &OutP->info_outCnt);
207 pset_deallocate(pset);
208 if (OutP->RetCode != KERN_SUCCESS) {
209 MIG_RETURN_ERROR(OutP, OutP->RetCode);
210 }
211#if __MigKernelSpecificCode
212#endif /* __MigKernelSpecificCode */
213
214 OutP->NDR = NDR_record;
215
216 OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply) - 20) + (((4 * OutP->info_outCnt)));
217
218 __AfterRcvRpc(4000, "processor_set_statistics")
219}
220
221#if ( __MigTypeCheck )
222#if __MIG_check__Request__processor_set_subsystem__
223#if !defined(__MIG_check__Request__processor_set_destroy_t__defined)
224#define __MIG_check__Request__processor_set_destroy_t__defined
225
226mig_internal kern_return_t __MIG_check__Request__processor_set_destroy_t(__attribute__((__unused__)) __Request__processor_set_destroy_t *In0P)
227{
228
229 typedef __Request__processor_set_destroy_t __Request;
230#if __MigTypeCheck
231 if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
232 (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request)))
233 return MIG_BAD_ARGUMENTS;
234#endif /* __MigTypeCheck */
235
236 return MACH_MSG_SUCCESS;
237}
238#endif /* !defined(__MIG_check__Request__processor_set_destroy_t__defined) */
239#endif /* __MIG_check__Request__processor_set_subsystem__ */
240#endif /* ( __MigTypeCheck ) */
241
242
243/* Routine processor_set_destroy */
244mig_internal novalue _Xprocessor_set_destroy
245 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
246{
247
248#ifdef __MigPackStructs
249#pragma pack(4)
250#endif
251 typedef struct {
252 mach_msg_header_t Head;
253 mach_msg_trailer_t trailer;
254 } Request __attribute__((unused));
255#ifdef __MigPackStructs
256#pragma pack()
257#endif
258 typedef __Request__processor_set_destroy_t __Request;
259 typedef __Reply__processor_set_destroy_t Reply __attribute__((unused));
260
261 /*
262 * typedef struct {
263 * mach_msg_header_t Head;
264 * NDR_record_t NDR;
265 * kern_return_t RetCode;
266 * } mig_reply_error_t;
267 */
268
269 Request *In0P = (Request *) InHeadP;
270 Reply *OutP = (Reply *) OutHeadP;
271#ifdef __MIG_check__Request__processor_set_destroy_t__defined
272 kern_return_t check_result;
273#endif /* __MIG_check__Request__processor_set_destroy_t__defined */
274
275#if __MigKernelSpecificCode
276#else
277#endif /* __MigKernelSpecificCode */
278 processor_set_t set;
279
280 __DeclareRcvRpc(4001, "processor_set_destroy")
281 __BeforeRcvRpc(4001, "processor_set_destroy")
282
283#if defined(__MIG_check__Request__processor_set_destroy_t__defined)
284 check_result = __MIG_check__Request__processor_set_destroy_t((__Request *)In0P);
285 if (check_result != MACH_MSG_SUCCESS)
286 { MIG_RETURN_ERROR(OutP, check_result); }
287#endif /* defined(__MIG_check__Request__processor_set_destroy_t__defined) */
288
289 set = convert_port_to_pset(In0P->Head.msgh_request_port);
290
291 OutP->RetCode = processor_set_destroy(set);
292 pset_deallocate(set);
293#if __MigKernelSpecificCode
294#endif /* __MigKernelSpecificCode */
295
296 OutP->NDR = NDR_record;
297
298
299 __AfterRcvRpc(4001, "processor_set_destroy")
300}
301
302#if ( __MigTypeCheck )
303#if __MIG_check__Request__processor_set_subsystem__
304#if !defined(__MIG_check__Request__processor_set_max_priority_t__defined)
305#define __MIG_check__Request__processor_set_max_priority_t__defined
306
307mig_internal kern_return_t __MIG_check__Request__processor_set_max_priority_t(__attribute__((__unused__)) __Request__processor_set_max_priority_t *In0P)
308{
309
310 typedef __Request__processor_set_max_priority_t __Request;
311#if __MigTypeCheck
312 if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
313 (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request)))
314 return MIG_BAD_ARGUMENTS;
315#endif /* __MigTypeCheck */
316
317 return MACH_MSG_SUCCESS;
318}
319#endif /* !defined(__MIG_check__Request__processor_set_max_priority_t__defined) */
320#endif /* __MIG_check__Request__processor_set_subsystem__ */
321#endif /* ( __MigTypeCheck ) */
322
323
324/* Routine processor_set_max_priority */
325mig_internal novalue _Xprocessor_set_max_priority
326 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
327{
328
329#ifdef __MigPackStructs
330#pragma pack(4)
331#endif
332 typedef struct {
333 mach_msg_header_t Head;
334 NDR_record_t NDR;
335 int max_priority;
336 boolean_t change_threads;
337 mach_msg_trailer_t trailer;
338 } Request __attribute__((unused));
339#ifdef __MigPackStructs
340#pragma pack()
341#endif
342 typedef __Request__processor_set_max_priority_t __Request;
343 typedef __Reply__processor_set_max_priority_t Reply __attribute__((unused));
344
345 /*
346 * typedef struct {
347 * mach_msg_header_t Head;
348 * NDR_record_t NDR;
349 * kern_return_t RetCode;
350 * } mig_reply_error_t;
351 */
352
353 Request *In0P = (Request *) InHeadP;
354 Reply *OutP = (Reply *) OutHeadP;
355#ifdef __MIG_check__Request__processor_set_max_priority_t__defined
356 kern_return_t check_result;
357#endif /* __MIG_check__Request__processor_set_max_priority_t__defined */
358
359#if __MigKernelSpecificCode
360#else
361#endif /* __MigKernelSpecificCode */
362 processor_set_t processor_set;
363
364 __DeclareRcvRpc(4002, "processor_set_max_priority")
365 __BeforeRcvRpc(4002, "processor_set_max_priority")
366
367#if defined(__MIG_check__Request__processor_set_max_priority_t__defined)
368 check_result = __MIG_check__Request__processor_set_max_priority_t((__Request *)In0P);
369 if (check_result != MACH_MSG_SUCCESS)
370 { MIG_RETURN_ERROR(OutP, check_result); }
371#endif /* defined(__MIG_check__Request__processor_set_max_priority_t__defined) */
372
373 processor_set = convert_port_to_pset(In0P->Head.msgh_request_port);
374
375 OutP->RetCode = processor_set_max_priority(processor_set, In0P->max_priority, In0P->change_threads);
376 pset_deallocate(processor_set);
377#if __MigKernelSpecificCode
378#endif /* __MigKernelSpecificCode */
379
380 OutP->NDR = NDR_record;
381
382
383 __AfterRcvRpc(4002, "processor_set_max_priority")
384}
385
386#if ( __MigTypeCheck )
387#if __MIG_check__Request__processor_set_subsystem__
388#if !defined(__MIG_check__Request__processor_set_policy_enable_t__defined)
389#define __MIG_check__Request__processor_set_policy_enable_t__defined
390
391mig_internal kern_return_t __MIG_check__Request__processor_set_policy_enable_t(__attribute__((__unused__)) __Request__processor_set_policy_enable_t *In0P)
392{
393
394 typedef __Request__processor_set_policy_enable_t __Request;
395#if __MigTypeCheck
396 if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
397 (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request)))
398 return MIG_BAD_ARGUMENTS;
399#endif /* __MigTypeCheck */
400
401 return MACH_MSG_SUCCESS;
402}
403#endif /* !defined(__MIG_check__Request__processor_set_policy_enable_t__defined) */
404#endif /* __MIG_check__Request__processor_set_subsystem__ */
405#endif /* ( __MigTypeCheck ) */
406
407
408/* Routine processor_set_policy_enable */
409mig_internal novalue _Xprocessor_set_policy_enable
410 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
411{
412
413#ifdef __MigPackStructs
414#pragma pack(4)
415#endif
416 typedef struct {
417 mach_msg_header_t Head;
418 NDR_record_t NDR;
419 int policy;
420 mach_msg_trailer_t trailer;
421 } Request __attribute__((unused));
422#ifdef __MigPackStructs
423#pragma pack()
424#endif
425 typedef __Request__processor_set_policy_enable_t __Request;
426 typedef __Reply__processor_set_policy_enable_t Reply __attribute__((unused));
427
428 /*
429 * typedef struct {
430 * mach_msg_header_t Head;
431 * NDR_record_t NDR;
432 * kern_return_t RetCode;
433 * } mig_reply_error_t;
434 */
435
436 Request *In0P = (Request *) InHeadP;
437 Reply *OutP = (Reply *) OutHeadP;
438#ifdef __MIG_check__Request__processor_set_policy_enable_t__defined
439 kern_return_t check_result;
440#endif /* __MIG_check__Request__processor_set_policy_enable_t__defined */
441
442#if __MigKernelSpecificCode
443#else
444#endif /* __MigKernelSpecificCode */
445 processor_set_t processor_set;
446
447 __DeclareRcvRpc(4003, "processor_set_policy_enable")
448 __BeforeRcvRpc(4003, "processor_set_policy_enable")
449
450#if defined(__MIG_check__Request__processor_set_policy_enable_t__defined)
451 check_result = __MIG_check__Request__processor_set_policy_enable_t((__Request *)In0P);
452 if (check_result != MACH_MSG_SUCCESS)
453 { MIG_RETURN_ERROR(OutP, check_result); }
454#endif /* defined(__MIG_check__Request__processor_set_policy_enable_t__defined) */
455
456 processor_set = convert_port_to_pset(In0P->Head.msgh_request_port);
457
458 OutP->RetCode = processor_set_policy_enable(processor_set, In0P->policy);
459 pset_deallocate(processor_set);
460#if __MigKernelSpecificCode
461#endif /* __MigKernelSpecificCode */
462
463 OutP->NDR = NDR_record;
464
465
466 __AfterRcvRpc(4003, "processor_set_policy_enable")
467}
468
469#if ( __MigTypeCheck )
470#if __MIG_check__Request__processor_set_subsystem__
471#if !defined(__MIG_check__Request__processor_set_policy_disable_t__defined)
472#define __MIG_check__Request__processor_set_policy_disable_t__defined
473
474mig_internal kern_return_t __MIG_check__Request__processor_set_policy_disable_t(__attribute__((__unused__)) __Request__processor_set_policy_disable_t *In0P)
475{
476
477 typedef __Request__processor_set_policy_disable_t __Request;
478#if __MigTypeCheck
479 if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
480 (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request)))
481 return MIG_BAD_ARGUMENTS;
482#endif /* __MigTypeCheck */
483
484 return MACH_MSG_SUCCESS;
485}
486#endif /* !defined(__MIG_check__Request__processor_set_policy_disable_t__defined) */
487#endif /* __MIG_check__Request__processor_set_subsystem__ */
488#endif /* ( __MigTypeCheck ) */
489
490
491/* Routine processor_set_policy_disable */
492mig_internal novalue _Xprocessor_set_policy_disable
493 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
494{
495
496#ifdef __MigPackStructs
497#pragma pack(4)
498#endif
499 typedef struct {
500 mach_msg_header_t Head;
501 NDR_record_t NDR;
502 int policy;
503 boolean_t change_threads;
504 mach_msg_trailer_t trailer;
505 } Request __attribute__((unused));
506#ifdef __MigPackStructs
507#pragma pack()
508#endif
509 typedef __Request__processor_set_policy_disable_t __Request;
510 typedef __Reply__processor_set_policy_disable_t Reply __attribute__((unused));
511
512 /*
513 * typedef struct {
514 * mach_msg_header_t Head;
515 * NDR_record_t NDR;
516 * kern_return_t RetCode;
517 * } mig_reply_error_t;
518 */
519
520 Request *In0P = (Request *) InHeadP;
521 Reply *OutP = (Reply *) OutHeadP;
522#ifdef __MIG_check__Request__processor_set_policy_disable_t__defined
523 kern_return_t check_result;
524#endif /* __MIG_check__Request__processor_set_policy_disable_t__defined */
525
526#if __MigKernelSpecificCode
527#else
528#endif /* __MigKernelSpecificCode */
529 processor_set_t processor_set;
530
531 __DeclareRcvRpc(4004, "processor_set_policy_disable")
532 __BeforeRcvRpc(4004, "processor_set_policy_disable")
533
534#if defined(__MIG_check__Request__processor_set_policy_disable_t__defined)
535 check_result = __MIG_check__Request__processor_set_policy_disable_t((__Request *)In0P);
536 if (check_result != MACH_MSG_SUCCESS)
537 { MIG_RETURN_ERROR(OutP, check_result); }
538#endif /* defined(__MIG_check__Request__processor_set_policy_disable_t__defined) */
539
540 processor_set = convert_port_to_pset(In0P->Head.msgh_request_port);
541
542 OutP->RetCode = processor_set_policy_disable(processor_set, In0P->policy, In0P->change_threads);
543 pset_deallocate(processor_set);
544#if __MigKernelSpecificCode
545#endif /* __MigKernelSpecificCode */
546
547 OutP->NDR = NDR_record;
548
549
550 __AfterRcvRpc(4004, "processor_set_policy_disable")
551}
552
553#if ( __MigTypeCheck )
554#if __MIG_check__Request__processor_set_subsystem__
555#if !defined(__MIG_check__Request__processor_set_tasks_t__defined)
556#define __MIG_check__Request__processor_set_tasks_t__defined
557
558mig_internal kern_return_t __MIG_check__Request__processor_set_tasks_t(__attribute__((__unused__)) __Request__processor_set_tasks_t *In0P)
559{
560
561 typedef __Request__processor_set_tasks_t __Request;
562#if __MigTypeCheck
563 if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
564 (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request)))
565 return MIG_BAD_ARGUMENTS;
566#endif /* __MigTypeCheck */
567
568 return MACH_MSG_SUCCESS;
569}
570#endif /* !defined(__MIG_check__Request__processor_set_tasks_t__defined) */
571#endif /* __MIG_check__Request__processor_set_subsystem__ */
572#endif /* ( __MigTypeCheck ) */
573
574
575/* Routine processor_set_tasks */
576mig_internal novalue _Xprocessor_set_tasks
577 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
578{
579
580#ifdef __MigPackStructs
581#pragma pack(4)
582#endif
583 typedef struct {
584 mach_msg_header_t Head;
585 mach_msg_trailer_t trailer;
586 } Request __attribute__((unused));
587#ifdef __MigPackStructs
588#pragma pack()
589#endif
590 typedef __Request__processor_set_tasks_t __Request;
591 typedef __Reply__processor_set_tasks_t Reply __attribute__((unused));
592
593 /*
594 * typedef struct {
595 * mach_msg_header_t Head;
596 * NDR_record_t NDR;
597 * kern_return_t RetCode;
598 * } mig_reply_error_t;
599 */
600
601 Request *In0P = (Request *) InHeadP;
602 Reply *OutP = (Reply *) OutHeadP;
603#ifdef __MIG_check__Request__processor_set_tasks_t__defined
604 kern_return_t check_result;
605#endif /* __MIG_check__Request__processor_set_tasks_t__defined */
606
607#if __MigKernelSpecificCode
608#if UseStaticTemplates
609 const static mach_msg_ool_ports_descriptor_t task_listTemplate = {
610 /* addr = */ (void *)0,
611 /* coun = */ 0,
612 /* deal = */ FALSE,
613 /* copy is meaningful only in overwrite mode */
614 /* copy = */ MACH_MSG_PHYSICAL_COPY,
615 /* disp = */ 17,
616 /* type = */ MACH_MSG_OOL_PORTS_DESCRIPTOR,
617 };
618#endif /* UseStaticTemplates */
619
620#else
621#if UseStaticTemplates
622 const static mach_msg_ool_ports_descriptor_t task_listTemplate = {
623 /* addr = */ (void *)0,
624 /* coun = */ 0,
625 /* deal = */ FALSE,
626 /* copy is meaningful only in overwrite mode */
627 /* copy = */ MACH_MSG_PHYSICAL_COPY,
628 /* disp = */ 19,
629 /* type = */ MACH_MSG_OOL_PORTS_DESCRIPTOR,
630 };
631#endif /* UseStaticTemplates */
632
633#endif /* __MigKernelSpecificCode */
634 kern_return_t RetCode;
635 processor_set_t processor_set;
636
637 __DeclareRcvRpc(4005, "processor_set_tasks")
638 __BeforeRcvRpc(4005, "processor_set_tasks")
639
640#if defined(__MIG_check__Request__processor_set_tasks_t__defined)
641 check_result = __MIG_check__Request__processor_set_tasks_t((__Request *)In0P);
642 if (check_result != MACH_MSG_SUCCESS)
643 { MIG_RETURN_ERROR(OutP, check_result); }
644#endif /* defined(__MIG_check__Request__processor_set_tasks_t__defined) */
645
646#if UseStaticTemplates
647 OutP->task_list = task_listTemplate;
648#else /* UseStaticTemplates */
649#if __MigKernelSpecificCode
650 OutP->task_list.disposition = 17;
651#else
652 OutP->task_list.disposition = 19;
653#endif /* __MigKernelSpecificCode */
654 OutP->task_list.deallocate = FALSE;
655 OutP->task_list.type = MACH_MSG_OOL_PORTS_DESCRIPTOR;
656#endif /* UseStaticTemplates */
657
658
659 processor_set = convert_port_to_pset(In0P->Head.msgh_request_port);
660
661 RetCode = processor_set_tasks(processor_set, (task_array_t *)&(OutP->task_list.address), &OutP->task_listCnt);
662 pset_deallocate(processor_set);
663 if (RetCode != KERN_SUCCESS) {
664 MIG_RETURN_ERROR(OutP, RetCode);
665 }
666#if __MigKernelSpecificCode
667#endif /* __MigKernelSpecificCode */
668 OutP->task_list.count = OutP->task_listCnt;
669
670
671 OutP->NDR = NDR_record;
672
673
674 OutP->Head.msgh_bits |= MACH_MSGH_BITS_COMPLEX;
675 OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply));
676 OutP->msgh_body.msgh_descriptor_count = 1;
677 __AfterRcvRpc(4005, "processor_set_tasks")
678}
679
680#if ( __MigTypeCheck )
681#if __MIG_check__Request__processor_set_subsystem__
682#if !defined(__MIG_check__Request__processor_set_threads_t__defined)
683#define __MIG_check__Request__processor_set_threads_t__defined
684
685mig_internal kern_return_t __MIG_check__Request__processor_set_threads_t(__attribute__((__unused__)) __Request__processor_set_threads_t *In0P)
686{
687
688 typedef __Request__processor_set_threads_t __Request;
689#if __MigTypeCheck
690 if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
691 (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request)))
692 return MIG_BAD_ARGUMENTS;
693#endif /* __MigTypeCheck */
694
695 return MACH_MSG_SUCCESS;
696}
697#endif /* !defined(__MIG_check__Request__processor_set_threads_t__defined) */
698#endif /* __MIG_check__Request__processor_set_subsystem__ */
699#endif /* ( __MigTypeCheck ) */
700
701
702/* Routine processor_set_threads */
703mig_internal novalue _Xprocessor_set_threads
704 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
705{
706
707#ifdef __MigPackStructs
708#pragma pack(4)
709#endif
710 typedef struct {
711 mach_msg_header_t Head;
712 mach_msg_trailer_t trailer;
713 } Request __attribute__((unused));
714#ifdef __MigPackStructs
715#pragma pack()
716#endif
717 typedef __Request__processor_set_threads_t __Request;
718 typedef __Reply__processor_set_threads_t Reply __attribute__((unused));
719
720 /*
721 * typedef struct {
722 * mach_msg_header_t Head;
723 * NDR_record_t NDR;
724 * kern_return_t RetCode;
725 * } mig_reply_error_t;
726 */
727
728 Request *In0P = (Request *) InHeadP;
729 Reply *OutP = (Reply *) OutHeadP;
730#ifdef __MIG_check__Request__processor_set_threads_t__defined
731 kern_return_t check_result;
732#endif /* __MIG_check__Request__processor_set_threads_t__defined */
733
734#if __MigKernelSpecificCode
735#if UseStaticTemplates
736 const static mach_msg_ool_ports_descriptor_t thread_listTemplate = {
737 /* addr = */ (void *)0,
738 /* coun = */ 0,
739 /* deal = */ FALSE,
740 /* copy is meaningful only in overwrite mode */
741 /* copy = */ MACH_MSG_PHYSICAL_COPY,
742 /* disp = */ 17,
743 /* type = */ MACH_MSG_OOL_PORTS_DESCRIPTOR,
744 };
745#endif /* UseStaticTemplates */
746
747#else
748#if UseStaticTemplates
749 const static mach_msg_ool_ports_descriptor_t thread_listTemplate = {
750 /* addr = */ (void *)0,
751 /* coun = */ 0,
752 /* deal = */ FALSE,
753 /* copy is meaningful only in overwrite mode */
754 /* copy = */ MACH_MSG_PHYSICAL_COPY,
755 /* disp = */ 19,
756 /* type = */ MACH_MSG_OOL_PORTS_DESCRIPTOR,
757 };
758#endif /* UseStaticTemplates */
759
760#endif /* __MigKernelSpecificCode */
761 kern_return_t RetCode;
762 processor_set_t processor_set;
763
764 __DeclareRcvRpc(4006, "processor_set_threads")
765 __BeforeRcvRpc(4006, "processor_set_threads")
766
767#if defined(__MIG_check__Request__processor_set_threads_t__defined)
768 check_result = __MIG_check__Request__processor_set_threads_t((__Request *)In0P);
769 if (check_result != MACH_MSG_SUCCESS)
770 { MIG_RETURN_ERROR(OutP, check_result); }
771#endif /* defined(__MIG_check__Request__processor_set_threads_t__defined) */
772
773#if UseStaticTemplates
774 OutP->thread_list = thread_listTemplate;
775#else /* UseStaticTemplates */
776#if __MigKernelSpecificCode
777 OutP->thread_list.disposition = 17;
778#else
779 OutP->thread_list.disposition = 19;
780#endif /* __MigKernelSpecificCode */
781 OutP->thread_list.deallocate = FALSE;
782 OutP->thread_list.type = MACH_MSG_OOL_PORTS_DESCRIPTOR;
783#endif /* UseStaticTemplates */
784
785
786 processor_set = convert_port_to_pset(In0P->Head.msgh_request_port);
787
788 RetCode = processor_set_threads(processor_set, (thread_act_array_t *)&(OutP->thread_list.address), &OutP->thread_listCnt);
789 pset_deallocate(processor_set);
790 if (RetCode != KERN_SUCCESS) {
791 MIG_RETURN_ERROR(OutP, RetCode);
792 }
793#if __MigKernelSpecificCode
794#endif /* __MigKernelSpecificCode */
795 OutP->thread_list.count = OutP->thread_listCnt;
796
797
798 OutP->NDR = NDR_record;
799
800
801 OutP->Head.msgh_bits |= MACH_MSGH_BITS_COMPLEX;
802 OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply));
803 OutP->msgh_body.msgh_descriptor_count = 1;
804 __AfterRcvRpc(4006, "processor_set_threads")
805}
806
807#if ( __MigTypeCheck )
808#if __MIG_check__Request__processor_set_subsystem__
809#if !defined(__MIG_check__Request__processor_set_policy_control_t__defined)
810#define __MIG_check__Request__processor_set_policy_control_t__defined
811
812mig_internal kern_return_t __MIG_check__Request__processor_set_policy_control_t(__attribute__((__unused__)) __Request__processor_set_policy_control_t *In0P, __attribute__((__unused__)) __Request__processor_set_policy_control_t **In1PP)
813{
814
815 typedef __Request__processor_set_policy_control_t __Request;
816 __Request *In1P;
817#if __MigTypeCheck
818 unsigned int msgh_size;
819#endif /* __MigTypeCheck */
820 unsigned int msgh_size_delta;
821
822#if __MigTypeCheck
823 msgh_size = In0P->Head.msgh_size;
824 if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
825 (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 20)) || (msgh_size > (mach_msg_size_t)sizeof(__Request)))
826 return MIG_BAD_ARGUMENTS;
827#endif /* __MigTypeCheck */
828
829#if defined(__NDR_convert__int_rep__Request__processor_set_policy_control_t__policy_infoCnt__defined)
830 if (In0P->NDR.int_rep != NDR_record.int_rep)
831 __NDR_convert__int_rep__Request__processor_set_policy_control_t__policy_infoCnt(&In0P->policy_infoCnt, In0P->NDR.int_rep);
832#endif /* __NDR_convert__int_rep__Request__processor_set_policy_control_t__policy_infoCnt__defined */
833 msgh_size_delta = (4 * In0P->policy_infoCnt);
834#if __MigTypeCheck
835 if ( In0P->policy_infoCnt > 5 )
836 return MIG_BAD_ARGUMENTS;
837 if (((msgh_size - (mach_msg_size_t)(sizeof(__Request) - 20)) / 4 < In0P->policy_infoCnt) ||
838 (msgh_size != (mach_msg_size_t)(sizeof(__Request) - 20) + (4 * In0P->policy_infoCnt)))
839 return MIG_BAD_ARGUMENTS;
840#endif /* __MigTypeCheck */
841
842 *In1PP = In1P = (__Request *) ((pointer_t) In0P + msgh_size_delta - 20);
843
844 return MACH_MSG_SUCCESS;
845}
846#endif /* !defined(__MIG_check__Request__processor_set_policy_control_t__defined) */
847#endif /* __MIG_check__Request__processor_set_subsystem__ */
848#endif /* ( __MigTypeCheck ) */
849
850
851/* Routine processor_set_policy_control */
852mig_internal novalue _Xprocessor_set_policy_control
853 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
854{
855
856#ifdef __MigPackStructs
857#pragma pack(4)
858#endif
859 typedef struct {
860 mach_msg_header_t Head;
861 NDR_record_t NDR;
862 processor_set_flavor_t flavor;
863 mach_msg_type_number_t policy_infoCnt;
864 integer_t policy_info[5];
865 boolean_t change;
866 mach_msg_trailer_t trailer;
867 } Request __attribute__((unused));
868#ifdef __MigPackStructs
869#pragma pack()
870#endif
871 typedef __Request__processor_set_policy_control_t __Request;
872 typedef __Reply__processor_set_policy_control_t Reply __attribute__((unused));
873
874 /*
875 * typedef struct {
876 * mach_msg_header_t Head;
877 * NDR_record_t NDR;
878 * kern_return_t RetCode;
879 * } mig_reply_error_t;
880 */
881
882 Request *In0P = (Request *) InHeadP;
883 Request *In1P;
884 Reply *OutP = (Reply *) OutHeadP;
885#ifdef __MIG_check__Request__processor_set_policy_control_t__defined
886 kern_return_t check_result;
887#endif /* __MIG_check__Request__processor_set_policy_control_t__defined */
888
889#if __MigKernelSpecificCode
890#else
891#endif /* __MigKernelSpecificCode */
892 processor_set_t pset;
893
894 __DeclareRcvRpc(4007, "processor_set_policy_control")
895 __BeforeRcvRpc(4007, "processor_set_policy_control")
896
897#if defined(__MIG_check__Request__processor_set_policy_control_t__defined)
898 check_result = __MIG_check__Request__processor_set_policy_control_t((__Request *)In0P, (__Request **)&In1P);
899 if (check_result != MACH_MSG_SUCCESS)
900 { MIG_RETURN_ERROR(OutP, check_result); }
901#endif /* defined(__MIG_check__Request__processor_set_policy_control_t__defined) */
902
903 pset = convert_port_to_pset(In0P->Head.msgh_request_port);
904
905 OutP->RetCode = processor_set_policy_control(pset, In0P->flavor, In0P->policy_info, In0P->policy_infoCnt, In1P->change);
906 pset_deallocate(pset);
907#if __MigKernelSpecificCode
908#endif /* __MigKernelSpecificCode */
909
910 OutP->NDR = NDR_record;
911
912
913 __AfterRcvRpc(4007, "processor_set_policy_control")
914}
915
916#if ( __MigTypeCheck )
917#if __MIG_check__Request__processor_set_subsystem__
918#if !defined(__MIG_check__Request__processor_set_stack_usage_t__defined)
919#define __MIG_check__Request__processor_set_stack_usage_t__defined
920
921mig_internal kern_return_t __MIG_check__Request__processor_set_stack_usage_t(__attribute__((__unused__)) __Request__processor_set_stack_usage_t *In0P)
922{
923
924 typedef __Request__processor_set_stack_usage_t __Request;
925#if __MigTypeCheck
926 if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
927 (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request)))
928 return MIG_BAD_ARGUMENTS;
929#endif /* __MigTypeCheck */
930
931 return MACH_MSG_SUCCESS;
932}
933#endif /* !defined(__MIG_check__Request__processor_set_stack_usage_t__defined) */
934#endif /* __MIG_check__Request__processor_set_subsystem__ */
935#endif /* ( __MigTypeCheck ) */
936
937
938/* Routine processor_set_stack_usage */
939mig_internal novalue _Xprocessor_set_stack_usage
940 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
941{
942
943#ifdef __MigPackStructs
944#pragma pack(4)
945#endif
946 typedef struct {
947 mach_msg_header_t Head;
948 mach_msg_trailer_t trailer;
949 } Request __attribute__((unused));
950#ifdef __MigPackStructs
951#pragma pack()
952#endif
953 typedef __Request__processor_set_stack_usage_t __Request;
954 typedef __Reply__processor_set_stack_usage_t Reply __attribute__((unused));
955
956 /*
957 * typedef struct {
958 * mach_msg_header_t Head;
959 * NDR_record_t NDR;
960 * kern_return_t RetCode;
961 * } mig_reply_error_t;
962 */
963
964 Request *In0P = (Request *) InHeadP;
965 Reply *OutP = (Reply *) OutHeadP;
966#ifdef __MIG_check__Request__processor_set_stack_usage_t__defined
967 kern_return_t check_result;
968#endif /* __MIG_check__Request__processor_set_stack_usage_t__defined */
969
970#if __MigKernelSpecificCode
971#else
972#endif /* __MigKernelSpecificCode */
973 processor_set_t pset;
974
975 __DeclareRcvRpc(4008, "processor_set_stack_usage")
976 __BeforeRcvRpc(4008, "processor_set_stack_usage")
977
978#if defined(__MIG_check__Request__processor_set_stack_usage_t__defined)
979 check_result = __MIG_check__Request__processor_set_stack_usage_t((__Request *)In0P);
980 if (check_result != MACH_MSG_SUCCESS)
981 { MIG_RETURN_ERROR(OutP, check_result); }
982#endif /* defined(__MIG_check__Request__processor_set_stack_usage_t__defined) */
983
984 pset = convert_port_to_pset(In0P->Head.msgh_request_port);
985
986 OutP->RetCode = processor_set_stack_usage(pset, &OutP->ltotal, &OutP->space, &OutP->resident, &OutP->maxusage, &OutP->maxstack);
987 pset_deallocate(pset);
988 if (OutP->RetCode != KERN_SUCCESS) {
989 MIG_RETURN_ERROR(OutP, OutP->RetCode);
990 }
991#if __MigKernelSpecificCode
992#endif /* __MigKernelSpecificCode */
993
994 OutP->NDR = NDR_record;
995
996
997 OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply));
998 __AfterRcvRpc(4008, "processor_set_stack_usage")
999}
1000
1001#if ( __MigTypeCheck )
1002#if __MIG_check__Request__processor_set_subsystem__
1003#if !defined(__MIG_check__Request__processor_set_info_t__defined)
1004#define __MIG_check__Request__processor_set_info_t__defined
1005
1006mig_internal kern_return_t __MIG_check__Request__processor_set_info_t(__attribute__((__unused__)) __Request__processor_set_info_t *In0P)
1007{
1008
1009 typedef __Request__processor_set_info_t __Request;
1010#if __MigTypeCheck
1011 if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
1012 (In0P->Head.msgh_size != (mach_msg_size_t)sizeof(__Request)))
1013 return MIG_BAD_ARGUMENTS;
1014#endif /* __MigTypeCheck */
1015
1016 return MACH_MSG_SUCCESS;
1017}
1018#endif /* !defined(__MIG_check__Request__processor_set_info_t__defined) */
1019#endif /* __MIG_check__Request__processor_set_subsystem__ */
1020#endif /* ( __MigTypeCheck ) */
1021
1022
1023/* Routine processor_set_info */
1024mig_internal novalue _Xprocessor_set_info
1025 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
1026{
1027
1028#ifdef __MigPackStructs
1029#pragma pack(4)
1030#endif
1031 typedef struct {
1032 mach_msg_header_t Head;
1033 NDR_record_t NDR;
1034 int flavor;
1035 mach_msg_type_number_t info_outCnt;
1036 mach_msg_trailer_t trailer;
1037 } Request __attribute__((unused));
1038#ifdef __MigPackStructs
1039#pragma pack()
1040#endif
1041 typedef __Request__processor_set_info_t __Request;
1042 typedef __Reply__processor_set_info_t Reply __attribute__((unused));
1043
1044 /*
1045 * typedef struct {
1046 * mach_msg_header_t Head;
1047 * NDR_record_t NDR;
1048 * kern_return_t RetCode;
1049 * } mig_reply_error_t;
1050 */
1051
1052 Request *In0P = (Request *) InHeadP;
1053 Reply *OutP = (Reply *) OutHeadP;
1054#ifdef __MIG_check__Request__processor_set_info_t__defined
1055 kern_return_t check_result;
1056#endif /* __MIG_check__Request__processor_set_info_t__defined */
1057
1058#if __MigKernelSpecificCode
1059#if UseStaticTemplates
1060 const static mach_msg_port_descriptor_t hostTemplate = {
1061 /* name = */ MACH_PORT_NULL,
1062 /* pad1 = */ 0,
1063 /* pad2 = */ 0,
1064 /* disp = */ 17,
1065 /* type = */ MACH_MSG_PORT_DESCRIPTOR,
1066 };
1067#endif /* UseStaticTemplates */
1068
1069#else
1070#if UseStaticTemplates
1071 const static mach_msg_port_descriptor_t hostTemplate = {
1072 /* name = */ MACH_PORT_NULL,
1073 /* pad1 = */ 0,
1074 /* pad2 = */ 0,
1075 /* disp = */ 19,
1076 /* type = */ MACH_MSG_PORT_DESCRIPTOR,
1077 };
1078#endif /* UseStaticTemplates */
1079
1080#endif /* __MigKernelSpecificCode */
1081 kern_return_t RetCode;
1082 processor_set_name_t set_name;
1083 host_t host;
1084
1085 __DeclareRcvRpc(4009, "processor_set_info")
1086 __BeforeRcvRpc(4009, "processor_set_info")
1087
1088#if defined(__MIG_check__Request__processor_set_info_t__defined)
1089 check_result = __MIG_check__Request__processor_set_info_t((__Request *)In0P);
1090 if (check_result != MACH_MSG_SUCCESS)
1091 { MIG_RETURN_ERROR(OutP, check_result); }
1092#endif /* defined(__MIG_check__Request__processor_set_info_t__defined) */
1093
1094#if UseStaticTemplates
1095 OutP->host = hostTemplate;
1096#else /* UseStaticTemplates */
1097#if __MigKernelSpecificCode
1098 OutP->host.disposition = 17;
1099#else
1100 OutP->host.disposition = 19;
1101#endif /* __MigKernelSpecificCode */
1102#if !(defined(KERNEL) && defined(__LP64__))
1103 OutP->host.pad1 = 0;
1104#endif
1105 OutP->host.pad2 = 0;
1106 OutP->host.type = MACH_MSG_PORT_DESCRIPTOR;
1107#if defined(KERNEL)
1108 OutP->host.pad_end = 0;
1109#endif
1110#endif /* UseStaticTemplates */
1111
1112
1113 set_name = convert_port_to_pset_name(In0P->Head.msgh_request_port);
1114
1115 OutP->info_outCnt = 5;
1116 if (In0P->info_outCnt < OutP->info_outCnt)
1117 OutP->info_outCnt = In0P->info_outCnt;
1118
1119 RetCode = processor_set_info(set_name, In0P->flavor, &host, OutP->info_out, &OutP->info_outCnt);
1120 pset_deallocate(set_name);
1121 if (RetCode != KERN_SUCCESS) {
1122 MIG_RETURN_ERROR(OutP, RetCode);
1123 }
1124#if __MigKernelSpecificCode
1125#endif /* __MigKernelSpecificCode */
1126 OutP->host.name = (mach_port_t)convert_host_to_port(host);
1127
1128
1129 OutP->NDR = NDR_record;
1130
1131 OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply) - 20) + (((4 * OutP->info_outCnt)));
1132
1133 OutP->Head.msgh_bits |= MACH_MSGH_BITS_COMPLEX;
1134 OutP->msgh_body.msgh_descriptor_count = 1;
1135 __AfterRcvRpc(4009, "processor_set_info")
1136}
1137
1138
1139
1140/* Description of this subsystem, for use in direct RPC */
1141const struct processor_set_subsystem processor_set_subsystem = {
1142 processor_set_server_routine,
1143 4000,
1144 4010,
1145 (mach_msg_size_t)sizeof(union __ReplyUnion__processor_set_subsystem),
1146 (vm_address_t)0,
1147 {
1148 { (mig_impl_routine_t) 0,
1149 (mig_stub_routine_t) _Xprocessor_set_statistics, 4, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__processor_set_statistics_t)},
1150 { (mig_impl_routine_t) 0,
1151 (mig_stub_routine_t) _Xprocessor_set_destroy, 1, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__processor_set_destroy_t)},
1152 { (mig_impl_routine_t) 0,
1153 (mig_stub_routine_t) _Xprocessor_set_max_priority, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__processor_set_max_priority_t)},
1154 { (mig_impl_routine_t) 0,
1155 (mig_stub_routine_t) _Xprocessor_set_policy_enable, 2, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__processor_set_policy_enable_t)},
1156 { (mig_impl_routine_t) 0,
1157 (mig_stub_routine_t) _Xprocessor_set_policy_disable, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__processor_set_policy_disable_t)},
1158 { (mig_impl_routine_t) 0,
1159 (mig_stub_routine_t) _Xprocessor_set_tasks, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__processor_set_tasks_t)},
1160 { (mig_impl_routine_t) 0,
1161 (mig_stub_routine_t) _Xprocessor_set_threads, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__processor_set_threads_t)},
1162 { (mig_impl_routine_t) 0,
1163 (mig_stub_routine_t) _Xprocessor_set_policy_control, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__processor_set_policy_control_t)},
1164 { (mig_impl_routine_t) 0,
1165 (mig_stub_routine_t) _Xprocessor_set_stack_usage, 6, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__processor_set_stack_usage_t)},
1166 { (mig_impl_routine_t) 0,
1167 (mig_stub_routine_t) _Xprocessor_set_info, 5, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__processor_set_info_t)},
1168 }
1169};
1170
1171mig_external boolean_t processor_set_server
1172 (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
1173{
1174 /*
1175 * typedef struct {
1176 * mach_msg_header_t Head;
1177 * NDR_record_t NDR;
1178 * kern_return_t RetCode;
1179 * } mig_reply_error_t;
1180 */
1181
1182 register mig_routine_t routine;
1183
1184 OutHeadP->msgh_bits = MACH_MSGH_BITS(MACH_MSGH_BITS_REPLY(InHeadP->msgh_bits), 0);
1185 OutHeadP->msgh_remote_port = InHeadP->msgh_reply_port;
1186 /* Minimal size: routine() will update it if different */
1187 OutHeadP->msgh_size = (mach_msg_size_t)sizeof(mig_reply_error_t);
1188 OutHeadP->msgh_local_port = MACH_PORT_NULL;
1189 OutHeadP->msgh_id = InHeadP->msgh_id + 100;
1190 OutHeadP->msgh_reserved = 0;
1191
1192 if ((InHeadP->msgh_id > 4009) || (InHeadP->msgh_id < 4000) ||
1193 ((routine = processor_set_subsystem.routine[InHeadP->msgh_id - 4000].stub_routine) == 0)) {
1194 ((mig_reply_error_t *)OutHeadP)->NDR = NDR_record;
1195 ((mig_reply_error_t *)OutHeadP)->RetCode = MIG_BAD_ID;
1196 return FALSE;
1197 }
1198 (*routine) (InHeadP, OutHeadP);
1199 return TRUE;
1200}
1201
1202mig_external mig_routine_t processor_set_server_routine
1203 (mach_msg_header_t *InHeadP)
1204{
1205 register int msgh_id;
1206
1207 msgh_id = InHeadP->msgh_id - 4000;
1208
1209 if ((msgh_id > 9) || (msgh_id < 0))
1210 return 0;
1211
1212 return processor_set_subsystem.routine[msgh_id].stub_routine;
1213}
1214