19 |
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
20 |
02111-1307, USA. */ |
02111-1307, USA. */ |
21 |
|
|
22 |
|
#include <string.h> |
23 |
|
#include <stddef.h> |
24 |
|
|
25 |
/* This must be included before anything else. */ |
/* This must be included before anything else. */ |
26 |
#include "environment.h" |
#include "environment.h" |
27 |
|
|
31 |
|
|
32 |
/* Test the various ways to get a pointer to the kernel interface |
/* Test the various ways to get a pointer to the kernel interface |
33 |
page, and the magic bytes at the beginning. */ |
page, and the magic bytes at the beginning. */ |
34 |
void |
_L4_kip_t |
35 |
test_magic () |
test_magic () |
36 |
{ |
{ |
37 |
/* This is our atom. We can't check it except by looking at the |
/* This is our atom. We can't check it except by looking at the |
101 |
"kip_l4 == 0x%x != 0x%x\n", kernel_id_l4, kernel_id); |
"kip_l4 == 0x%x != 0x%x\n", kernel_id_l4, kernel_id); |
102 |
} |
} |
103 |
#endif |
#endif |
104 |
|
|
105 |
|
return kip; |
106 |
|
} |
107 |
|
|
108 |
|
|
109 |
|
/* Test the various ways to get info about the API version, API flags |
110 |
|
and Kernel Id. */ |
111 |
|
void |
112 |
|
test_api_and_kernel_id () |
113 |
|
{ |
114 |
|
_L4_api_version_t api_version; |
115 |
|
_L4_api_flags_t api_flags; |
116 |
|
_L4_kernel_id_t kernel_id; |
117 |
|
_L4_kip_t kip = _L4_kernel_interface (&api_version, &api_flags, &kernel_id); |
118 |
|
|
119 |
|
check_nr ("[intern]", "_L4_api_version", _L4_api_version (kip), api_version); |
120 |
|
check_nr ("[intern]", "_L4_api_flags", _L4_api_flags (kip), api_flags); |
121 |
|
check_nr ("[intern]", "_L4_kernel_id", _L4_kernel_id (kip), kernel_id); |
122 |
|
|
123 |
|
check_nr ("[intern]", "_L4_API_VERSION_2", _L4_API_VERSION_2, 0x02); |
124 |
|
check_nr ("[intern]", "_L4_API_VERSION_X0", _L4_API_VERSION_X0, 0x83); |
125 |
|
check_nr ("[intern]", "_L4_API_SUBVERSION_X0", _L4_API_SUBVERSION_X0, 0x80); |
126 |
|
check_nr ("[intern]", "_L4_API_VERSION_X1", _L4_API_VERSION_X1, 0x83); |
127 |
|
check_nr ("[intern]", "_L4_API_SUBVERSION_X1", _L4_API_SUBVERSION_X1, 0x81); |
128 |
|
check_nr ("[intern]", "_L4_API_VERSION_X2", _L4_API_VERSION_X2, 0x84); |
129 |
|
check_nr ("[intern]", "_L4_API_VERSION_4", _L4_API_VERSION_4, 0x04); |
130 |
|
|
131 |
|
{ |
132 |
|
_L4_word_t api_version_version_good = _L4_API_VERSION_X2; |
133 |
|
_L4_word_t api_version_subversion_good = 0x05; /* rev */ |
134 |
|
__L4_api_version_t api_version_s = { .raw = api_version }; |
135 |
|
|
136 |
|
check_nr ("[intern]", "API version", |
137 |
|
api_version_s.version, api_version_version_good); |
138 |
|
check_nr ("[intern]", "API subversion", |
139 |
|
api_version_s.subversion, api_version_subversion_good); |
140 |
|
} |
141 |
|
|
142 |
|
check_nr ("[intern]", "_L4_API_FLAGS_WORDSIZE_32", |
143 |
|
_L4_API_FLAGS_WORDSIZE_32, 0x00); |
144 |
|
check_nr ("[intern]", "_L4_API_FLAGS_WORDSIZE_64", |
145 |
|
_L4_API_FLAGS_WORDSIZE_64, 0x01); |
146 |
|
|
147 |
|
{ |
148 |
|
_L4_word_t api_flags_endian = 0x00; /* Little Endian */ |
149 |
|
_L4_word_t api_flags_wordsize = 0x00; /* 32-bit */ |
150 |
|
__L4_api_flags_t api_flags_s = { .raw = api_flags }; |
151 |
|
|
152 |
|
check_nr ("[intern]", "API flags endianess", |
153 |
|
api_flags_s.endian, api_flags_endian); |
154 |
|
check_nr ("[intern]", "API flags wordsize", |
155 |
|
api_flags_s.wordsize, api_flags_wordsize); |
156 |
|
} |
157 |
|
|
158 |
|
check_nr ("[intern]", "_L4_KERNEL_ID_L4_486", |
159 |
|
_L4_KERNEL_ID_L4_486, 0x00); |
160 |
|
check_nr ("[intern]", "_L4_KERNEL_SUBID_L4_486", |
161 |
|
_L4_KERNEL_SUBID_L4_486, 0x01); |
162 |
|
check_nr ("[intern]", "_L4_KERNEL_ID_L4_PENTIUM", |
163 |
|
_L4_KERNEL_ID_L4_PENTIUM, 0x00); |
164 |
|
check_nr ("[intern]", "_L4_KERNEL_SUBID_L4_PENTIUM", |
165 |
|
_L4_KERNEL_SUBID_L4_PENTIUM, 0x02); |
166 |
|
check_nr ("[intern]", "_L4_KERNEL_ID_L4_X86", |
167 |
|
_L4_KERNEL_ID_L4_X86, 0x00); |
168 |
|
check_nr ("[intern]", "_L4_KERNEL_SUBID_L4_X86", |
169 |
|
_L4_KERNEL_SUBID_L4_X86, 0x03); |
170 |
|
check_nr ("[intern]", "_L4_KERNEL_ID_L4_MIPS", |
171 |
|
_L4_KERNEL_ID_L4_MIPS, 0x01); |
172 |
|
check_nr ("[intern]", "_L4_KERNEL_SUBID_L4_MIPS", |
173 |
|
_L4_KERNEL_SUBID_L4_MIPS, 0x01); |
174 |
|
check_nr ("[intern]", "_L4_KERNEL_ID_L4_ALPHA", |
175 |
|
_L4_KERNEL_ID_L4_ALPHA, 0x02); |
176 |
|
check_nr ("[intern]", "_L4_KERNEL_SUBID_L4_ALPHA", |
177 |
|
_L4_KERNEL_SUBID_L4_ALPHA, 0x01); |
178 |
|
check_nr ("[intern]", "_L4_KERNEL_ID_FIASCO", |
179 |
|
_L4_KERNEL_ID_FIASCO, 0x03); |
180 |
|
check_nr ("[intern]", "_L4_KERNEL_SUBID_FIASCO", |
181 |
|
_L4_KERNEL_SUBID_FIASCO, 0x01); |
182 |
|
check_nr ("[intern]", "_L4_KERNEL_ID_L4KA_HAZELNUT", |
183 |
|
_L4_KERNEL_ID_L4KA_HAZELNUT, 0x04); |
184 |
|
check_nr ("[intern]", "_L4_KERNEL_SUBID_L4KA_HAZELNUT", |
185 |
|
_L4_KERNEL_SUBID_L4KA_HAZELNUT, 0x01); |
186 |
|
check_nr ("[intern]", "_L4_KERNEL_ID_L4KA_PISTACHIO", |
187 |
|
_L4_KERNEL_ID_L4KA_PISTACHIO, 0x04); |
188 |
|
check_nr ("[intern]", "_L4_KERNEL_SUBID_L4KA_PISTACHIO", |
189 |
|
_L4_KERNEL_SUBID_L4KA_PISTACHIO, 0x02); |
190 |
|
check_nr ("[intern]", "_L4_KERNEL_ID_L4KA_STRAWBERRY", |
191 |
|
_L4_KERNEL_ID_L4KA_STRAWBERRY, 0x04); |
192 |
|
check_nr ("[intern]", "_L4_KERNEL_SUBID_L4KA_STRAWBERRY", |
193 |
|
_L4_KERNEL_SUBID_L4KA_STRAWBERRY, 0x03); |
194 |
|
|
195 |
|
#ifdef _L4_INTERFACE_L4 |
196 |
|
{ |
197 |
|
L4_Word_t api_version_l4; |
198 |
|
L4_Word_t api_flags_l4; |
199 |
|
L4_Word_t kernel_id_l4; |
200 |
|
|
201 |
|
(void) L4_KernelInterface (&api_version_l4, &api_flags_l4, &kernel_id_l4); |
202 |
|
|
203 |
|
check_nr ("[L4]", "L4_ApiVersion", L4_ApiVersion (), api_version_l4); |
204 |
|
check_nr ("[L4]", "L4_ApiFlags", L4_ApiFlags (), api_flags_l4); |
205 |
|
check_nr ("[L4]", "L4_KernelId", L4_KernelId (), kernel_id_l4); |
206 |
|
} |
207 |
|
|
208 |
|
check_nr ("[L4]", "L4_APIVERSION_2", |
209 |
|
L4_APIVERSION_2, _L4_API_VERSION_2); |
210 |
|
check_nr ("[L4]", "L4_APIVERSION_X0", |
211 |
|
L4_APIVERSION_X0, _L4_API_VERSION_X0); |
212 |
|
check_nr ("[L4]", "L4_APISUBVERSION_X0", |
213 |
|
L4_APISUBVERSION_X0, _L4_API_SUBVERSION_X0); |
214 |
|
check_nr ("[L4]", "L4_APIVERSION_X1", |
215 |
|
L4_APIVERSION_X1, _L4_API_VERSION_X1); |
216 |
|
check_nr ("[L4]", "L4_APISUBVERSION_X1", |
217 |
|
L4_APISUBVERSION_X1, _L4_API_SUBVERSION_X1); |
218 |
|
check_nr ("[L4]", "L4_APIVERSION_X2", |
219 |
|
L4_APIVERSION_X2, _L4_API_VERSION_X2); |
220 |
|
check_nr ("[L4]", "L4_APISUBVERSION_X2", |
221 |
|
L4_APISUBVERSION_X2, 0x82); |
222 |
|
|
223 |
|
check_nr ("[L4]", "L4_APIFLAG_32BIT", |
224 |
|
L4_APIFLAG_32BIT, _L4_API_FLAGS_WORDSIZE_32); |
225 |
|
check_nr ("[L4]", "L4_APIFLAG_64BIT", |
226 |
|
L4_APIFLAG_64BIT, _L4_API_FLAGS_WORDSIZE_64); |
227 |
|
|
228 |
|
check_nr ("[L4]", "L4_KID_L4_486", L4_KID_L4_486, 0x0001); |
229 |
|
check_nr ("[L4]", "L4_KID_L4_PENTIUM", L4_KID_L4_PENTIUM, 0x0002); |
230 |
|
check_nr ("[L4]", "L4_KID_L4_X86", L4_KID_L4_X86, 0x0003); |
231 |
|
check_nr ("[L4]", "L4_KID_L4_MIPS", L4_KID_L4_MIPS, 0x0101); |
232 |
|
check_nr ("[L4]", "L4_KID_L4_ALPHA", L4_KID_L4_ALPHA, 0x0201); |
233 |
|
check_nr ("[L4]", "L4_KID_FIASCO", L4_KID_FIASCO, 0x0301); |
234 |
|
check_nr ("[L4]", "L4_KID_L4KA_HAZELNUT", L4_KID_L4KA_HAZELNUT, 0x0401); |
235 |
|
check_nr ("[L4]", "L4_KID_L4KA_PISTACHIO", L4_KID_L4KA_PISTACHIO, 0x0402); |
236 |
|
check_nr ("[L4]", "L4_KID_L4KA_STRAWBERRY", L4_KID_L4KA_STRAWBERRY, 0x0403); |
237 |
|
#endif |
238 |
|
} |
239 |
|
|
240 |
|
|
241 |
|
/* Test the kernel generation date. */ |
242 |
|
void |
243 |
|
test_kernel_gen_date (_L4_kip_t kip) |
244 |
|
{ |
245 |
|
_L4_word_t year_ok = 2005; |
246 |
|
_L4_word_t month_ok = 1; |
247 |
|
_L4_word_t day_ok = 22; |
248 |
|
|
249 |
|
_L4_word_t year; |
250 |
|
_L4_word_t month; |
251 |
|
_L4_word_t day; |
252 |
|
|
253 |
|
_L4_kernel_gen_date (kip, &year, &month, &day); |
254 |
|
|
255 |
|
check ("[intern]", "_L4_kernel_gen_date", |
256 |
|
(year == year_ok && month == month_ok && day == day_ok), |
257 |
|
"_L4_kernel_gen_date == %d/%d/%d != %d/%d/%d", |
258 |
|
year, month, day, year_ok, month_ok, day_ok); |
259 |
|
|
260 |
|
#ifdef _L4_INTERFACE_GNU |
261 |
|
l4_kernel_gen_date (&year, &month, &day); |
262 |
|
|
263 |
|
check ("[GNU]", "l4_kernel_gen_date", |
264 |
|
(year == year_ok && month == month_ok && day == day_ok), |
265 |
|
"l4_kernel_gen_date == %d/%d/%d != %d/%d/%d", |
266 |
|
year, month, day, year_ok, month_ok, day_ok); |
267 |
|
|
268 |
|
l4_kernel_gen_date_from (kip, &year, &month, &day); |
269 |
|
|
270 |
|
check ("[GNU]", "l4_kernel_gen_date_from", |
271 |
|
(year == year_ok && month == month_ok && day == day_ok), |
272 |
|
"l4_kernel_gen_date_from == %d/%d/%d != %d/%d/%d", |
273 |
|
year, month, day, year_ok, month_ok, day_ok); |
274 |
|
#endif |
275 |
|
|
276 |
|
#ifdef _L4_INTERFACE_L4 |
277 |
|
L4_KernelGenDate (kip, &year, &month, &day); |
278 |
|
|
279 |
|
check ("[L4]", "L4_KernelGenDate", |
280 |
|
(year == year_ok && month == month_ok && day == day_ok), |
281 |
|
"L4_KernelGenDate == %d/%d/%d != %d/%d/%d", |
282 |
|
year, month, day, year_ok, month_ok, day_ok); |
283 |
|
#endif |
284 |
|
} |
285 |
|
|
286 |
|
|
287 |
|
/* Test the kernel version. */ |
288 |
|
void |
289 |
|
test_kernel_version (_L4_kip_t kip) |
290 |
|
{ |
291 |
|
_L4_word_t version_ok = 0; |
292 |
|
_L4_word_t subversion_ok = 4; |
293 |
|
_L4_word_t subsubversion_ok = 0; |
294 |
|
_L4_word_t full_version_ok = (version_ok << 24) |
295 |
|
| (subversion_ok << 16) | subsubversion_ok; |
296 |
|
|
297 |
|
_L4_word_t version; |
298 |
|
_L4_word_t subversion; |
299 |
|
_L4_word_t subsubversion; |
300 |
|
|
301 |
|
_L4_kernel_version (kip, &version, &subversion, &subsubversion); |
302 |
|
|
303 |
|
check ("[intern]", "_L4_kernel_version", |
304 |
|
(version == version_ok && subversion == subversion_ok |
305 |
|
&& subsubversion == subsubversion_ok), |
306 |
|
"_L4_kernel_version == %d.%d.%d != %d.%d.%d", |
307 |
|
version, subversion, subsubversion, |
308 |
|
version_ok, subversion_ok, subsubversion_ok); |
309 |
|
|
310 |
|
#ifdef _L4_INTERFACE_GNU |
311 |
|
l4_kernel_version (&version, &subversion, &subsubversion); |
312 |
|
|
313 |
|
check ("[GNU]", "l4_kernel_version", |
314 |
|
(version == version_ok && subversion == subversion_ok |
315 |
|
&& subsubversion == subsubversion_ok), |
316 |
|
"l4_kernel_version == %d.%d.%d != %d.%d.%d", |
317 |
|
version, subversion, subsubversion, version_ok, |
318 |
|
subversion_ok, subsubversion_ok); |
319 |
|
|
320 |
|
l4_kernel_version_from (kip, &version, &subversion, &subsubversion); |
321 |
|
|
322 |
|
check ("[GNU]", "l4_kernel_version_from", |
323 |
|
(version == version_ok && subversion == subversion_ok |
324 |
|
&& subsubversion == subsubversion_ok), |
325 |
|
"l4_kernel_version_from == %d.%d.%d != %d.%d.%d", |
326 |
|
version, subversion, subsubversion, version_ok, |
327 |
|
subversion_ok, subsubversion_ok); |
328 |
|
#endif |
329 |
|
|
330 |
|
#ifdef _L4_INTERFACE_L4 |
331 |
|
version = L4_KernelVersion (kip); |
332 |
|
|
333 |
|
check ("[L4]", "L4_KernelVersion", |
334 |
|
(version == full_version_ok), |
335 |
|
"L4_KernelVersion == 0x%x != 0x%x", version, full_version_ok); |
336 |
|
#endif |
337 |
|
} |
338 |
|
|
339 |
|
|
340 |
|
/* Test the kernel supplier. */ |
341 |
|
void |
342 |
|
test_kernel_supplier (_L4_kip_t kip) |
343 |
|
{ |
344 |
|
const char supplier_ok[] = _L4_KERNEL_SUPPLIER_UKA; |
345 |
|
char *supplier; |
346 |
|
|
347 |
|
supplier = (char[]) _L4_KERNEL_SUPPLIER_GMD; |
348 |
|
check ("[intern]", "_L4_KERNEL_SUPPLIER_GMD", |
349 |
|
(!strncmp (supplier, "GMD ", 4)), |
350 |
|
"_L4_KERNEL_SUPPLIER_GMD == '%.4s' != 'GMD '", supplier); |
351 |
|
supplier = (char[]) _L4_KERNEL_SUPPLIER_IBM; |
352 |
|
check ("[intern]", "_L4_KERNEL_SUPPLIER_IBM", |
353 |
|
(!strncmp (supplier, "IBM ", 4)), |
354 |
|
"_L4_KERNEL_SUPPLIER_IBM == '%.4s' != 'IBM '", supplier); |
355 |
|
supplier = (char[]) _L4_KERNEL_SUPPLIER_UNSW; |
356 |
|
check ("[intern]", "_L4_KERNEL_SUPPLIER_UNSW", |
357 |
|
(!strncmp (supplier, "UNSW", 4)), |
358 |
|
"_L4_KERNEL_SUPPLIER_UNSW == '%.4s' != 'UNSW'", supplier); |
359 |
|
supplier = (char[]) _L4_KERNEL_SUPPLIER_TUD; |
360 |
|
check ("[intern]", "_L4_KERNEL_SUPPLIER_TUD", |
361 |
|
(!strncmp (supplier, "TUD ", 4)), |
362 |
|
"_L4_KERNEL_SUPPLIER_TUD == '%.4s' != 'TUD '", supplier); |
363 |
|
supplier = (char[]) _L4_KERNEL_SUPPLIER_UKA; |
364 |
|
check ("[intern]", "_L4_KERNEL_SUPPLIER_UKA", |
365 |
|
(!strncmp (supplier, "UKa ", 4)), |
366 |
|
"_L4_KERNEL_SUPPLIER_UKA == '%.4s' != 'UKa '", supplier); |
367 |
|
|
368 |
|
supplier = _L4_kernel_supplier (kip); |
369 |
|
check ("[intern]", "_L4_kernel_supplier", |
370 |
|
(!strncmp (supplier, supplier_ok, sizeof (supplier_ok))), |
371 |
|
"_L4_kernel_supplier == '%.4s' != '%.4s'", supplier, supplier_ok); |
372 |
|
|
373 |
|
#ifdef _L4_INTERFACE_GNU |
374 |
|
check ("[GNU]", "L4_KERNEL_SUPPLIER_GMD", |
375 |
|
(!strncmp (((char[]) L4_KERNEL_SUPPLIER_GMD), |
376 |
|
((char[]) _L4_KERNEL_SUPPLIER_GMD), 4)), |
377 |
|
"L4_KERNEL_SUPPLIER_GMD == '%.4s' != '%.4s'", |
378 |
|
(char[]) L4_KERNEL_SUPPLIER_GMD, (char[]) _L4_KERNEL_SUPPLIER_GMD); |
379 |
|
check ("[GNU]", "L4_KERNEL_SUPPLIER_IBM", |
380 |
|
(!strncmp (((char[]) L4_KERNEL_SUPPLIER_IBM), |
381 |
|
((char[]) _L4_KERNEL_SUPPLIER_IBM), 4)), |
382 |
|
"L4_KERNEL_SUPPLIER_IBM == '%.4s' != '%.4s'", |
383 |
|
(char[]) L4_KERNEL_SUPPLIER_IBM, (char[]) _L4_KERNEL_SUPPLIER_IBM); |
384 |
|
check ("[GNU]", "L4_KERNEL_SUPPLIER_UNSW", |
385 |
|
(!strncmp (((char[]) L4_KERNEL_SUPPLIER_UNSW), |
386 |
|
((char[]) _L4_KERNEL_SUPPLIER_UNSW), 4)), |
387 |
|
"L4_KERNEL_SUPPLIER_UNSW == '%.4s' != '%.4s'", |
388 |
|
(char[]) L4_KERNEL_SUPPLIER_UNSW, (char[]) _L4_KERNEL_SUPPLIER_UNSW); |
389 |
|
check ("[GNU]", "L4_KERNEL_SUPPLIER_TUD", |
390 |
|
(!strncmp (((char[]) L4_KERNEL_SUPPLIER_TUD), |
391 |
|
((char[]) _L4_KERNEL_SUPPLIER_TUD), 4)), |
392 |
|
"L4_KERNEL_SUPPLIER_TUD == '%.4s' != '%.4s'", |
393 |
|
(char[]) L4_KERNEL_SUPPLIER_TUD, (char[]) _L4_KERNEL_SUPPLIER_TUD); |
394 |
|
check ("[GNU]", "L4_KERNEL_SUPPLIER_UKA", |
395 |
|
(!strncmp (((char[]) L4_KERNEL_SUPPLIER_UKA), |
396 |
|
((char[]) _L4_KERNEL_SUPPLIER_UKA), 4)), |
397 |
|
"L4_KERNEL_SUPPLIER_UKA == '%.4s' != '%.4s'", |
398 |
|
(char[]) L4_KERNEL_SUPPLIER_UKA, (char[]) _L4_KERNEL_SUPPLIER_UKA); |
399 |
|
|
400 |
|
supplier = l4_kernel_supplier_from (kip); |
401 |
|
check ("[GNU]", "l4_kernel_supplier_from", |
402 |
|
(!strncmp (supplier, supplier_ok, sizeof (supplier_ok))), |
403 |
|
"l4_kernel_supplier_from == '%.4s' != '%.4s'", supplier, supplier_ok); |
404 |
|
|
405 |
|
supplier = l4_kernel_supplier (); |
406 |
|
check ("[GNU]", "l4_kernel_supplier", |
407 |
|
(!strncmp (supplier, supplier_ok, sizeof (supplier_ok))), |
408 |
|
"l4_kernel_supplier == '%.4s' != '%.4s'", supplier, supplier_ok); |
409 |
|
#endif |
410 |
|
|
411 |
|
|
412 |
|
#ifdef _L4_INTERFACE_L4 |
413 |
|
{ |
414 |
|
L4_Word_t supl_ok; |
415 |
|
L4_Word_t supl; |
416 |
|
|
417 |
|
supl_ok = *((unsigned int *) ((char[]) _L4_KERNEL_SUPPLIER_GMD)); |
418 |
|
check_nr ("[L4]", "L4_SUPL_GMD", L4_SUPL_GMD, supl_ok); |
419 |
|
supl_ok = *((unsigned int *) ((char[]) _L4_KERNEL_SUPPLIER_IBM)); |
420 |
|
check_nr ("[L4]", "L4_SUPL_IBM", L4_SUPL_IBM, supl_ok); |
421 |
|
supl_ok = *((unsigned int *) ((char[]) _L4_KERNEL_SUPPLIER_UNSW)); |
422 |
|
check_nr ("[L4]", "L4_SUPL_UNSW", L4_SUPL_UNSW, supl_ok); |
423 |
|
supl_ok = *((unsigned int *) ((char[]) _L4_KERNEL_SUPPLIER_TUD)); |
424 |
|
check_nr ("[L4]", "L4_SUPL_TUD", L4_SUPL_TUD, supl_ok); |
425 |
|
supl_ok = *((unsigned int *) ((char[]) _L4_KERNEL_SUPPLIER_UKA)); |
426 |
|
check_nr ("[L4]", "L4_SUPL_UKA", L4_SUPL_UKA, supl_ok); |
427 |
|
|
428 |
|
supl_ok = *((unsigned int *) ((char[]) _L4_KERNEL_SUPPLIER_UKA)); |
429 |
|
supl = L4_KernelSupplier (kip); |
430 |
|
check ("[L4]", "L4_KernelSupplier", |
431 |
|
(supl == supl_ok), |
432 |
|
"L4_KernelSupplier == 0x%x != 0x%x", supl, supl_ok); |
433 |
|
} |
434 |
|
#endif |
435 |
|
} |
436 |
|
|
437 |
|
|
438 |
|
/* Test the kernel version string. */ |
439 |
|
void |
440 |
|
test_kernel_version_string (_L4_kip_t kip) |
441 |
|
{ |
442 |
|
const char version_string_ok[] = "L4Ka::Pistachio - " |
443 |
|
"built on Jan 22 2005 02:26:14 by marcus@ulysses " |
444 |
|
"using gcc version 3.3.4 (Debian 1:3.3.4-13)"; |
445 |
|
char *version_string; |
446 |
|
|
447 |
|
version_string = _L4_kernel_version_string (kip); |
448 |
|
check ("[intern]", "_L4_kernel_version_string", |
449 |
|
(!strcmp (version_string, version_string_ok)), |
450 |
|
"_L4_kernel_version_string == '%s' != '%s'", |
451 |
|
version_string, version_string_ok); |
452 |
|
|
453 |
|
#ifdef _L4_INTERFACE_GNU |
454 |
|
version_string = l4_kernel_version_string_from (kip); |
455 |
|
check ("[GNU]", "l4_kernel_version_string_from", |
456 |
|
(!strcmp (version_string, version_string_ok)), |
457 |
|
"l4_kernel_version_string_from == '%s' != '%s'", |
458 |
|
version_string, version_string_ok); |
459 |
|
|
460 |
|
version_string = l4_kernel_version_string (); |
461 |
|
check ("[GNU]", "l4_kernel_version_string", |
462 |
|
(!strcmp (version_string, version_string_ok)), |
463 |
|
"l4_kernel_version_string == '%s' != '%s'", |
464 |
|
version_string, version_string_ok); |
465 |
|
#endif |
466 |
|
|
467 |
|
#ifdef _L4_INTERFACE_L4 |
468 |
|
version_string = L4_KernelVersionString (kip); |
469 |
|
check ("[L4]", "L4_KernelVersionString", |
470 |
|
(!strcmp (version_string, version_string_ok)), |
471 |
|
"L4_KernelVersionString == '%s' != '%s'", |
472 |
|
version_string, version_string_ok); |
473 |
|
#endif |
474 |
|
} |
475 |
|
|
476 |
|
|
477 |
|
/* Test the kernel feature list. */ |
478 |
|
void |
479 |
|
test_kernel_feature (_L4_kip_t kip) |
480 |
|
{ |
481 |
|
const char *feature_ok[] = { "smallspaces", NULL }; |
482 |
|
|
483 |
|
char *feature; |
484 |
|
_L4_word_t num = 0; |
485 |
|
int last_seen = 0; |
486 |
|
|
487 |
|
do |
488 |
|
{ |
489 |
|
feature = _L4_feature (kip, num); |
490 |
|
|
491 |
|
if (!last_seen && feature_ok[num] && feature) |
492 |
|
check ("[intern]", "_L4_feature", |
493 |
|
(!strcmp (feature, feature_ok[num])), |
494 |
|
"_L4_feature (kip, %i) == '%s' != '%s'", |
495 |
|
num, feature, feature_ok[num]); |
496 |
|
else if (feature) |
497 |
|
{ |
498 |
|
check ("[intern]", "_L4_feature", |
499 |
|
(feature == NULL), |
500 |
|
"_L4_feature (kip, %i) == '%s' != NULL", |
501 |
|
num, feature); |
502 |
|
last_seen = 1; |
503 |
|
} |
504 |
|
|
505 |
|
#ifdef _L4_INTERFACE_GNU |
506 |
|
check ("[GNU]", "l4_feature_from", |
507 |
|
(l4_feature_from (kip, num) == feature), |
508 |
|
"l4_feature_from (kip, %i) == %p != %p", |
509 |
|
num, l4_feature_from (kip, num), feature); |
510 |
|
check ("[GNU]", "l4_feature", |
511 |
|
(l4_feature (num) == feature), |
512 |
|
"l4_feature (%i) == %p != %p", |
513 |
|
num, l4_feature (num), feature); |
514 |
|
#endif |
515 |
|
|
516 |
|
#ifdef _L4_INTERFACE_L4 |
517 |
|
check ("[L4]", "L4_Feature", |
518 |
|
(L4_Feature (kip, num) == feature), |
519 |
|
"L4_Feature (kip, %i) == %p != %p", |
520 |
|
num, L4_Feature (kip, num), feature); |
521 |
|
#endif |
522 |
|
|
523 |
|
num++; |
524 |
|
} |
525 |
|
while (feature); |
526 |
|
} |
527 |
|
|
528 |
|
|
529 |
|
/* Test the processor info field. */ |
530 |
|
void |
531 |
|
test_processor_info (_L4_kip_t kip) |
532 |
|
{ |
533 |
|
_L4_word_t processors_ok = 2; |
534 |
|
_L4_word_t internal_freq_ok[] = { 2809310, 2809311 }; |
535 |
|
_L4_word_t external_freq_ok[] = { 0, 0 }; |
536 |
|
_L4_word_t proc_desc_size_ok = 16; |
537 |
|
_L4_word_t num; |
538 |
|
_L4_proc_desc_t proc_desc_prev = 0; |
539 |
|
|
540 |
|
check_nr ("[intern]", "_L4_num_processors", |
541 |
|
_L4_num_processors (kip), processors_ok); |
542 |
|
|
543 |
|
#ifdef _L4_INTERFACE_GNU |
544 |
|
check_nr ("[GNU]", "l4_num_processors_from", |
545 |
|
l4_num_processors_from (kip), processors_ok); |
546 |
|
check_nr ("[GNU]", "l4_num_processors", |
547 |
|
l4_num_processors (), processors_ok); |
548 |
|
#endif |
549 |
|
|
550 |
|
#ifdef _L4_INTERFACE_L4 |
551 |
|
check_nr ("[L4]", "L4_NumProcessors", |
552 |
|
L4_NumProcessors (kip), processors_ok); |
553 |
|
#endif |
554 |
|
|
555 |
|
check_nr ("[intern]", "processor_info.log2_size", |
556 |
|
(1 << kip->processor_info.log2_size), proc_desc_size_ok); |
557 |
|
|
558 |
|
for (num = 0; num < _L4_num_processors (kip); num++) |
559 |
|
{ |
560 |
|
_L4_proc_desc_t proc_desc; |
561 |
|
|
562 |
|
proc_desc = _L4_proc_desc (kip, num); |
563 |
|
check ("[intern]", "_L4_proc_desc (once per cpu)", |
564 |
|
(proc_desc != NULL), |
565 |
|
"_L4_proc_desc (kip, %i) == NULL != not null", num); |
566 |
|
|
567 |
|
check ("[intern]", "_L4_proc_internal_freq", |
568 |
|
(_L4_proc_internal_freq (proc_desc) == internal_freq_ok[num]), |
569 |
|
"_L4_proc_internal_freq (%i) == %i != %i", |
570 |
|
num, _L4_proc_internal_freq (proc_desc), internal_freq_ok[num]); |
571 |
|
check ("[intern]", "_L4_proc_external_freq", |
572 |
|
(_L4_proc_external_freq (proc_desc) == external_freq_ok[num]), |
573 |
|
"_L4_proc_external_freq (%i) == %i != %i", |
574 |
|
num, _L4_proc_external_freq (proc_desc), external_freq_ok[num]); |
575 |
|
|
576 |
|
#ifdef _L4_INTERFACE_GNU |
577 |
|
{ |
578 |
|
l4_proc_desc_t *proc_desc_gnu = l4_proc_desc_from (kip, num); |
579 |
|
|
580 |
|
check ("[GNU]", "l4_proc_desc_from", |
581 |
|
(proc_desc_gnu == proc_desc), |
582 |
|
"l4_proc_desc_from (kip, %i) == %p != %p", |
583 |
|
num, proc_desc_gnu, proc_desc); |
584 |
|
check ("[GNU]", "l4_proc_desc", |
585 |
|
(l4_proc_desc (num) == proc_desc), |
586 |
|
"l4_proc_desc (%i) == %p != %p", |
587 |
|
num, l4_proc_desc (num), proc_desc); |
588 |
|
|
589 |
|
check ("[GNU]", "l4_proc_internal_freq", |
590 |
|
(l4_proc_internal_freq (proc_desc_gnu) |
591 |
|
== internal_freq_ok[num]), |
592 |
|
"l4_proc_internal_freq (%i) == %i != %i", |
593 |
|
num, l4_proc_internal_freq (proc_desc_gnu), |
594 |
|
internal_freq_ok[num]); |
595 |
|
check ("[GNU]", "l4_proc_external_freq", |
596 |
|
(l4_proc_external_freq (proc_desc_gnu) |
597 |
|
== external_freq_ok[num]), |
598 |
|
"l4_proc_external_freq (%i) == %i != %i", |
599 |
|
num, l4_proc_external_freq (proc_desc_gnu), |
600 |
|
external_freq_ok[num]); |
601 |
|
} |
602 |
|
#endif |
603 |
|
|
604 |
|
|
605 |
|
#ifdef _L4_INTERFACE_L4 |
606 |
|
{ |
607 |
|
L4_ProcDesc_t *proc_desc_l4 = L4_ProcDesc (kip, num); |
608 |
|
|
609 |
|
check ("[L4]", "L4_ProcDesc", |
610 |
|
((void *) proc_desc_l4 == (void *) proc_desc), |
611 |
|
"L4_ProcDesc (kip, %i) == %p != %p", |
612 |
|
num, proc_desc_l4, proc_desc); |
613 |
|
|
614 |
|
check ("[L4]", "L4_ProcDescInternalFreq", |
615 |
|
(L4_ProcDescInternalFreq (proc_desc_l4) |
616 |
|
== internal_freq_ok[num]), |
617 |
|
"L4_ProcDescInternalFreq (kip, %i) == %i != %i", |
618 |
|
num, L4_ProcDescInternalFreq (proc_desc_l4), |
619 |
|
internal_freq_ok[num]); |
620 |
|
check ("[L4]", "L4_ProcDescExternalFreq", |
621 |
|
(L4_ProcDescExternalFreq (proc_desc_l4) |
622 |
|
== external_freq_ok[num]), |
623 |
|
"L4_ProcDescExternalFreq (kip, %i) == %i != %i", |
624 |
|
num, L4_ProcDescExternalFreq (proc_desc_l4), |
625 |
|
external_freq_ok[num]); |
626 |
|
} |
627 |
|
#endif |
628 |
|
|
629 |
|
if (num > 0) |
630 |
|
{ |
631 |
|
_L4_word_t size = ((_L4_word_t) proc_desc) |
632 |
|
- ((_L4_word_t) proc_desc_prev); |
633 |
|
check_nr ("[intern]", "size of proc_desc", |
634 |
|
size, proc_desc_size_ok); |
635 |
|
} |
636 |
|
proc_desc_prev = proc_desc; |
637 |
|
} |
638 |
|
} |
639 |
|
|
640 |
|
|
641 |
|
/* Test the page info field. */ |
642 |
|
void |
643 |
|
test_page_info (_L4_kip_t kip) |
644 |
|
{ |
645 |
|
_L4_word_t page_size_mask_ok = 0x00401000; |
646 |
|
_L4_word_t page_rights_ok = 0x6; |
647 |
|
|
648 |
|
check_nr ("[intern]", "_L4_page_size_mask", |
649 |
|
_L4_page_size_mask (kip), page_size_mask_ok); |
650 |
|
check_nr ("[intern]", "_L4_page_rights", |
651 |
|
_L4_page_rights (kip), page_rights_ok); |
652 |
|
|
653 |
|
#ifdef _L4_INTERFACE_GNU |
654 |
|
check_nr ("[GNU]", "l4_page_size_mask_from", |
655 |
|
l4_page_size_mask_from (kip), page_size_mask_ok); |
656 |
|
check_nr ("[GNU]", "l4_page_size_mask", |
657 |
|
l4_page_size_mask (), page_size_mask_ok); |
658 |
|
check_nr ("[GNU]", "l4_page_rights_from", |
659 |
|
l4_page_rights_from (kip), page_rights_ok); |
660 |
|
check_nr ("[GNU]", "l4_page_rights", l4_page_rights (), page_rights_ok); |
661 |
|
#endif |
662 |
|
|
663 |
|
#ifdef _L4_INTERFACE_L4 |
664 |
|
check_nr ("[L4]", "L4_PageSizeMask", |
665 |
|
L4_PageSizeMask (kip), page_size_mask_ok); |
666 |
|
check_nr ("[L4]", "L4_PageRights", |
667 |
|
L4_PageRights (kip), page_rights_ok); |
668 |
|
#endif |
669 |
} |
} |
670 |
|
|
671 |
|
|
672 |
void |
void |
673 |
test (void) |
test (void) |
674 |
{ |
{ |
675 |
test_magic (); |
_L4_kip_t kip; |
676 |
|
|
677 |
|
kip = test_magic (); |
678 |
|
test_api_and_kernel_id (); |
679 |
|
|
680 |
|
test_kernel_gen_date (kip); |
681 |
|
test_kernel_version (kip); |
682 |
|
test_kernel_supplier (kip); |
683 |
|
test_kernel_version_string (kip); |
684 |
|
test_kernel_feature (kip); |
685 |
|
|
686 |
|
test_processor_info (kip); |
687 |
|
|
688 |
|
test_page_info (kip); |
689 |
} |
} |