/[hurd]/hurd-l4/libl4/tests/t-l4-kip.c
ViewVC logotype

Diff of /hurd-l4/libl4/tests/t-l4-kip.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by marcus, Wed Feb 9 04:12:31 2005 UTC revision 1.2 by marcus, Thu Feb 10 04:12:12 2005 UTC
# Line 19  Line 19 
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    
# Line 28  Line 31 
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
# Line 98  test_magic () Line 101  test_magic ()
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  }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26