Hi,
Sure. Both, L4Linux and your app need to be compiled without native hardware support. Instead, use a software network switch like the one provided by l4/pkg/ore. L4Linux needs to compiled with the ORe driver and your app needs to send/receive packets through ORe.
Well, sounds good. So I'm currently trying to integrate the latest e1000 driver (v7.0.33) into ORe as my e1000 adapter is not supported by the current one but encountered the following problem:
The updated driver wants to alloc some pages using alloc_page(). This results in a undefined reference to "_alloc_pages" when linking ore:
==> Linking ore LD_PRELOAD=/home/sts/L4_full/l4/tool/gendep/libgendep.so GENDEP_TARGET=ore GENDEP_BINARY=ld gcc -o ore ../../../../../lib/x86_586/crt0.o main.o openclose.o clients.o recv.o send.o netdevice.o irq_handling.o rxtx_string.o debug.o util.o events.o checksum.o xmit_lock.o worker.o local_deliver.o dummy_dsi.o -Wl,--whole-archive ../../../server/lib/net/OBJ-x86_586-l4v2/liblinuxnetdrv.a -Wl,--no-whole-archive -Ttext=0x01800000 -L../../../server/lib/linuxemul/OBJ-x86_586-l4v2 -L../../../../../lib/x86_586/l4v2 -L/home/drops/lib/x86_586/l4v2 -L../../../../../lib/x86_586 -L/home/drops/lib/x86_586 -L../../../../../lib -L/home/drops/lib -T../../../../../lib/x86_586/main_stat.ld -llinuxemul -levents -llinuxnetdrv -ldde_linux -lomega0 -lio -ll4rm -lore_server-worker -lore_server -lore_notify -llist_alloc -lparsecmdline /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/libgcc.a -static -lgeneric_ts -ll4env -ll4rm -ldm_generic -ldm_mem -lthread -lsemaphore -llogserver_capsule -lnames -ll4util_root -ll4util -lsigma0 -lroot.o -ll4env -ll4env_err -ll4rm -ldm_generic -ldm_mem -lthread -lslab -ll4sys -nostdlib -Wl,--nostdlib -luc_c -luclibc_support -u mmap_anon -lc_be_simple_mem -lc_be_mmap -lc_be_mmap_util -lc_be_l4env_start_stop -lc_be_minimal_log_io -luc_be_simple_sleep -ll4env -llogserver_capsule -ll4rm -ldm_generic -ldm_mem -lthread -lgeneric_ts -luc_c /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/libgcc.a -luc_c -ll4sys -Ttext=0x01800000 -Wl,-gc-sections -Wl,--warn-common ../../../server/lib/net/OBJ-x86_586-l4v2/liblinuxnetdrv.a(e1000_main.o): In function `e1000_alloc_rx_buffers_ps': /home/sts/L4_full/l4/pkg/ore/server/lib/net/OBJ-x86_586-l4v2/../../../../server/include/linux_headers/linux/mm.h:454: undefined reference to `_alloc_pages' collect2: ld returned 1 exit status
I suppose I have to link something else? Any hints appreciated.
BTW is ORe an acronym for something? What does it stand for?
Stefan