Hi Leon,

On Monday 20 June 2005 15:26, Leon Brits wrote:
> I've "extracted" the E1000 driver code from the TFTP server to get some
> packet data directly into L4. I've noticed that if I load this task with
> the loader then the TX part sends garbage. I then added (for fun) the
> attribute (section "STACK") to the buffer from which the packet is send
> and now it works.
>
> Can anybody explain this to me! Send a link to some use full doc?

TFTP is more or less a hack. Most drivers were derived from GRUB and
still GRUB is a hack. GRUB code "knows" that it runs one-by-one
mapped, that is physical and virtual addresses are equal. Therefore
in GRUB a network buffer can simply be allocated at the stack. In
L4env, the stack isn't necessary 1-by-1 mapped (especially, if the
task was started via the loader). Therefore, tftp starts a new thread
using a _known_ stack (see main.c, function real_main()). I assume
that specifiying the STACK attribute does the same in your application.

1-by-1 mapped memory is needed since the network card does not know
of any virtual memory layout.

Frank
-- 
## Dept. of Computer Science, Dresden University of Technology, Germany ##
## http://os.inf.tu-dresden.de/~fm3                                     ##

Attachment: pgpqehwoCLfpz.pgp
Description: PGP signature

_______________________________________________
l4-hackers mailing list
[email protected]
http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers

Reply via email to