Stefan, Are you sure we are expecting to be able to run this on genode-linux? For example, when we run the pci_drv we get an abort due to "no IO PORT support in Linux"????
I think we're missing something here.
Thanks Daniel
On 05/12/2011 02:50 PM, Daniel Waddington wrote:
Guess we need to add the template parameter to max, max<unsigned long>?
Daniel
On 05/12/2011 02:32 PM, Amadeo Cuadrado wrote:
Thanks Norman and Stefan.
While trying to run these examples with Linux instead of foc, I would like to report I get the following error when building the NIC driver:
Program drivers/gpxe_nic/gpxe_nic_drv COMPILE main.o .../genode/dde_gpxe/src/drivers/gpxe_nic/main.cc: In member function 'virtual Nic::Session_component* Nic::Root::_create_session(const char*)': .../genode/dde_gpxe/src/drivers/gpxe_nic/main.cc:187: error: no matching function for call to 'max(unsigned int, long unsigned int)'
Is this known?
Thanks, Amadeo
-----Original Message----- From: Norman Feske [mailto:norman.feske@...1...] Sent: Thursday, May 12, 2011 5:07 AM To: genode-main@lists.sourceforge.net Subject: Re: lwip examples
Hi Amadeo,
even though your current issue may be related to a configuration problem (e.g., the creation of a tap device before starting qemu, configuring the bridge device), I want to mention that networking support is not expected to work on the current Fiasco.OC version. There are two known limitations (documented at 'http://genode.org/documentation/release-notes/11.02#section-7') that currently stand in the way. One is the lacking support for dynamic loading of the lwIP library (ok, I see that you are using a work-around for this limitation via linking statically). But more importantly, the Fiasco.OC version does not support Genode's signalling API yet. This API, however, is used by the data-flow protocol used between lwIP and the NIC driver (Genode's packet-stream interface).
That said, both limitations will be addressed by the upcoming Genode version to be released later this month. In the meanwhile, if you want to get hands-on-experience with using lwIP on Genode, I recommend walking the currently well-explored path of using one of the other kernels. In your case, I would start with Linux and eventually give OKL4 a try. From your test application's perspective, this should not make any difference.
For further reference about using lwIP on Genode/Linux with bridging, you may take a look at the steps described here:
http://www.genode.org/documentation/release-notes/10.05#section-35
Cheers Norman
On 05/12/2011 11:21 AM, Stefan Kalkowski wrote:
Hello Amadeo,
when looking at your output it seems to me that at least the pci-driver, and/or timer services are missing in your configuration (normally they would produce some output), but gPXE's nic-driver depends on them, and won't run without these services. As long as the nic-driver isn't available your lwip-application will block while initializing the lwip-stack.
Please, verify that init's configuration contains at least these items:
<start name="timer"> <resource name="RAM" quantum="512K"/> <provides> <service name="Timer"/> </provides> </start>
<start name="pci_drv"> <resource name="RAM" quantum="512K"/> <provides> <service name="PCI"/> </provides> </start>
<start name="gpxe_nic_drv"> <resource name="RAM" quantum="2M"/> <provides> <service name="Nic"/> </provides> </start>
If this doesn't help you, please post your configuration file.
Regards Stefan
On 05/12/2011 12:39 AM, Amadeo Cuadrado wrote:
Thanks Stefan for your answer. Yes, I am building lwip and libc statically.
I am using qemu to run the .iso, basically:
qemu -cdrom 'myiso.iso' -net nic,model=pcnet
I have also used VBox, with same luck. This is the Nic driver I am using:
<start name="gpxe_nic_drv"> <resource name="RAM" quantum="4M"/> <provides><service name="Nic"/></provides> </start>
This is the output from the serial port:
int main(): --- create local services --- int main(): --- start init --- int main(): transferred 431 MB to init int main(): --- init created, waiting for exit condition --- [init -> test-lwip_loop] void init_loopback(): init_loopback() [init -> test-lwip_loop] Libc::Lwip_plugin::Lwip_plugin(): using the lwIP libc plugin [init -> test-lwip_loop] void init_libc_lwip(): init_libc_lwip() [init -> test-timer] --- timer test --- [init -> test-lwip_loop] int server(): Create new socket ... [init -> test-lwip_loop] virtual void Client::entry(): Create new socket ...
And then it just stops there.
What do you mean exactly about the signaling framework? Are these examples supposed to not work yet?
Thanks, Amadeo
-----Original Message----- From: Stefan Kalkowski [mailto:stefan.kalkowski@...1...] Sent: Friday, May 06, 2011 1:16 PM To: genode-main@lists.sourceforge.net Subject: Re: lwip examples
Hello Amadeo,
thank you for pointing us out to the build-problem in the linux_drivers repository. We immediately fixed that problem. You can checkout the fix from our subversion repository.
With respect to your problems related to lwip. I assume that you compiled lwip and libc as static libraries, as ldso and shared libraries aren't supported for Genode/Fiasco.OC yet?
Without knowing much details I would guess it's a configuration issue. Could you please provide some information with respect to your test-environment, like what hardware or VM you use, especially which NIC you've enabled? Moreover, the init-configuration and the complete serial output would be helpful.
But even when we fix your (probably configuration-)issues it's unlikely that the NIC service will work out of the box now, because it's based on the signalling framework, which isn't supported yet. But we work on that, and it will be supported at the latest by the upcoming release. Nevertheless, the mentioned problems have nothing to do with a non-functional signalling framework.
Regards Stefan
On 05/06/2011 01:56 AM, Amadeo Cuadrado wrote:
Hello,
I have not been able to run any of the lwip examples (I am using 32 bits): loopback hangs in socket() call, and http_srv hangs in the lwip_nic_init() call. I am using the Nic driver from dde_gpxe, since I got compilation errors when building the linux_drivers:
.../genode/linux_drivers/src/linux26/arch/i386/lib/bitops.c: In function 'find_next_zero_bit':
.../genode/linux_drivers/include/linux26-x86/asm/bitops.h:283: error: can't find a register in class 'BREG' while reloading 'asm'
.../genode/linux_drivers/include/linux26-x86/asm/bitops.h:283: error: 'asm' operand has impossible constraints
Any clue what I could be missing here to make these examples work? Let me know if you need more info about my environment.
Thanks.
Amadeo
WhatsUp Gold - Download Free Network Management Software The most intuitive, comprehensive, and cost-effective network management toolset available today. Delivers lowest initial acquisition cost and overall TCO of any competing solution. http://p.sf.net/sfu/whatsupgold-sd
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main