Hi Zachary,
On 03/04/2015 08:27 AM, Zachary wrote:
Hello,
Thanks again for your work.
I have applied your patch, and the instances run correctly.
However, there is only one linux widow showing on top-left of the screen. This is my config of nit_fb: ...
<start name="linux.1"> <binary name="nit_fb"/> <resource name="RAM" quantum="4M"/> <provides> <service name="Framebuffer"/> <service name="Input"/> </provides> <config xpos="1" ypos="0" width="510" height="382"/> </start> <start name="linux.2"> <binary name="nit_fb"/> <resource name="RAM" quantum="4M"/> <provides> <service name="Framebuffer"/> <service name="Input"/> </provides> <config xpos="513" ypos="0" width="510" height="382"/> </start> ...
It is very strange that the output of the log is different from my config: ... [init -> linux.2] using xywh=(513,513,510,382) [init -> linux.1] using xywh=(1,1,510,382) ...
Indeed this is strange. I have reproduced your issue. The problem is that since Genode 14.08 we have a completely new GUI architecture. Thereby, the framebuffer multiplexer "nitpicker" was minimized even more, excluding the mouse pointer and statusbar from it. Moreover, nitpicker now correlates its clients to configured domains.
In your example no domain is defined in nitpickers configuration at all. To me the observed outcome, which is both nit_fb frames are located at offset 0,0 of the screen, looks like unintended behavior. Either nitpicker should decline to visualize clients it cannot relate to a domain (and warn about it), or it should use a default domain even if this is not stated explicitly. Maybe Norman (author of the whole graphic stack) can add whether this is expected behavior?
Anyway, if you declare a default domain in nitpickers configuration, everything works fine. Just add the following snippet to the nitpicker start entry:
<config> <domain name="" layer="1"/> <policy label="" domain=""/> </config>
Nevertheless, even when adding above snippet to your configuration, you will miss a mouse-pointer and statusbar. If you want to have any of those, you might have a look at the "repos/os/run/demo.run" script, and copy out the configuration of "nitpicker", "report_rom", "status_bar", and "pointer" from there. This way you will gain a setup that is almost identically to the old nitpicker used within the ancient two_linux_panda.run script.
Regards Stefan
That is the whole run script:
assert_spec foc assert_spec platform_panda
# # Build # build { core init drivers/timer drivers/framebuffer drivers/sd_card drivers/usb drivers/gpio server/nic_bridge server/part_blk server/nitpicker server/nit_fb l4linux }
create_boot_directory
# # Config # set config {
<config prio_levels="2"> <parent-provides> <service name="ROM"/> <service name="RAM"/> <service name="IRQ"/> <service name="IO_MEM"/> <service name="IO_PORT"/> <service name="CAP"/> <service name="PD"/> <service name="RM"/> <service name="CPU"/> <service name="LOG"/> <service name="SIGNAL"/> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <start name="timer" priority="0"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start> <start name="fb_drv" priority="-1"> <resource name="RAM" quantum="4M"/> <provides><service name="Framebuffer"/></provides> </start> <start name="sd_card_drv" priority="0"> <resource name="RAM" quantum="4M"/> <provides><service name="Block"/></provides> </start> <start name="gpio_drv"> <resource name="RAM" quantum="4M"/> <provides><service name="Gpio"/></provides> <config/> </start> <start name="usb_drv" priority="-1"> <resource name="RAM" quantum="12M"/> <provides> <service name="Input"/> <service name="Nic"/> </provides> <config ehci="yes"> <hid/> <nic mac="02:00:00:00:01:01" /> </config> </start> <start name="part_blk"> <resource name="RAM" quantum="2M"/> <provides><service name="Block"/></provides> <config> <policy label="vmlinux.1 -> sda" partition="1" /> <policy label="vmlinux.2 -> sda" partition="2" /> </config> <route> <service name="Block"> <child name="sd_card_drv"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start> <start name="nic_bridge" priority="-1"> <resource name="RAM" quantum="2M"/> <provides><service name="Nic"/></provides> <route> <service name="Nic"> <child name="usb_drv"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start>
<start name="nitpicker" priority="-1"> <resource name="RAM" quantum="2M"/> <provides><service name="Nitpicker"/></provides> <route> <service name="Input"> <child name="usb_drv"/> </service> <service name="Framebuffer"> <child name="fb_drv"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start>
<start name="linux.1" priority="-1"> <binary name="nit_fb"/> <resource name="RAM" quantum="4M"/> <provides> <service name="Framebuffer"/> <service name="Input"/> </provides> <config xpos="1" ypos="0" width="510" height="382"/> </start> <start name="linux.2" priority="-1"> <binary name="nit_fb"/> <resource name="RAM" quantum="4M"/> <provides> <service name="Framebuffer"/> <service name="Input"/> </provides> <config xpos="513" ypos="0" width="510" height="382"/> </start>
<start name="vmlinux.1" priority="-1"> <binary name="l4linux"/> <resource name="RAM" quantum="96M"/> <config args="mem=254M l4x_rd=initrd.gz"> <block label="sda" /> </config> <route> <service name="Block"> <child name="part_blk"/> </service> <service name="Input"> <child name="linux.1"/> </service> <service name="Framebuffer"> <child name="linux.1"/> </service> <service name="Nic"> <child name="nic_bridge"/> </service> <any-service> <any-child/> <parent/> </any-service> </route> </start> <start name="vmlinux.2" priority="-1"> <binary name="l4linux"/> <resource name="RAM" quantum="96M"/> <config args="mem=254M l4x_rd=initrd.gz"> <block label="sda" /> </config> <route> <service name="Block"> <child name="part_blk"/> </service> <service name="Input"> <child name="linux.2"/> </service> <service name="Framebuffer"> <child name="linux.2"/> </service> <service name="Nic"> <child name="nic_bridge"/> </service> <any-service> <any-child/> <parent/> </any-service> </route> </start> </config>}
install_config $config
# # Boot modules # set boot_modules { core init timer nic_bridge nitpicker nit_fb part_blk l4linux initrd.gz fb_drv sd_card_drv gpio_drv usb_drv }
set uri "http://genode.org/files/l4linux/busybox-initrd-arm-20120710.gz" if {![file exists bin/initrd.gz]} { puts "Download initramfs ..." exec >& /dev/null wget -c -O bin/initrd.gz $uri } exec >& /dev/null wget -O bin/initrd.gz.md5 $uri.md5 cd bin exec md5sum -c initrd.gz.md5 cd ..
build_boot_image [join $boot_modules " "]
Is there somethig wrong with it?
Best, Zachary
Dive into the World of Parallel Programming The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main