1#ifndef _processor_user_
2#define _processor_user_
3
4/* Module processor */
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#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS_CSTRING_ATTR
29#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS_CSTRING_COUNTEDBY_ATTR(C) __unsafe_indexable
30#endif
31 extern int mig_strncpy_zerofill(char * dest, const char * src, int len) __attribute__((weak_import));
32#ifdef __cplusplus
33}
34#endif
35#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
36#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
37#endif /* __has_include */
38
39/* END MIG_STRNCPY_ZEROFILL CODE */
40
41
42#ifdef AUTOTEST
43#ifndef FUNCTION_PTR_T
44#define FUNCTION_PTR_T
45typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
46typedef struct {
47 char * name;
48 function_ptr_t function;
49} function_table_entry;
50typedef function_table_entry *function_table_t;
51#endif /* FUNCTION_PTR_T */
52#endif /* AUTOTEST */
53
54#ifndef processor_MSG_COUNT
55#define processor_MSG_COUNT 6
56#endif /* processor_MSG_COUNT */
57
58#include <Availability.h>
59#include <mach/std_types.h>
60#include <mach/mig.h>
61#include <mach/mig.h>
62#include <mach/mach_types.h>
63
64#ifdef __BeforeMigUserHeader
65__BeforeMigUserHeader
66#endif /* __BeforeMigUserHeader */
67
68#include <sys/cdefs.h>
69__BEGIN_DECLS
70
71
72/* Routine processor_start */
73#ifdef mig_external
74mig_external
75#else
76extern
77#endif /* mig_external */
78kern_return_t processor_start
79(
80 processor_t processor
81);
82
83/* Routine processor_exit */
84#ifdef mig_external
85mig_external
86#else
87extern
88#endif /* mig_external */
89kern_return_t processor_exit
90(
91 processor_t processor
92);
93
94/* Routine processor_info */
95#ifdef mig_external
96mig_external
97#else
98extern
99#endif /* mig_external */
100kern_return_t processor_info
101(
102 processor_t processor,
103 processor_flavor_t flavor,
104 host_t *host,
105 processor_info_t processor_info_out,
106 mach_msg_type_number_t *processor_info_outCnt
107);
108
109/* Routine processor_control */
110#ifdef mig_external
111mig_external
112#else
113extern
114#endif /* mig_external */
115kern_return_t processor_control
116(
117 processor_t processor,
118 processor_info_t processor_cmd,
119 mach_msg_type_number_t processor_cmdCnt
120);
121
122/* Routine processor_assign */
123#ifdef mig_external
124mig_external
125#else
126extern
127#endif /* mig_external */
128kern_return_t processor_assign
129(
130 processor_t processor,
131 processor_set_t new_set,
132 boolean_t wait
133);
134
135/* Routine processor_get_assignment */
136#ifdef mig_external
137mig_external
138#else
139extern
140#endif /* mig_external */
141kern_return_t processor_get_assignment
142(
143 processor_t processor,
144 processor_set_name_t *assigned_set
145);
146
147__END_DECLS
148
149/********************** Caution **************************/
150/* The following data types should be used to calculate */
151/* maximum message sizes only. The actual message may be */
152/* smaller, and the position of the arguments within the */
153/* message layout may vary from what is presented here. */
154/* For example, if any of the arguments are variable- */
155/* sized, and less than the maximum is sent, the data */
156/* will be packed tight in the actual message to reduce */
157/* the presence of holes. */
158/********************** Caution **************************/
159
160/* typedefs for all requests */
161
162#ifndef __Request__processor_subsystem__defined
163#define __Request__processor_subsystem__defined
164
165#ifdef __MigPackStructs
166#pragma pack(push, 4)
167#endif
168 typedef struct {
169 mach_msg_header_t Head;
170 } __Request__processor_start_t __attribute__((unused));
171#ifdef __MigPackStructs
172#pragma pack(pop)
173#endif
174
175#ifdef __MigPackStructs
176#pragma pack(push, 4)
177#endif
178 typedef struct {
179 mach_msg_header_t Head;
180 } __Request__processor_exit_t __attribute__((unused));
181#ifdef __MigPackStructs
182#pragma pack(pop)
183#endif
184
185#ifdef __MigPackStructs
186#pragma pack(push, 4)
187#endif
188 typedef struct {
189 mach_msg_header_t Head;
190 NDR_record_t NDR;
191 processor_flavor_t flavor;
192 mach_msg_type_number_t processor_info_outCnt;
193 } __Request__processor_info_t __attribute__((unused));
194#ifdef __MigPackStructs
195#pragma pack(pop)
196#endif
197
198#ifdef __MigPackStructs
199#pragma pack(push, 4)
200#endif
201 typedef struct {
202 mach_msg_header_t Head;
203 NDR_record_t NDR;
204 mach_msg_type_number_t processor_cmdCnt;
205 integer_t processor_cmd[20];
206 } __Request__processor_control_t __attribute__((unused));
207#ifdef __MigPackStructs
208#pragma pack(pop)
209#endif
210
211#ifdef __MigPackStructs
212#pragma pack(push, 4)
213#endif
214 typedef struct {
215 mach_msg_header_t Head;
216 /* start of the kernel processed data */
217 mach_msg_body_t msgh_body;
218 mach_msg_port_descriptor_t new_set;
219 /* end of the kernel processed data */
220 NDR_record_t NDR;
221 boolean_t wait;
222 } __Request__processor_assign_t __attribute__((unused));
223#ifdef __MigPackStructs
224#pragma pack(pop)
225#endif
226
227#ifdef __MigPackStructs
228#pragma pack(push, 4)
229#endif
230 typedef struct {
231 mach_msg_header_t Head;
232 } __Request__processor_get_assignment_t __attribute__((unused));
233#ifdef __MigPackStructs
234#pragma pack(pop)
235#endif
236#endif /* !__Request__processor_subsystem__defined */
237
238/* union of all requests */
239
240#ifndef __RequestUnion__processor_subsystem__defined
241#define __RequestUnion__processor_subsystem__defined
242union __RequestUnion__processor_subsystem {
243 __Request__processor_start_t Request_processor_start;
244 __Request__processor_exit_t Request_processor_exit;
245 __Request__processor_info_t Request_processor_info;
246 __Request__processor_control_t Request_processor_control;
247 __Request__processor_assign_t Request_processor_assign;
248 __Request__processor_get_assignment_t Request_processor_get_assignment;
249};
250#endif /* !__RequestUnion__processor_subsystem__defined */
251/* typedefs for all replies */
252
253#ifndef __Reply__processor_subsystem__defined
254#define __Reply__processor_subsystem__defined
255
256#ifdef __MigPackStructs
257#pragma pack(push, 4)
258#endif
259 typedef struct {
260 mach_msg_header_t Head;
261 NDR_record_t NDR;
262 kern_return_t RetCode;
263 } __Reply__processor_start_t __attribute__((unused));
264#ifdef __MigPackStructs
265#pragma pack(pop)
266#endif
267
268#ifdef __MigPackStructs
269#pragma pack(push, 4)
270#endif
271 typedef struct {
272 mach_msg_header_t Head;
273 NDR_record_t NDR;
274 kern_return_t RetCode;
275 } __Reply__processor_exit_t __attribute__((unused));
276#ifdef __MigPackStructs
277#pragma pack(pop)
278#endif
279
280#ifdef __MigPackStructs
281#pragma pack(push, 4)
282#endif
283 typedef struct {
284 mach_msg_header_t Head;
285 /* start of the kernel processed data */
286 mach_msg_body_t msgh_body;
287 mach_msg_port_descriptor_t host;
288 /* end of the kernel processed data */
289 NDR_record_t NDR;
290 mach_msg_type_number_t processor_info_outCnt;
291 integer_t processor_info_out[20];
292 } __Reply__processor_info_t __attribute__((unused));
293#ifdef __MigPackStructs
294#pragma pack(pop)
295#endif
296
297#ifdef __MigPackStructs
298#pragma pack(push, 4)
299#endif
300 typedef struct {
301 mach_msg_header_t Head;
302 NDR_record_t NDR;
303 kern_return_t RetCode;
304 } __Reply__processor_control_t __attribute__((unused));
305#ifdef __MigPackStructs
306#pragma pack(pop)
307#endif
308
309#ifdef __MigPackStructs
310#pragma pack(push, 4)
311#endif
312 typedef struct {
313 mach_msg_header_t Head;
314 NDR_record_t NDR;
315 kern_return_t RetCode;
316 } __Reply__processor_assign_t __attribute__((unused));
317#ifdef __MigPackStructs
318#pragma pack(pop)
319#endif
320
321#ifdef __MigPackStructs
322#pragma pack(push, 4)
323#endif
324 typedef struct {
325 mach_msg_header_t Head;
326 /* start of the kernel processed data */
327 mach_msg_body_t msgh_body;
328 mach_msg_port_descriptor_t assigned_set;
329 /* end of the kernel processed data */
330 } __Reply__processor_get_assignment_t __attribute__((unused));
331#ifdef __MigPackStructs
332#pragma pack(pop)
333#endif
334#endif /* !__Reply__processor_subsystem__defined */
335
336/* union of all replies */
337
338#ifndef __ReplyUnion__processor_subsystem__defined
339#define __ReplyUnion__processor_subsystem__defined
340union __ReplyUnion__processor_subsystem {
341 __Reply__processor_start_t Reply_processor_start;
342 __Reply__processor_exit_t Reply_processor_exit;
343 __Reply__processor_info_t Reply_processor_info;
344 __Reply__processor_control_t Reply_processor_control;
345 __Reply__processor_assign_t Reply_processor_assign;
346 __Reply__processor_get_assignment_t Reply_processor_get_assignment;
347};
348#endif /* !__RequestUnion__processor_subsystem__defined */
349
350#ifndef subsystem_to_name_map_processor
351#define subsystem_to_name_map_processor \
352 { "processor_start", 3000 },\
353 { "processor_exit", 3001 },\
354 { "processor_info", 3002 },\
355 { "processor_control", 3003 },\
356 { "processor_assign", 3004 },\
357 { "processor_get_assignment", 3005 }
358#endif
359
360#ifdef __AfterMigUserHeader
361__AfterMigUserHeader
362#endif /* __AfterMigUserHeader */
363
364#endif /* _processor_user_ */
365