genode/repos/os/run/tar_rom.run
Norman Feske 02d5efcf3f init: apply routing to environment sessions
The init component used to create the CPU/RAM/PD/ROM sessions (the child
environment) for its children by issuing session requests to its parent,
which is typically core. This policy was hard-wired. This patch enables
the routing of the environment sessions of the children of init
according to the configured routing policy.

Because there is no hard-wired policy regarding the environment sessions
anymore, routes to respective services must be explicitly declared in
the init configuration. For this reason, the patch adjusts several run
scripts in this respect.

This patch removes the outdated '<if-args>' special handling of session
labels. The '<if-args>' feature will eventually be removed completely
(ref #2250)

Issue #2197
Issue #2215
Issue #2233
Issue #2250
2017-01-31 12:01:11 +01:00

85 lines
2.3 KiB
Plaintext

#
# \brief Test for 'tar_rom' service
# \author Norman Feske
# \date 2010-09-07
#
# The test spawns a sub init, which uses a 'tar_rom' instance
# rather than core's ROM service. The 'tar_rom' service manages
# a TAR archive containing the binary of the 'test-timer' program.
# The nested init instance tries to start this program. The
# test succeeds when the test-timer program prints its first
# line of LOG output.
#
#
# On Linux, programs can be executed only if present as a file on the Linux
# file system ('execve' takes a file name as argument). Data extracted via
# 'tar_rom' is not represented as file. Hence, it cannot be executed.
#
if {[have_spec linux]} { puts "Run script does not support Linux"; exit 0 }
build "core init drivers/timer test/timer server/tar_rom"
create_boot_directory
install_config {
<config>
<parent-provides>
<service name="ROM"/>
<service name="RAM"/>
<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>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
</start>
<start name="tar_rom">
<resource name="RAM" quantum="6M"/>
<provides><service name="ROM"/></provides>
<config>
<archive name="archive.tar"/>
</config>
</start>
<start name="init">
<resource name="RAM" quantum="2M"/>
<config verbose="yes">
<parent-provides>
<service name="ROM"/>
<service name="CPU"/>
<service name="PD"/>
<service name="RAM"/>
<service name="LOG"/>
<service name="Timer"/>
</parent-provides>
<start name="test-timer">
<resource name="RAM" quantum="1M"/>
<route> <any-service> <parent/> </any-service> </route>
</start>
</config>
<route>
<service name="ROM" label="test-timer"> <child name="tar_rom"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>
}
exec sh -c "cd bin; tar cfh archive.tar test-timer"
build_boot_image "core ld.lib.so init timer tar_rom archive.tar"
append qemu_args "-nographic -m 96"
run_genode_until "--- timer test ---" 10
exec rm bin/archive.tar