1#ifndef _clock_priv_server_
2#define _clock_priv_server_
3
4/* Module clock_priv */
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 extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
29#ifdef __cplusplus
30}
31#endif
32#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
33#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
34#endif /* __has_include */
35
36/* END MIG_STRNCPY_ZEROFILL CODE */
37
38
39#ifdef AUTOTEST
40#ifndef FUNCTION_PTR_T
41#define FUNCTION_PTR_T
42typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
43typedef struct {
44 char *name;
45 function_ptr_t function;
46} function_table_entry;
47typedef function_table_entry *function_table_t;
48#endif /* FUNCTION_PTR_T */
49#endif /* AUTOTEST */
50
51#ifndef clock_priv_MSG_COUNT
52#define clock_priv_MSG_COUNT 2
53#endif /* clock_priv_MSG_COUNT */
54
55#include <mach/std_types.h>
56#include <mach/mig.h>
57#include <ipc/ipc_voucher.h>
58#include <kern/ipc_kobject.h>
59#include <kern/ipc_tt.h>
60#include <kern/ipc_host.h>
61#include <kern/ipc_sync.h>
62#include <kern/ledger.h>
63#include <kern/processor.h>
64#include <kern/sync_lock.h>
65#include <kern/sync_sema.h>
66#include <vm/memory_object.h>
67#include <vm/vm_map.h>
68#include <kern/ipc_mig.h>
69#include <mach/mig.h>
70#include <mach/mach_types.h>
71#include <mach/mach_types.h>
72
73#ifdef __BeforeMigServerHeader
74__BeforeMigServerHeader
75#endif /* __BeforeMigServerHeader */
76
77
78/* Routine clock_set_time */
79#ifdef mig_external
80mig_external
81#else
82extern
83#endif /* mig_external */
84kern_return_t clock_set_time
85(
86 clock_ctrl_t clock_ctrl,
87 mach_timespec_t new_time
88);
89
90/* Routine clock_set_attributes */
91#ifdef mig_external
92mig_external
93#else
94extern
95#endif /* mig_external */
96kern_return_t clock_set_attributes
97(
98 clock_ctrl_t clock_ctrl,
99 clock_flavor_t flavor,
100 clock_attr_t clock_attr,
101 mach_msg_type_number_t clock_attrCnt
102);
103
104#ifdef mig_external
105mig_external
106#else
107extern
108#endif /* mig_external */
109boolean_t clock_priv_server(
110 mach_msg_header_t *InHeadP,
111 mach_msg_header_t *OutHeadP);
112
113#ifdef mig_external
114mig_external
115#else
116extern
117#endif /* mig_external */
118mig_routine_t clock_priv_server_routine(
119 mach_msg_header_t *InHeadP);
120
121
122/* Description of this subsystem, for use in direct RPC */
123extern const struct clock_priv_subsystem {
124 mig_server_routine_t server; /* Server routine */
125 mach_msg_id_t start; /* Min routine number */
126 mach_msg_id_t end; /* Max routine number + 1 */
127 unsigned int maxsize; /* Max msg size */
128 vm_address_t reserved; /* Reserved */
129 struct routine_descriptor /*Array of routine descriptors */
130 routine[2];
131} clock_priv_subsystem;
132
133/* typedefs for all requests */
134
135#ifndef __Request__clock_priv_subsystem__defined
136#define __Request__clock_priv_subsystem__defined
137
138#ifdef __MigPackStructs
139#pragma pack(4)
140#endif
141 typedef struct {
142 mach_msg_header_t Head;
143 NDR_record_t NDR;
144 mach_timespec_t new_time;
145 } __Request__clock_set_time_t __attribute__((unused));
146#ifdef __MigPackStructs
147#pragma pack()
148#endif
149
150#ifdef __MigPackStructs
151#pragma pack(4)
152#endif
153 typedef struct {
154 mach_msg_header_t Head;
155 NDR_record_t NDR;
156 clock_flavor_t flavor;
157 mach_msg_type_number_t clock_attrCnt;
158 int clock_attr[1];
159 } __Request__clock_set_attributes_t __attribute__((unused));
160#ifdef __MigPackStructs
161#pragma pack()
162#endif
163#endif /* !__Request__clock_priv_subsystem__defined */
164
165
166/* union of all requests */
167
168#ifndef __RequestUnion__clock_priv_subsystem__defined
169#define __RequestUnion__clock_priv_subsystem__defined
170union __RequestUnion__clock_priv_subsystem {
171 __Request__clock_set_time_t Request_clock_set_time;
172 __Request__clock_set_attributes_t Request_clock_set_attributes;
173};
174#endif /* __RequestUnion__clock_priv_subsystem__defined */
175/* typedefs for all replies */
176
177#ifndef __Reply__clock_priv_subsystem__defined
178#define __Reply__clock_priv_subsystem__defined
179
180#ifdef __MigPackStructs
181#pragma pack(4)
182#endif
183 typedef struct {
184 mach_msg_header_t Head;
185 NDR_record_t NDR;
186 kern_return_t RetCode;
187 } __Reply__clock_set_time_t __attribute__((unused));
188#ifdef __MigPackStructs
189#pragma pack()
190#endif
191
192#ifdef __MigPackStructs
193#pragma pack(4)
194#endif
195 typedef struct {
196 mach_msg_header_t Head;
197 NDR_record_t NDR;
198 kern_return_t RetCode;
199 } __Reply__clock_set_attributes_t __attribute__((unused));
200#ifdef __MigPackStructs
201#pragma pack()
202#endif
203#endif /* !__Reply__clock_priv_subsystem__defined */
204
205
206/* union of all replies */
207
208#ifndef __ReplyUnion__clock_priv_subsystem__defined
209#define __ReplyUnion__clock_priv_subsystem__defined
210union __ReplyUnion__clock_priv_subsystem {
211 __Reply__clock_set_time_t Reply_clock_set_time;
212 __Reply__clock_set_attributes_t Reply_clock_set_attributes;
213};
214#endif /* __RequestUnion__clock_priv_subsystem__defined */
215
216#ifndef subsystem_to_name_map_clock_priv
217#define subsystem_to_name_map_clock_priv \
218 { "clock_set_time", 1200 },\
219 { "clock_set_attributes", 1201 }
220#endif
221
222#ifdef __AfterMigServerHeader
223__AfterMigServerHeader
224#endif /* __AfterMigServerHeader */
225
226#endif /* _clock_priv_server_ */
227