genode/repos/os/run/bomb.run
Norman Feske c7b739cc61 bomb.run: define resource preservation for init
This patch increases init's preserved RAM and capability quota to
account for a current limitation of init with respect to the creation of
sessions to parent services:

In contrast to regular routed services, sessions to parent services are
created via 'Env::session'. The implementation of 'Env::session'
automatically upgrades session quotas on demand, which is the desired
behavior for regular 'Connection' objects. However, for sessions
established on the behalf of init's children, we would need to reflect
the error condition to the child instead of resolving it locally within
init (by subsidizing the session with init's quota). This patch leaves
this issue unresolved but fixes the symptom for the bomb test. It is
meant as an interim solution until the handling of parent sessions is
revised.
2017-06-29 11:59:53 +02:00

65 lines
1.6 KiB
Plaintext

build "core init test/bomb drivers/timer"
set timeout 240
set rounds 20
set generations 6
set children 2
set sleep 1500
set demand [expr 1*1024*1024]
if {[have_include "power_on/qemu"]} {
append qemu_args "-nographic "
} else {
# foc is really slow on native hardware executing this test - limit rounds
if {[have_spec foc]} {
if {[have_spec x86_32]} { set rounds 6 }
if {[have_spec x86_64]} { set rounds 6 }
}
}
# prevent hitting the socket-descriptor limit on Linux
if {[have_spec linux]} { set generations 4 }
set config {
<config prio_levels="2">
<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>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<resource name="RAM" preserve="2M"/>
<resource name="CAP" preserve="100"/>
<start name="timer" caps="100">
<resource name="CPU" quantum="10"/>
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
</start>
<start name="bomb-master" priority="-1" caps="100000">
<binary name="bomb"/>
<resource name="CPU" quantum="90"/>
<resource name="RAM" quantum="2G"/>}
append config "
<config rounds=\"$rounds\" generations=\"$generations\"
children=\"$children\" sleep=\"$sleep\" demand=\"$demand\"/>"
append config {
</start>
</config>}
create_boot_directory
install_config $config
build_boot_image "core ld.lib.so init bomb timer"
run_genode_until {.*Done\. Going to sleep.*} $timeout