build { app/pdf_view } create_boot_directory import_from_depot \ [depot_user]/pkg/[drivers_interactive_pkg] \ [depot_user]/pkg/motif_wm \ [depot_user]/src/[base_src] \ [depot_user]/src/init \ [depot_user]/src/nitpicker \ install_config { <config> <parent-provides> <service name="ROM"/> <service name="IRQ"/> <service name="IO_MEM"/> <service name="IO_PORT"/> <service name="PD"/> <service name="RM"/> <service name="CPU"/> <service name="LOG"/> </parent-provides> <default-route> <service name="Gui"> <child name="wm"/> </service> <any-service> <parent/> <any-child/> </any-service> </default-route> <default caps="100"/> <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start> <start name="drivers" caps="1500" managing_system="yes"> <resource name="RAM" quantum="64M"/> <binary name="init"/> <route> <service name="ROM" label="config"> <parent label="drivers.config"/> </service> <service name="Timer"> <child name="timer"/> </service> <service name="Capture"> <child name="nitpicker"/> </service> <service name="Event"> <child name="nitpicker"/> </service> <any-service> <parent/> </any-service> </route> </start> <start name="nitpicker"> <resource name="RAM" quantum="4M"/> <provides> <service name="Gui"/> <service name="Capture"/> <service name="Event"/> </provides> <config focus="rom"> <capture/> <event/> <domain name="pointer" layer="1" content="client" label="no" origin="pointer" /> <domain name="default" layer="2" content="client" label="no" hover="always"/> <policy label_prefix="pointer" domain="pointer"/> <default-policy domain="default"/> </config> </start> <start name="pointer"> <resource name="RAM" quantum="1M"/> <route> <service name="Gui"> <child name="nitpicker"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start> <start name="wm" caps="1000"> <resource name="RAM" quantum="32M"/> <binary name="init"/> <provides> <service name="Gui"/> <service name="Report"/> <service name="ROM"/> </provides> <route> <service name="ROM" label="config"> <parent label="wm.config"/> </service> <service name="Gui"> <child name="nitpicker"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start> <start name="pdf_view" caps="256"> <resource name="RAM" quantum="1G"/> <config> <vfs> <rom name="test.pdf" /> <dir name="dev"> <log/> </dir> </vfs> <libc stdout="/dev/log" stderr="/dev/log"/> </config> </start> </config> } # # Download test PDF file # if {![file exist bin/test.pdf]} { set pdf_url "http://genode-labs.com/publications/genode-fpga-graphics-2009.pdf" catch { exec wget $pdf_url -O bin/test.pdf } } if {![file exist bin/test.pdf]} { puts stderr "Could not download test PDF from '$pdf_url'" exit 1 } # # Pin the nitpicker focus to the window manager by providing a static focus ROM # set fd [open [run_dir]/genode/focus w] puts $fd "<focus label=\"wm -> focus\"/>" close $fd build_boot_image { libc.lib.so vfs.lib.so libm.lib.so openjpeg.lib.so freetype.lib.so libpng.lib.so zlib.lib.so jbig2dec.lib.so mupdf.lib.so jpeg.lib.so pdf_view test.pdf } append qemu_args " -m 800" run_genode_until forever