<div dir="ltr"><br>Hello to all,<br><br>           I'm working on L4 fiasco. In that I  want to read the virtual hardware devies. for tha I'm running the code from <b>l4/pkg/example/sys/ux-vhw/main.c<br><br></b><b></b><br>
<div dir="ltr"><b> 10 #include <l4/sys/ipc.h><br> 11 #include <l4/sys/vhw.h><br> 12 #include <l4/util/util.h><br> 13 #include <l4/util/kip.h><br> 14 #include <l4/re/env.h><br> 15 <br> 16 #include <stdlib.h><br>
 17 #include <stdio.h><br> 18 <br> 19 static void print_entry(struct l4_vhw_entry *e)<br> 20 {<br> 21   printf("type: %d  mem start: %08lx  end: %08lx\n"<br> 22          "irq: %d pid %d\n",<br> 23          e->type, e->mem_start, e->mem_size,<br>
 24          e->irq_no, e->provider_pid);<br> 25 }<br> 26 <br> 27 int main(void)<br> 28 {<br> 29         l4_kernel_info_t *kip = l4re_kip();<br> 30         struct l4_vhw_descriptor *vhw;<br> 31         int i;<br> 32 <br>
 33         if (!kip)<br> 34         {<br> 35 <br> 36                 printf("KIP not available!\n");<br> 37                 return 1;<br> 38         }<br> 39 <br> 40         vhw = l4_vhw_get(kip);<br> 41 <br> 42         if(vhw)<br>
 43         {<br> 44                 printf("kip at %p, vhw at %p\n", kip, vhw);<br> 45                 printf("magic: %08x, version: %08x, count: %02d\n",<br> 46                                 vhw->magic, vhw->version, vhw->count);<br>
 47 <br> 48                 for (i = 0; i < vhw->count; i++)<br> 49                         print_entry(l4_vhw_get_entry(vhw, i));<br> 50         }<br> 51         return 0;<br> 52 }</b><u><b><br><br><br></b></u>In the above code at <b>line no 40</b> after <b>calling inline function l4_vhw_get(kip)</b>  I'm getting <b>vhw=NULL. </b>and the definition of inline function is from<b> l4sys/include/vhw.h </b>is as follows<b><br>
<br> 80 enum {<br> 81   L4_VHW_MAGIC = 0x56687765,<br> 82 };<br> 83 <br> 84 static inline struct l4_vhw_descriptor *<br> 85 l4_vhw_get(l4_kernel_info_t *kip) L4_NOTHROW<br> 86 {<br> 87   struct l4_vhw_descriptor *v<br> 88     = (struct l4_vhw_descriptor *)(((unsigned long)kip) + kip->vhw_offset);<br>
 89 <br> 90   if (v->magic == L4_VHW_MAGIC)<br> 91     return v;<br> 92 <br> 93   return NULL;<br> 94 }<br><br></b>Here<b> at line no 90, the v->magic </b>is having a value of<b> 0x4BE6344C </b>which is not equal to<b> L4_VHW_MAGIC<br>
<br></b>My qestion is why I'm getting different magic value Instead of  0x56687765, and how can I get correct magic value<b>.<br></b>If there are no virtual hardware device how can i create and integrate into my system........<b><br>
</b></div><div><b><br></b></div><div dir="ltr"><u><br></u>Thanks,<br>Raja Sekhar<br></div>
</div>