/[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.3 by marcus, Tue Feb 15 18:27:46 2005 UTC revision 1.4 by marcus, Fri Feb 18 03:58:08 2005 UTC
# Line 31  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  _L4_kip_t  void *
35  test_magic ()  test_magic ()
36  {  {
37    /* This is our atom.  We can't check it except by looking at the    void *kip_ok = (void *) environment_kip;
38       magic, and we set it in our faked environment anyway.  */    word_t api_version_ok = environment_api_version;
39    _L4_api_version_t api_version;    word_t api_flags_ok = environment_api_flags;
40    _L4_api_flags_t api_flags;    word_t kernel_id_ok = environment_kernel_id;
   _L4_kernel_id_t kernel_id;  
   _L4_kip_t kip = _L4_kernel_interface (&api_version, &api_flags, &kernel_id);  
41    
42    /* Verify that our fake KIP is actually there.  */  #ifdef _L4_INTERFACE_INTERN
43    check ("[intern]", "if fake KIP is installed",    {
44        /* This is our atom.  We can't check it except by looking at the
45           (kip->magic[0] == 'L' && kip->magic[1] == '4'         magic, and we set it in our faked environment anyway.  */
46            && kip->magic[2] == (char) 0xe6 && kip->magic[3] == 'K'),      _L4_api_version_t api_version;
47        _L4_api_flags_t api_flags;
48           "_L4_kernel_interface kip magic == %c%c%c%c != L4\xe6K\n",      _L4_kernel_id_t kernel_id;
49           kip->magic[0], kip->magic[1], kip->magic[2], kip->magic[3]);      _L4_kip_t kip = _L4_kernel_interface (&api_version, &api_flags,
50                                              &kernel_id);
51    
52        check ("[GNU]", "if l4_kip() returns the KIP",
53               (kip == kip_ok),
54               "kip == %p != %p\n", kip, kip_ok);
55    
56    /* Verify the other values returned by _L4_kernel_interface.  This      /* Verify that our fake KIP is actually there.  */
57       is basically an internal consistency check.  */      check ("[intern]", "if fake KIP is installed",
58    check ("[intern]", "if fake API version matches KIP",             (kip->magic[0] == 'L' && kip->magic[1] == '4'
59           (api_version == kip->api_version.raw),              && kip->magic[2] == (char) 0xe6 && kip->magic[3] == 'K'),
60           "_L4_kernel_interface api_version == 0x%x != 0x%x\n",             "_L4_kernel_interface kip magic == %c%c%c%c != L4\xe6K\n",
61           api_version, kip->api_version.raw);             kip->magic[0], kip->magic[1], kip->magic[2], kip->magic[3]);
62    check ("[intern]", "if fake API flags matches KIP",  
63           (api_flags == kip->api_flags.raw),      /* Verify the other values returned by _L4_kernel_interface.  This
64           "_L4_kernel_interface api_flags == 0x%x != 0x%x\n",         is basically an internal consistency check.  */
65           api_flags, kip->api_flags.raw);      check_nr ("[intern]", "if fake API version is returned",
66    check ("[intern]", "if fake kernel ID flags matches KIP",                api_version, api_version_ok);
67           (kernel_id == _L4_kernel_desc (kip)->id.raw),      check_nr ("[intern]", "if fake API version matches KIP",
68           "_L4_kernel_interface kernel_id == 0x%x != 0x%x\n",                api_version, kip->api_version.raw);
69           kernel_id, _L4_kernel_desc (kip)->id.raw);      check_nr ("[intern]", "if fake API flags are returned",
70                  api_flags, api_flags_ok);
71        check_nr ("[intern]", "if fake API flags matches KIP",
72                  api_flags, kip->api_flags.raw);
73        check_nr ("[intern]", "if fake kernel ID is returned",
74                  kernel_id, kernel_id_ok);
75        check_nr ("[intern]", "if fake kernel ID matches KIP",
76                  kernel_id, _L4_kernel_desc (kip)->id.raw);
77      }
78    #endif
79    
80  #ifdef _L4_INTERFACE_GNU  #ifdef _L4_INTERFACE_GNU
81    {    {
82      /* Some other ways to get the same information.  */      /* Some other ways to get the same information.  */
83      l4_kip_t kip_gnu = l4_kip ();      l4_kip_t kip = l4_kip ();
84    
85      check ("[GNU]", "if l4_kip() returns the KIP",      check ("[GNU]", "if l4_kip() returns the KIP",
86             (kip_gnu == kip),             (kip == kip_ok),
87             "kip_gnu == %p != %p\n", kip_gnu, kip);             "kip == %p != %p\n", kip, kip_ok);
88    }    }
89  #endif  #endif
90    
91  #ifdef _L4_INTERFACE_L4  #ifdef _L4_INTERFACE_L4
92    {    {
93      L4_Word_t api_version_l4;      L4_Word_t api_version;
94      L4_Word_t api_flags_l4;      L4_Word_t api_flags;
95      L4_Word_t kernel_id_l4;      L4_Word_t kernel_id;
96        void *kip = L4_KernelInterface (&api_version, &api_flags, &kernel_id);
     void *kip_l4 = L4_KernelInterface (&api_version_l4, &api_flags_l4,  
                                        &kernel_id_l4);  
97    
98      check ("[L4]", "if L4_KernelInterface returns the KIP",      check ("[L4]", "if L4_KernelInterface returns the KIP",
99             (kip_l4 == kip),             (kip == kip_ok),
100             "kip_l4 == %p != %p\n", kip_l4, kip);             "kip == %p != %p\n", kip, kip);
101    
102      check ("[L4]", "if L4 API version matches KIP",      check_nr ("[L4]", "if L4 API version matches KIP",
103             (api_version_l4 == api_version),                api_version, api_version_ok);
104             "api_version_l4 == 0x%x != 0x%x\n", api_version_l4, api_version);      check_nr ("[L4]", "if L4 API flags matches KIP",
105      check ("[L4]", "if L4 API flags matches KIP",                api_flags, api_flags_ok);
106             (api_flags_l4 == api_flags),      check_nr ("[L4]", "if L4 kernel ID flags matches KIP",
107             "api_flags_l4 == 0x%x != 0x%x\n", api_flags_l4, api_flags);                kernel_id, kernel_id_ok);
108      check ("[L4]", "if L4 kernel ID flags matches KIP",  
109             (kernel_id_l4 == kernel_id),      kip = L4_GetKernelInterface ();
110             "kip_l4 == 0x%x != 0x%x\n", kernel_id_l4, kernel_id);      check ("[L4]", "L4_GetKernelInterface",
111               (kip == kip),
112               "kip == %p != %p\n", kip, kip);
113    }    }
114  #endif  #endif
115    
116    return kip;    return kip_ok;
117  }  }
118    
119    
# Line 111  test_magic () Line 122  test_magic ()
122  void  void
123  test_api_and_kernel_id ()  test_api_and_kernel_id ()
124  {  {
125    #ifdef _L4_INTERFACE_INTERN
126    _L4_api_version_t api_version;    _L4_api_version_t api_version;
127    _L4_api_flags_t api_flags;    _L4_api_flags_t api_flags;
128    _L4_kernel_id_t kernel_id;    _L4_kernel_id_t kernel_id;
# Line 191  test_api_and_kernel_id () Line 203  test_api_and_kernel_id ()
203              _L4_KERNEL_ID_L4KA_STRAWBERRY, 0x04);              _L4_KERNEL_ID_L4KA_STRAWBERRY, 0x04);
204    check_nr ("[intern]", "_L4_KERNEL_SUBID_L4KA_STRAWBERRY",    check_nr ("[intern]", "_L4_KERNEL_SUBID_L4KA_STRAWBERRY",
205              _L4_KERNEL_SUBID_L4KA_STRAWBERRY, 0x03);              _L4_KERNEL_SUBID_L4KA_STRAWBERRY, 0x03);
206    #endif
207    
208  #ifdef _L4_INTERFACE_L4  #ifdef _L4_INTERFACE_L4
209    {    {
# Line 242  test_api_and_kernel_id () Line 255  test_api_and_kernel_id ()
255  void  void
256  test_kernel_gen_date (_L4_kip_t kip)  test_kernel_gen_date (_L4_kip_t kip)
257  {  {
258    _L4_word_t year_ok = 2005;    word_t year_ok = 2005;
259    _L4_word_t month_ok = 1;    word_t month_ok = 1;
260    _L4_word_t day_ok = 22;    word_t day_ok = 22;
261    
262    _L4_word_t year;    word_t year;
263    _L4_word_t month;    word_t month;
264    _L4_word_t day;    word_t day;
265    
266    #ifdef _L4_INTERFACE_INTERN
267    _L4_kernel_gen_date (kip, &year, &month, &day);    _L4_kernel_gen_date (kip, &year, &month, &day);
268        
269    check ("[intern]", "_L4_kernel_gen_date",    check ("[intern]", "_L4_kernel_gen_date",
270           (year == year_ok && month == month_ok && day == day_ok),           (year == year_ok && month == month_ok && day == day_ok),
271           "_L4_kernel_gen_date == %d/%d/%d != %d/%d/%d",           "_L4_kernel_gen_date == %d/%d/%d != %d/%d/%d",
272           year, month, day, year_ok, month_ok, day_ok);           year, month, day, year_ok, month_ok, day_ok);
273    #endif
274    
275  #ifdef _L4_INTERFACE_GNU  #ifdef _L4_INTERFACE_GNU
276    l4_kernel_gen_date (&year, &month, &day);    l4_kernel_gen_date (&year, &month, &day);
# Line 288  test_kernel_gen_date (_L4_kip_t kip) Line 303  test_kernel_gen_date (_L4_kip_t kip)
303  void  void
304  test_kernel_version (_L4_kip_t kip)  test_kernel_version (_L4_kip_t kip)
305  {  {
306    _L4_word_t version_ok = 0;    word_t version_ok = 0;
307    _L4_word_t subversion_ok = 4;    word_t subversion_ok = 4;
308    _L4_word_t subsubversion_ok = 0;    word_t subsubversion_ok = 0;
309    _L4_word_t full_version_ok = (version_ok << 24)  
310      | (subversion_ok << 16) | subsubversion_ok;  #ifdef _L4_INTERFACE_INTERN
311      {
312    _L4_word_t version;      word_t version;
313    _L4_word_t subversion;      word_t subversion;
314    _L4_word_t subsubversion;      word_t subsubversion;
315    
316    _L4_kernel_version (kip, &version, &subversion, &subsubversion);      _L4_kernel_version (kip, &version, &subversion, &subsubversion);
317        
318    check ("[intern]", "_L4_kernel_version",      check ("[intern]", "_L4_kernel_version",
319           (version == version_ok && subversion == subversion_ok             (version == version_ok && subversion == subversion_ok
320            && subsubversion == subsubversion_ok),              && subsubversion == subsubversion_ok),
321           "_L4_kernel_version == %d.%d.%d != %d.%d.%d",             "_L4_kernel_version == %d.%d.%d != %d.%d.%d",
322           version, subversion, subsubversion,             version, subversion, subsubversion,
323           version_ok, subversion_ok, subsubversion_ok);             version_ok, subversion_ok, subsubversion_ok);
324      }
325    #endif
326    
327  #ifdef _L4_INTERFACE_GNU  #ifdef _L4_INTERFACE_GNU
328    l4_kernel_version (&version, &subversion, &subsubversion);    {
329        word_t version;
330    check ("[GNU]", "l4_kernel_version",      word_t subversion;
331           (version == version_ok && subversion == subversion_ok      word_t subsubversion;
332            && subsubversion == subsubversion_ok),  
333           "l4_kernel_version == %d.%d.%d != %d.%d.%d",      l4_kernel_version (&version, &subversion, &subsubversion);
334           version, subversion, subsubversion, version_ok,  
335           subversion_ok, subsubversion_ok);      check ("[GNU]", "l4_kernel_version",
336               (version == version_ok && subversion == subversion_ok
337    l4_kernel_version_from (kip, &version, &subversion, &subsubversion);              && subsubversion == subsubversion_ok),
338               "l4_kernel_version == %d.%d.%d != %d.%d.%d",
339    check ("[GNU]", "l4_kernel_version_from",             version, subversion, subsubversion, version_ok,
340           (version == version_ok && subversion == subversion_ok             subversion_ok, subsubversion_ok);
341            && subsubversion == subsubversion_ok),  
342           "l4_kernel_version_from == %d.%d.%d != %d.%d.%d",      l4_kernel_version_from (kip, &version, &subversion, &subsubversion);
343           version, subversion, subsubversion, version_ok,  
344           subversion_ok, subsubversion_ok);      check ("[GNU]", "l4_kernel_version_from",
345               (version == version_ok && subversion == subversion_ok
346                && subsubversion == subsubversion_ok),
347               "l4_kernel_version_from == %d.%d.%d != %d.%d.%d",
348               version, subversion, subsubversion, version_ok,
349               subversion_ok, subsubversion_ok);
350      }
351  #endif  #endif
352    
353  #ifdef _L4_INTERFACE_L4  #ifdef _L4_INTERFACE_L4
354    version = L4_KernelVersion (kip);    {
355        word_t full_version_ok = (version_ok << 24)
356    check ("[L4]", "L4_KernelVersion",        | (subversion_ok << 16) | subsubversion_ok;
357           (version == full_version_ok),      word_t version;
358           "L4_KernelVersion == 0x%x != 0x%x", version, full_version_ok);  
359        version = L4_KernelVersion (kip);
360    
361        check ("[L4]", "L4_KernelVersion",
362               (version == full_version_ok),
363               "L4_KernelVersion == 0x%x != 0x%x", version, full_version_ok);
364      }
365  #endif  #endif
366  }  }
367    
# Line 341  test_kernel_version (_L4_kip_t kip) Line 370  test_kernel_version (_L4_kip_t kip)
370  void  void
371  test_kernel_supplier (_L4_kip_t kip)  test_kernel_supplier (_L4_kip_t kip)
372  {  {
373    const char supplier_ok[] = _L4_KERNEL_SUPPLIER_UKA;  #ifdef _L4_INTERFACE_INTERN
374    char *supplier;    {
375        const char supplier_ok[] = _L4_KERNEL_SUPPLIER_UKA;
376        char *supplier;
377    
378    supplier = (char[]) _L4_KERNEL_SUPPLIER_GMD;      supplier = (char[]) _L4_KERNEL_SUPPLIER_GMD;
379    check ("[intern]", "_L4_KERNEL_SUPPLIER_GMD",      check ("[intern]", "_L4_KERNEL_SUPPLIER_GMD",
380           (!strncmp (supplier, "GMD ", 4)),             (!strncmp (supplier, "GMD ", 4)),
381           "_L4_KERNEL_SUPPLIER_GMD == '%.4s' != 'GMD '", supplier);             "_L4_KERNEL_SUPPLIER_GMD == '%.4s' != 'GMD '", supplier);
382    supplier = (char[]) _L4_KERNEL_SUPPLIER_IBM;      supplier = (char[]) _L4_KERNEL_SUPPLIER_IBM;
383    check ("[intern]", "_L4_KERNEL_SUPPLIER_IBM",      check ("[intern]", "_L4_KERNEL_SUPPLIER_IBM",
384           (!strncmp (supplier, "IBM ", 4)),             (!strncmp (supplier, "IBM ", 4)),
385           "_L4_KERNEL_SUPPLIER_IBM == '%.4s' != 'IBM '", supplier);             "_L4_KERNEL_SUPPLIER_IBM == '%.4s' != 'IBM '", supplier);
386    supplier = (char[]) _L4_KERNEL_SUPPLIER_UNSW;      supplier = (char[]) _L4_KERNEL_SUPPLIER_UNSW;
387    check ("[intern]", "_L4_KERNEL_SUPPLIER_UNSW",      check ("[intern]", "_L4_KERNEL_SUPPLIER_UNSW",
388           (!strncmp (supplier, "UNSW", 4)),             (!strncmp (supplier, "UNSW", 4)),
389           "_L4_KERNEL_SUPPLIER_UNSW == '%.4s' != 'UNSW'", supplier);             "_L4_KERNEL_SUPPLIER_UNSW == '%.4s' != 'UNSW'", supplier);
390    supplier = (char[]) _L4_KERNEL_SUPPLIER_TUD;      supplier = (char[]) _L4_KERNEL_SUPPLIER_TUD;
391    check ("[intern]", "_L4_KERNEL_SUPPLIER_TUD",      check ("[intern]", "_L4_KERNEL_SUPPLIER_TUD",
392           (!strncmp (supplier, "TUD ", 4)),             (!strncmp (supplier, "TUD ", 4)),
393           "_L4_KERNEL_SUPPLIER_TUD == '%.4s' != 'TUD '", supplier);             "_L4_KERNEL_SUPPLIER_TUD == '%.4s' != 'TUD '", supplier);
394    supplier = (char[]) _L4_KERNEL_SUPPLIER_UKA;      supplier = (char[]) _L4_KERNEL_SUPPLIER_UKA;
395    check ("[intern]", "_L4_KERNEL_SUPPLIER_UKA",      check ("[intern]", "_L4_KERNEL_SUPPLIER_UKA",
396           (!strncmp (supplier, "UKa ", 4)),             (!strncmp (supplier, "UKa ", 4)),
397           "_L4_KERNEL_SUPPLIER_UKA == '%.4s' != 'UKa '", supplier);             "_L4_KERNEL_SUPPLIER_UKA == '%.4s' != 'UKa '", supplier);
398    
399    supplier = _L4_kernel_supplier (kip);      supplier = _L4_kernel_supplier (kip);
400    check ("[intern]", "_L4_kernel_supplier",      check ("[intern]", "_L4_kernel_supplier",
401           (!strncmp (supplier, supplier_ok, sizeof (supplier_ok))),             (!strncmp (supplier, supplier_ok, sizeof (supplier_ok))),
402           "_L4_kernel_supplier == '%.4s' != '%.4s'", supplier, supplier_ok);             "_L4_kernel_supplier == '%.4s' != '%.4s'", supplier, supplier_ok);
403      }
 #ifdef _L4_INTERFACE_GNU  
   check ("[GNU]", "L4_KERNEL_SUPPLIER_GMD",  
          (!strncmp (((char[]) L4_KERNEL_SUPPLIER_GMD),  
                     ((char[]) _L4_KERNEL_SUPPLIER_GMD), 4)),  
          "L4_KERNEL_SUPPLIER_GMD == '%.4s' != '%.4s'",  
          (char[]) L4_KERNEL_SUPPLIER_GMD, (char[]) _L4_KERNEL_SUPPLIER_GMD);  
   check ("[GNU]", "L4_KERNEL_SUPPLIER_IBM",  
          (!strncmp (((char[]) L4_KERNEL_SUPPLIER_IBM),  
                     ((char[]) _L4_KERNEL_SUPPLIER_IBM), 4)),  
          "L4_KERNEL_SUPPLIER_IBM == '%.4s' != '%.4s'",  
          (char[]) L4_KERNEL_SUPPLIER_IBM, (char[]) _L4_KERNEL_SUPPLIER_IBM);  
   check ("[GNU]", "L4_KERNEL_SUPPLIER_UNSW",  
          (!strncmp (((char[]) L4_KERNEL_SUPPLIER_UNSW),  
                     ((char[]) _L4_KERNEL_SUPPLIER_UNSW), 4)),  
          "L4_KERNEL_SUPPLIER_UNSW == '%.4s' != '%.4s'",  
          (char[]) L4_KERNEL_SUPPLIER_UNSW, (char[]) _L4_KERNEL_SUPPLIER_UNSW);  
   check ("[GNU]", "L4_KERNEL_SUPPLIER_TUD",  
          (!strncmp (((char[]) L4_KERNEL_SUPPLIER_TUD),  
                     ((char[]) _L4_KERNEL_SUPPLIER_TUD), 4)),  
          "L4_KERNEL_SUPPLIER_TUD == '%.4s' != '%.4s'",  
          (char[]) L4_KERNEL_SUPPLIER_TUD, (char[]) _L4_KERNEL_SUPPLIER_TUD);  
   check ("[GNU]", "L4_KERNEL_SUPPLIER_UKA",  
          (!strncmp (((char[]) L4_KERNEL_SUPPLIER_UKA),  
                     ((char[]) _L4_KERNEL_SUPPLIER_UKA), 4)),  
          "L4_KERNEL_SUPPLIER_UKA == '%.4s' != '%.4s'",  
          (char[]) L4_KERNEL_SUPPLIER_UKA, (char[]) _L4_KERNEL_SUPPLIER_UKA);  
   
   supplier = l4_kernel_supplier_from (kip);  
   check ("[GNU]", "l4_kernel_supplier_from",  
          (!strncmp (supplier, supplier_ok, sizeof (supplier_ok))),  
          "l4_kernel_supplier_from == '%.4s' != '%.4s'", supplier, supplier_ok);  
   
   supplier = l4_kernel_supplier ();  
   check ("[GNU]", "l4_kernel_supplier",  
          (!strncmp (supplier, supplier_ok, sizeof (supplier_ok))),  
          "l4_kernel_supplier == '%.4s' != '%.4s'", supplier, supplier_ok);  
404  #endif  #endif
405    
406    #ifdef _L4_INTERFACE_GNU
407      {
408        const char supplier_ok[] = _L4_KERNEL_SUPPLIER_UKA;
409        char *supplier;
410    
411        check ("[GNU]", "L4_KERNEL_SUPPLIER_GMD",
412               (!strncmp (((char[]) L4_KERNEL_SUPPLIER_GMD),
413                          ((char[]) _L4_KERNEL_SUPPLIER_GMD), 4)),
414               "L4_KERNEL_SUPPLIER_GMD == '%.4s' != '%.4s'",
415               (char[]) L4_KERNEL_SUPPLIER_GMD, (char[]) _L4_KERNEL_SUPPLIER_GMD);
416        check ("[GNU]", "L4_KERNEL_SUPPLIER_IBM",
417               (!strncmp (((char[]) L4_KERNEL_SUPPLIER_IBM),
418                          ((char[]) _L4_KERNEL_SUPPLIER_IBM), 4)),
419               "L4_KERNEL_SUPPLIER_IBM == '%.4s' != '%.4s'",
420               (char[]) L4_KERNEL_SUPPLIER_IBM, (char[]) _L4_KERNEL_SUPPLIER_IBM);
421        check ("[GNU]", "L4_KERNEL_SUPPLIER_UNSW",
422               (!strncmp (((char[]) L4_KERNEL_SUPPLIER_UNSW),
423                          ((char[]) _L4_KERNEL_SUPPLIER_UNSW), 4)),
424               "L4_KERNEL_SUPPLIER_UNSW == '%.4s' != '%.4s'",
425               (char[]) L4_KERNEL_SUPPLIER_UNSW,
426               (char[]) _L4_KERNEL_SUPPLIER_UNSW);
427        check ("[GNU]", "L4_KERNEL_SUPPLIER_TUD",
428               (!strncmp (((char[]) L4_KERNEL_SUPPLIER_TUD),
429                          ((char[]) _L4_KERNEL_SUPPLIER_TUD), 4)),
430               "L4_KERNEL_SUPPLIER_TUD == '%.4s' != '%.4s'",
431               (char[]) L4_KERNEL_SUPPLIER_TUD, (char[]) _L4_KERNEL_SUPPLIER_TUD);
432        check ("[GNU]", "L4_KERNEL_SUPPLIER_UKA",
433               (!strncmp (((char[]) L4_KERNEL_SUPPLIER_UKA),
434                          ((char[]) _L4_KERNEL_SUPPLIER_UKA), 4)),
435               "L4_KERNEL_SUPPLIER_UKA == '%.4s' != '%.4s'",
436               (char[]) L4_KERNEL_SUPPLIER_UKA, (char[]) _L4_KERNEL_SUPPLIER_UKA);
437    
438        supplier = l4_kernel_supplier_from (kip);
439        check ("[GNU]", "l4_kernel_supplier_from",
440               (!strncmp (supplier, supplier_ok, sizeof (supplier_ok))),
441               "l4_kernel_supplier_from == '%.4s' != '%.4s'",
442               supplier, supplier_ok);
443    
444        supplier = l4_kernel_supplier ();
445        check ("[GNU]", "l4_kernel_supplier",
446               (!strncmp (supplier, supplier_ok, sizeof (supplier_ok))),
447               "l4_kernel_supplier == '%.4s' != '%.4s'", supplier, supplier_ok);
448      }
449    #endif
450    
451  #ifdef _L4_INTERFACE_L4  #ifdef _L4_INTERFACE_L4
452    {    {
# Line 444  test_kernel_version_string (_L4_kip_t ki Line 483  test_kernel_version_string (_L4_kip_t ki
483      "using gcc version 3.3.4 (Debian 1:3.3.4-13)";      "using gcc version 3.3.4 (Debian 1:3.3.4-13)";
484    char *version_string;    char *version_string;
485    
486    #ifdef _L4_INTERFACE_INTERN
487    version_string = _L4_kernel_version_string (kip);    version_string = _L4_kernel_version_string (kip);
488    check ("[intern]", "_L4_kernel_version_string",    check ("[intern]", "_L4_kernel_version_string",
489           (!strcmp (version_string, version_string_ok)),           (!strcmp (version_string, version_string_ok)),
490           "_L4_kernel_version_string == '%s' != '%s'",           "_L4_kernel_version_string == '%s' != '%s'",
491           version_string, version_string_ok);           version_string, version_string_ok);
492    #endif
493    
494  #ifdef _L4_INTERFACE_GNU  #ifdef _L4_INTERFACE_GNU
495    version_string = l4_kernel_version_string_from (kip);    version_string = l4_kernel_version_string_from (kip);
# Line 481  test_kernel_feature (_L4_kip_t kip) Line 522  test_kernel_feature (_L4_kip_t kip)
522    const char *feature_ok[] = { "smallspaces", NULL };    const char *feature_ok[] = { "smallspaces", NULL };
523    
524    char *feature;    char *feature;
525    _L4_word_t num = 0;    word_t num = 0;
526    int last_seen = 0;    int last_seen = 0;
527    
528    do    do
529      {      {
530          /* FIXME: Support [!_L4_INTERFACE_INTERN] (by code duplication?).  */
531        feature = _L4_feature (kip, num);        feature = _L4_feature (kip, num);
532    
533        if (!last_seen && feature_ok[num] && feature)        if (!last_seen && feature_ok[num] && feature)
# Line 530  test_kernel_feature (_L4_kip_t kip) Line 572  test_kernel_feature (_L4_kip_t kip)
572  void  void
573  test_processor_info (_L4_kip_t kip)  test_processor_info (_L4_kip_t kip)
574  {  {
575    _L4_word_t processors_ok = 2;    word_t processors_ok = 2;
576    _L4_word_t internal_freq_ok[] = { 2809310, 2809311 };    word_t internal_freq_ok[] = { 2809310, 2809311 };
577    _L4_word_t external_freq_ok[] = { 0, 0 };    word_t external_freq_ok[] = { 0, 0 };
578    _L4_word_t proc_desc_size_ok = 16;    word_t proc_desc_size_ok = 16;
579    _L4_word_t num;    word_t num;
580    _L4_proc_desc_t proc_desc_prev = 0;    _L4_proc_desc_t proc_desc_prev = 0;
581    
582    #ifdef _L4_INTERFACE_INTERN
583    check_nr ("[intern]", "_L4_num_processors",    check_nr ("[intern]", "_L4_num_processors",
584              _L4_num_processors (kip), processors_ok);              _L4_num_processors (kip), processors_ok);
585    #endif
586    
587  #ifdef _L4_INTERFACE_GNU  #ifdef _L4_INTERFACE_GNU
588    check_nr ("[GNU]", "l4_num_processors_from",    check_nr ("[GNU]", "l4_num_processors_from",
# Line 548  test_processor_info (_L4_kip_t kip) Line 592  test_processor_info (_L4_kip_t kip)
592  #endif  #endif
593    
594  #ifdef _L4_INTERFACE_L4  #ifdef _L4_INTERFACE_L4
595      {
596        volatile L4_ProcDesc_t proc_desc;
597        volatile L4_Word_t raw;
598    
599        raw = proc_desc.raw[0];
600        raw = proc_desc.raw[1];
601        raw = proc_desc.raw[2];
602        raw = proc_desc.raw[3];
603      }
604    
605    check_nr ("[L4]", "L4_NumProcessors",    check_nr ("[L4]", "L4_NumProcessors",
606              L4_NumProcessors (kip), processors_ok);              L4_NumProcessors (kip), processors_ok);
607  #endif  #endif
608    
609    #ifdef _L4_INTERFACE_INTERN
610    check_nr ("[intern]", "processor_info.log2_size",    check_nr ("[intern]", "processor_info.log2_size",
611              (1 << kip->processor_info.log2_size), proc_desc_size_ok);              (1 << kip->processor_info.log2_size), proc_desc_size_ok);
612    #endif
613    
614    for (num = 0; num < _L4_num_processors (kip); num++)    for (num = 0; num < _L4_num_processors (kip); num++)
615      {      {
616        _L4_proc_desc_t proc_desc;        _L4_proc_desc_t proc_desc;
617    
618          /* FIXME: Support [!_L4_INTERFACE_INTERN] (by code duplication?).  */
619        proc_desc = _L4_proc_desc (kip, num);        proc_desc = _L4_proc_desc (kip, num);
620        check ("[intern]", "_L4_proc_desc (once per cpu)",        check ("[intern]", "_L4_proc_desc (once per cpu)",
621               (proc_desc != NULL),               (proc_desc != NULL),
# Line 605  test_processor_info (_L4_kip_t kip) Line 662  test_processor_info (_L4_kip_t kip)
662  #ifdef _L4_INTERFACE_L4  #ifdef _L4_INTERFACE_L4
663        {        {
664          L4_ProcDesc_t *proc_desc_l4 = L4_ProcDesc (kip, num);          L4_ProcDesc_t *proc_desc_l4 = L4_ProcDesc (kip, num);
665            
666          check ("[L4]", "L4_ProcDesc",          check ("[L4]", "L4_ProcDesc",
667                 ((void *) proc_desc_l4 == (void *) proc_desc),                 ((void *) proc_desc_l4 == (void *) proc_desc),
668                 "L4_ProcDesc (kip, %i) == %p != %p",                 "L4_ProcDesc (kip, %i) == %p != %p",
# Line 642  test_processor_info (_L4_kip_t kip) Line 699  test_processor_info (_L4_kip_t kip)
699  void  void
700  test_page_info (_L4_kip_t kip)  test_page_info (_L4_kip_t kip)
701  {  {
702    _L4_word_t page_size_mask_ok = 0x00401000;    word_t page_size_mask_ok = 0x00401000;
703    _L4_word_t page_rights_ok = 0x6;    word_t page_rights_ok = 0x6;
704    
705    #ifdef _L4_INTERFACE_INTERN
706    check_nr ("[intern]", "_L4_page_size_mask",    check_nr ("[intern]", "_L4_page_size_mask",
707              _L4_page_size_mask (kip), page_size_mask_ok);              _L4_page_size_mask (kip), page_size_mask_ok);
708    check_nr ("[intern]", "_L4_page_rights",    check_nr ("[intern]", "_L4_page_rights",
709              _L4_page_rights (kip), page_rights_ok);              _L4_page_rights (kip), page_rights_ok);
710    #endif
711    
712  #ifdef _L4_INTERFACE_GNU  #ifdef _L4_INTERFACE_GNU
713    check_nr ("[GNU]", "l4_page_size_mask_from",    check_nr ("[GNU]", "l4_page_size_mask_from",
# Line 669  test_page_info (_L4_kip_t kip) Line 728  test_page_info (_L4_kip_t kip)
728  }  }
729    
730    
731    /* Test the thread info field.  */
732    void
733    test_thread_info (_L4_kip_t kip)
734    {
735      word_t thread_id_bits_ok = 0x11;
736      word_t thread_id_system_base_ok = 0x10;
737      word_t thread_id_user_base_ok = 0x30;
738    
739    #ifdef _L4_INTERFACE_INTERN
740      check_nr ("[intern]", "_L4_thread_id_bits",
741                _L4_thread_id_bits (kip), thread_id_bits_ok);
742      check_nr ("[intern]", "_L4_thread_system_base",
743                _L4_thread_system_base (kip), thread_id_system_base_ok);
744      check_nr ("[intern]", "_L4_thread_user_base",
745                _L4_thread_user_base (kip), thread_id_user_base_ok);
746    #endif
747    
748    #ifdef _L4_INTERFACE_GNU
749      check_nr ("[GNU]", "l4_thread_id_bits_from",
750                l4_thread_id_bits_from (kip), thread_id_bits_ok);
751      check_nr ("[GNU]", "l4_thread_id_bits",
752                l4_thread_id_bits (), thread_id_bits_ok);
753      check_nr ("[GNU]", "l4_thread_system_base_from",
754                l4_thread_system_base_from (kip), thread_id_system_base_ok);
755      check_nr ("[GNU]", "l4_thread_system_base",
756                l4_thread_system_base (), thread_id_system_base_ok);
757      check_nr ("[GNU]", "l4_thread_user_base_from",
758                l4_thread_user_base_from (kip), thread_id_user_base_ok);
759      check_nr ("[GNU]", "l4_thread_user_base",
760                l4_thread_user_base (), thread_id_user_base_ok);
761    #endif
762    
763    #ifdef _L4_INTERFACE_L4
764      check_nr ("[intern]", "L4_ThreadIdBits",
765                L4_ThreadIdBits (kip), thread_id_bits_ok);
766      check_nr ("[intern]", "L4_ThreadIdSystemBase",
767                L4_ThreadIdSystemBase (kip), thread_id_system_base_ok);
768      check_nr ("[intern]", "L4_ThreadIdUserBase",
769                L4_ThreadIdUserBase (kip), thread_id_user_base_ok);
770    #endif
771    }
772    
773    
774    /* Test the clock info field.  */
775    void
776    test_clock_info (_L4_kip_t kip)
777    {
778      word_t read_precision_ok = 0;
779      word_t schedule_precision_ok = 0;
780    
781    #ifdef _L4_INTERFACE_INTERN
782      check_nr ("[intern]", "_L4_read_precision",
783                _L4_read_precision (kip), read_precision_ok);
784      check_nr ("[intern]", "_L4_schedule_precision",
785                _L4_schedule_precision (kip), schedule_precision_ok);
786    #endif
787    
788    #ifdef _L4_INTERFACE_GNU
789      check_nr ("[GNU]", "l4_read_precision_from",
790                l4_read_precision_from (kip), read_precision_ok);
791      check_nr ("[GNU]", "l4_read_precision",
792                l4_read_precision (), read_precision_ok);
793      check_nr ("[GNU]", "l4_schedule_precision_from",
794                l4_schedule_precision_from (kip), schedule_precision_ok);
795      check_nr ("[GNU]", "l4_schedule_precision",
796                l4_schedule_precision (), schedule_precision_ok);
797    #endif
798    
799    #ifdef _L4_INTERFACE_L4
800      check_nr ("[L4]", "L4_ReadPrecision",
801                L4_ReadPrecision (kip), read_precision_ok);
802      check_nr ("[L4]", "l4_SchedulePrecision",
803                L4_SchedulePrecision (kip), schedule_precision_ok);
804    #endif
805    }
806    
807    
808    /* Test the utcb info field.  */
809    void
810    test_utcb_info (_L4_kip_t kip)
811    {
812      word_t utcb_align_log2_ok = 0x09;
813      word_t utcb_area_size_log2_ok = 0x0c;
814      word_t utcb_size_ok = 0x200;
815    
816    #ifdef _L4_INTERFACE_INTERN
817      check_nr ("[intern]", "_L4_utcb_area_size_log2",
818                _L4_utcb_area_size_log2 (kip), utcb_area_size_log2_ok);
819      check_nr ("[intern]", "_L4_utcb_alignment_log2",
820                _L4_utcb_alignment_log2 (kip), utcb_align_log2_ok);
821      check_nr ("[intern]", "_L4_utcb_size",
822                _L4_utcb_size (kip), utcb_size_ok);
823    #endif
824    
825    #ifdef _L4_INTERFACE_GNU
826      check_nr ("[GNU]", "l4_utcb_area_size_log2_from",
827                l4_utcb_area_size_log2_from (kip), utcb_area_size_log2_ok);
828      check_nr ("[GNU]", "l4_utcb_area_size_log2",
829                l4_utcb_area_size_log2 (), utcb_area_size_log2_ok);
830      check_nr ("[GNU]", "l4_utcb_area_size",
831                l4_utcb_area_size (), 1 << utcb_area_size_log2_ok);
832      check_nr ("[GNU]", "l4_utcb_alignment_log2_from",
833                l4_utcb_alignment_log2_from (kip), utcb_align_log2_ok);
834      check_nr ("[GNU]", "l4_utcb_alignment_log2",
835                l4_utcb_alignment_log2 (), utcb_align_log2_ok);
836      check_nr ("[GNU]", "l4_utcb_alignment_log2",
837                l4_utcb_alignment (), 1 << utcb_align_log2_ok);
838      check_nr ("[GNU]", "l4_utcb_size_from",
839                l4_utcb_size_from (kip), utcb_size_ok);
840      check_nr ("[GNU]", "l4_utcb_size",
841                l4_utcb_size (), utcb_size_ok);
842    #endif
843    
844    #ifdef _L4_INTERFACE_L4
845      check_nr ("[L4]", "L4_UtcbAreaSizeLog2",
846                L4_UtcbAreaSizeLog2 (kip), utcb_area_size_log2_ok);
847      check_nr ("[L4]", "L4_UtcbAlignmentLog2",
848                L4_UtcbAlignmentLog2 (kip), utcb_align_log2_ok);
849      check_nr ("[L4]", "L4_UtcbSize",
850                L4_UtcbSize (kip), utcb_size_ok);
851    #endif
852    }
853    
854    
855    /* Test the kip area info field.  */
856    void
857    test_kip_area_info (_L4_kip_t kip)
858    {
859      word_t kip_area_size_log2_ok = 0x0c;
860    
861    #ifdef _L4_INTERFACE_INTERN
862      check_nr ("[intern]", "_L4_kip_area_size_log2",
863                _L4_kip_area_size_log2 (kip), kip_area_size_log2_ok);
864    #endif
865    
866    #ifdef _L4_INTERFACE_GNU
867      check_nr ("[GNU]", "l4_kip_area_size_log2_from",
868                l4_kip_area_size_log2_from (kip), kip_area_size_log2_ok);
869      check_nr ("[GNU]", "l4_kip_area_size_log2",
870                l4_kip_area_size_log2 (), kip_area_size_log2_ok);
871      check_nr ("[GNU]", "l4_kip_area_size",
872                l4_kip_area_size (), 1 << kip_area_size_log2_ok);
873    #endif
874    
875    #ifdef _L4_INTERFACE_L4
876      check_nr ("[L4]", "L4_KipAreaSizeLog2",
877                L4_KipAreaSizeLog2 (kip), kip_area_size_log2_ok);
878    #endif
879    }
880    
881    
882    /* Test the boot info field.  */
883    void
884    test_boot_info (_L4_kip_t kip)
885    {
886      word_t boot_info_ok = 0x32600;
887    
888    #ifdef _L4_INTERFACE_INTERN
889      check_nr ("[intern]", "_L4_boot_info",
890                _L4_boot_info (kip), boot_info_ok);
891    #endif
892    
893    #ifdef _L4_INTERFACE_GNU
894      check_nr ("[GNU]", "l4_boot_info_from",
895                l4_boot_info_from (kip), boot_info_ok);
896      check_nr ("[GNU]", "l4_boot_info",
897                l4_boot_info (), boot_info_ok);
898    #endif
899    
900    #ifdef _L4_INTERFACE_L4
901      check_nr ("[L4]", "L4_BootInfo",
902                L4_BootInfo (kip), boot_info_ok);
903    #endif
904    }
905    
906    
907    /* Test the system call links.  */
908    void
909    test_syscalls (_L4_kip_t kip)
910    {
911    #ifdef _L4_INTERFACE_INTERN
912      word_t space_control_ok = 0x910;
913      word_t thread_control_ok = 0x8e0;
914      word_t processor_control_ok = 0x930;
915      word_t memory_control_ok = 0x940;
916      word_t ipc_ok = 0x800;
917      word_t lipc_ok = 0x830;
918      word_t unmap_ok = 0x8d0;
919      word_t exchange_registers_ok = 0x860;
920      word_t system_clock_ok = 0x870;
921      word_t thread_switch_ok = 0x8b0;
922      word_t schedule_ok = 0x8c0;
923      word_t arch0_ok = 0x950;
924      word_t arch1_ok = 0;
925      word_t arch2_ok = 0;
926      word_t arch3_ok = 0;
927    
928    #define CHECK_ONE_SYSCALL_LINK(name)                                    \
929      check_nr ("[intern]", #name " syscall link",                          \
930                kip->name, name ## _ok);
931    
932      CHECK_ONE_SYSCALL_LINK (space_control);
933      CHECK_ONE_SYSCALL_LINK (thread_control);
934      CHECK_ONE_SYSCALL_LINK (processor_control);
935      CHECK_ONE_SYSCALL_LINK (memory_control);
936      CHECK_ONE_SYSCALL_LINK (ipc);
937      CHECK_ONE_SYSCALL_LINK (lipc);
938      CHECK_ONE_SYSCALL_LINK (unmap);
939      CHECK_ONE_SYSCALL_LINK (exchange_registers);
940      CHECK_ONE_SYSCALL_LINK (system_clock);
941      CHECK_ONE_SYSCALL_LINK (thread_switch);
942      CHECK_ONE_SYSCALL_LINK (schedule);
943      CHECK_ONE_SYSCALL_LINK (arch0);
944      CHECK_ONE_SYSCALL_LINK (arch1);
945      CHECK_ONE_SYSCALL_LINK (arch2);
946      CHECK_ONE_SYSCALL_LINK (arch3);
947    #undef CHECK_ONE_SYSCALL_LINK
948    #endif
949    
950    }
951    
952    
953  void  void
954  test (void)  test (void)
955  {  {
# Line 684  test (void) Line 965  test (void)
965    test_kernel_feature (kip);    test_kernel_feature (kip);
966    
967    test_processor_info (kip);    test_processor_info (kip);
   
968    test_page_info (kip);    test_page_info (kip);
969      test_thread_info (kip);
970      test_clock_info (kip);
971      test_utcb_info (kip);
972      test_kip_area_info (kip);
973      test_boot_info (kip);
974    
975      test_syscalls (kip);
976  }  }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

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