Hi all,

 

Genode beginner here. Been working with the platform for a few weeks trying to port a standard Linux application I wrote to Genode. My program uses sockets, both for sending and receiving, and judging from the code in tcp_terminal, the only way to do sockets is with libc rather than native Genode. I’ve been trying to implement the first few phases of my program in Genode, but when I run them, no log messages seem to appear and I can’t really tell if my program is doing anything. When I remove the libc relevant pieces of code and run my program through a base/Component, everything logs just fine. I created a small test program to find my mistake, so this piece of code does not log anything to qemu with a Linux target platform:

 

#include <libc/component.h>

#include <base/log.h>

 

void Libc::Component::construct(Libc::Env &) {

  Genode::log("Hello world");

}

 

For a run script, I’m using:

 

build { core init widget }

 

create_boot_directory

 

install_config {

<config verbose="yes">

                <parent-provides>

                                <service name="LOG"/>

                                <service name="PD"/>

                                <service name="CPU"/>

                                <service name="ROM"/>

                                <service name="IO_MEM"/>

                                <service name="IO_PORT"/>

                                <service name="RAM"/>

                </parent-provides>

                <default-route>

                                <any-service> <parent/> <any-child/> </any-service>

                </default-route>

                <default caps="50"/>

                <start name="widget">

                                <resource name="RAM" quantum="1M"/>

                </start>

</config>}

 

build_boot_image { core ld.lib.so init widget libc.lib.so vfs.lib.so libm.lib.so }

 

append qemu_args " -nographic "

 

run_genode_until "Hello world" 10

 

Any help would be greatly appreciated. Thanks!

 

-Connor