master
  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_ */