xref: /NextBSD/include/mach/clock.h (revision 33da5adc555b3bc29986eeadca03829e4ad06b1e)
1 #ifndef	_clock_user_
2 #define	_clock_user_
3 
4 /* Module clock */
5 
6 #include <sys/cdefs.h>
7 #include <sys/types.h>
8 #ifdef _KERNEL
9 #include <sys/mach/ndr.h>
10 #include <sys/mach/kern_return.h>
11 #include <sys/mach/notify.h>
12 #include <sys/mach/mach_types.h>
13 #include <sys/mach/message.h>
14 #include <sys/mach/mig_errors.h>
15 #else /* !_KERNEL */
16 #include <string.h>
17 #include <mach/ndr.h>
18 #include <mach/boolean.h>
19 #include <mach/kern_return.h>
20 #include <mach/notify.h>
21 #include <mach/mach_types.h>
22 #include <mach/message.h>
23 #include <mach/mig_errors.h>
24 #endif /*_KERNEL */
25 
26 #ifdef AUTOTEST
27 #ifndef FUNCTION_PTR_T
28 #define FUNCTION_PTR_T
29 typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
30 typedef struct {
31         char            *name;
32         function_ptr_t  function;
33 } function_table_entry;
34 typedef function_table_entry   *function_table_t;
35 #endif /* FUNCTION_PTR_T */
36 #endif /* AUTOTEST */
37 
38 #ifndef	clock_MSG_COUNT
39 #define	clock_MSG_COUNT	3
40 #endif	/* clock_MSG_COUNT */
41 
42 #include <sys/mach/std_types.h>
43 #include <sys/mach/mig.h>
44 #include <sys/mach/thread_status.h>
45 #include <sys/mach/mig.h>
46 #include <sys/mach/mach_types.h>
47 #include <sys/mach/mach_types.h>
48 
49 #ifdef __BeforeMigUserHeader
50 __BeforeMigUserHeader
51 #endif /* __BeforeMigUserHeader */
52 
53 #include <sys/cdefs.h>
54 __BEGIN_DECLS
55 
56 
57 /* Routine clock_get_time */
58 #ifdef	mig_external
59 mig_external
60 #else
61 extern
62 #endif	/* mig_external */
clock_get_time(clock_serv,cur_time)63 kern_return_t clock_get_time
64 #if	defined(LINTLIBRARY)
65     (clock_serv, cur_time)
66 	clock_serv_t clock_serv;
67 	mach_timespec_t *cur_time;
68 { return clock_get_time(clock_serv, cur_time); }
69 #else
70 (
71 	clock_serv_t clock_serv,
72 	mach_timespec_t *cur_time
73 );
74 #endif	/* defined(LINTLIBRARY) */
75 
76 /* Routine clock_get_attributes */
77 #ifdef	mig_external
78 mig_external
79 #else
80 extern
81 #endif	/* mig_external */
clock_get_attributes(clock_serv,flavor,clock_attr,clock_attrCnt)82 kern_return_t clock_get_attributes
83 #if	defined(LINTLIBRARY)
84     (clock_serv, flavor, clock_attr, clock_attrCnt)
85 	clock_serv_t clock_serv;
86 	clock_flavor_t flavor;
87 	clock_attr_t clock_attr;
88 	mach_msg_type_number_t *clock_attrCnt;
89 { return clock_get_attributes(clock_serv, flavor, clock_attr, clock_attrCnt); }
90 #else
91 (
92 	clock_serv_t clock_serv,
93 	clock_flavor_t flavor,
94 	clock_attr_t clock_attr,
95 	mach_msg_type_number_t *clock_attrCnt
96 );
97 #endif	/* defined(LINTLIBRARY) */
98 
99 /* Routine clock_alarm */
100 #ifdef	mig_external
101 mig_external
102 #else
103 extern
104 #endif	/* mig_external */
clock_alarm(clock_serv,alarm_type,alarm_time,alarm_port)105 kern_return_t clock_alarm
106 #if	defined(LINTLIBRARY)
107     (clock_serv, alarm_type, alarm_time, alarm_port)
108 	clock_serv_t clock_serv;
109 	alarm_type_t alarm_type;
110 	mach_timespec_t alarm_time;
111 	clock_reply_t alarm_port;
112 { return clock_alarm(clock_serv, alarm_type, alarm_time, alarm_port); }
113 #else
114 (
115 	clock_serv_t clock_serv,
116 	alarm_type_t alarm_type,
117 	mach_timespec_t alarm_time,
118 	clock_reply_t alarm_port
119 );
120 #endif	/* defined(LINTLIBRARY) */
121 
122 __END_DECLS
123 
124 /********************** Caution **************************/
125 /* The following data types should be used to calculate  */
126 /* maximum message sizes only. The actual message may be */
127 /* smaller, and the position of the arguments within the */
128 /* message layout may vary from what is presented here.  */
129 /* For example, if any of the arguments are variable-    */
130 /* sized, and less than the maximum is sent, the data    */
131 /* will be packed tight in the actual message to reduce  */
132 /* the presence of holes.                                */
133 /********************** Caution **************************/
134 
135 /* typedefs for all requests */
136 
137 #ifndef __Request__clock_subsystem__defined
138 #define __Request__clock_subsystem__defined
139 
140 #ifdef  __MigPackStructs
141 #pragma pack(4)
142 #endif
143 	typedef struct {
144 		mach_msg_header_t Head;
145 		/* start of the kernel processed data */
146 		mach_msg_body_t msgh_body;
147 		/* end of the kernel processed data */
148 	} __Request__clock_get_time_t;
149 #ifdef  __MigPackStructs
150 #pragma pack()
151 #endif
152 
153 #ifdef  __MigPackStructs
154 #pragma pack(4)
155 #endif
156 	typedef struct {
157 		mach_msg_header_t Head;
158 		/* start of the kernel processed data */
159 		mach_msg_body_t msgh_body;
160 		/* end of the kernel processed data */
161 		NDR_record_t NDR;
162 		clock_flavor_t flavor;
163 		mach_msg_type_number_t clock_attrCnt;
164 	} __Request__clock_get_attributes_t;
165 #ifdef  __MigPackStructs
166 #pragma pack()
167 #endif
168 
169 #ifdef  __MigPackStructs
170 #pragma pack(4)
171 #endif
172 	typedef struct {
173 		mach_msg_header_t Head;
174 		/* start of the kernel processed data */
175 		mach_msg_body_t msgh_body;
176 		mach_msg_port_descriptor_t alarm_port;
177 		/* end of the kernel processed data */
178 		NDR_record_t NDR;
179 		alarm_type_t alarm_type;
180 		mach_timespec_t alarm_time;
181 	} __Request__clock_alarm_t;
182 #ifdef  __MigPackStructs
183 #pragma pack()
184 #endif
185 #endif /* !__Request__clock_subsystem__defined */
186 
187 /* union of all requests */
188 
189 #ifndef __RequestUnion__clock_subsystem__defined
190 #define __RequestUnion__clock_subsystem__defined
191 union __RequestUnion__clock_subsystem {
192 	__Request__clock_get_time_t Request_clock_get_time;
193 	__Request__clock_get_attributes_t Request_clock_get_attributes;
194 	__Request__clock_alarm_t Request_clock_alarm;
195 };
196 #endif /* !__RequestUnion__clock_subsystem__defined */
197 /* typedefs for all replies */
198 
199 #ifndef __Reply__clock_subsystem__defined
200 #define __Reply__clock_subsystem__defined
201 
202 #ifdef  __MigPackStructs
203 #pragma pack(4)
204 #endif
205 	typedef struct {
206 		mach_msg_header_t Head;
207 		NDR_record_t NDR;
208 		kern_return_t RetCode;
209 		mach_timespec_t cur_time;
210 	} __Reply__clock_get_time_t;
211 #ifdef  __MigPackStructs
212 #pragma pack()
213 #endif
214 
215 #ifdef  __MigPackStructs
216 #pragma pack(4)
217 #endif
218 	typedef struct {
219 		mach_msg_header_t Head;
220 		NDR_record_t NDR;
221 		kern_return_t RetCode;
222 		mach_msg_type_number_t clock_attrCnt;
223 		int clock_attr[1];
224 	} __Reply__clock_get_attributes_t;
225 #ifdef  __MigPackStructs
226 #pragma pack()
227 #endif
228 
229 #ifdef  __MigPackStructs
230 #pragma pack(4)
231 #endif
232 	typedef struct {
233 		mach_msg_header_t Head;
234 		NDR_record_t NDR;
235 		kern_return_t RetCode;
236 	} __Reply__clock_alarm_t;
237 #ifdef  __MigPackStructs
238 #pragma pack()
239 #endif
240 #endif /* !__Reply__clock_subsystem__defined */
241 
242 /* union of all replies */
243 
244 #ifndef __ReplyUnion__clock_subsystem__defined
245 #define __ReplyUnion__clock_subsystem__defined
246 union __ReplyUnion__clock_subsystem {
247 	__Reply__clock_get_time_t Reply_clock_get_time;
248 	__Reply__clock_get_attributes_t Reply_clock_get_attributes;
249 	__Reply__clock_alarm_t Reply_clock_alarm;
250 };
251 #endif /* !__RequestUnion__clock_subsystem__defined */
252 
253 #ifndef subsystem_to_name_map_clock
254 #define subsystem_to_name_map_clock \
255     { "clock_get_time", 1000 },\
256     { "clock_get_attributes", 1001 },\
257     { "clock_alarm", 1002 }
258 #endif
259 
260 #ifdef __AfterMigUserHeader
261 __AfterMigUserHeader
262 #endif /* __AfterMigUserHeader */
263 
264 #endif	 /* _clock_user_ */
265