mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-26 17:01:07 +00:00
02d5efcf3f
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
101 lines
2.2 KiB
Plaintext
101 lines
2.2 KiB
Plaintext
#
|
|
# \brief Test to start threads on all available CPUs
|
|
# \author Norman Feske
|
|
# \author Alexander Boettcher
|
|
#
|
|
|
|
if {
|
|
![have_spec arndale] &&
|
|
![have_spec wand_quad] &&
|
|
![have_spec panda] &&
|
|
![have_spec x86_32] &&
|
|
![have_spec x86_64] &&
|
|
![have_spec foc] &&
|
|
![have_spec nova]
|
|
} {
|
|
puts "Platform is unsupported."
|
|
exit 0
|
|
}
|
|
|
|
|
|
set build_components { core init test/affinity }
|
|
|
|
lappend_if [have_spec arndale] build_components drivers/platform
|
|
|
|
build $build_components
|
|
|
|
create_boot_directory
|
|
|
|
set config {
|
|
<config>
|
|
<parent-provides>
|
|
<service name="LOG"/>
|
|
<service name="CPU"/>
|
|
<service name="PD"/>
|
|
<service name="RAM"/>
|
|
<service name="ROM"/>
|
|
<service name="IO_MEM"/>
|
|
</parent-provides>
|
|
<default-route>
|
|
<any-service> <parent/> </any-service>
|
|
</default-route> }
|
|
|
|
append_if [have_spec arndale] config {
|
|
<start name="platform_drv">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Regulator"/></provides>
|
|
</start> }
|
|
|
|
append config {
|
|
<start name="test-affinity">
|
|
<resource name="RAM" quantum="10M"/>
|
|
</start>
|
|
</config> }
|
|
|
|
install_config $config
|
|
|
|
set boot_modules { core ld.lib.so init test-affinity }
|
|
|
|
lappend_if [have_spec arndale] boot_modules platform_drv
|
|
|
|
build_boot_image $boot_modules
|
|
|
|
if {[have_include "power_on/qemu"]} {
|
|
set want_cpus_x 4
|
|
set want_cpus_y 1
|
|
set want_cpus_total [expr $want_cpus_x*$want_cpus_y]
|
|
set rounds "03"
|
|
append qemu_args "-nographic -m 64 -smp $want_cpus_total,cores=$want_cpus_total "
|
|
} else {
|
|
set rounds "10"
|
|
if {[have_spec x86]} { set rounds "40" }
|
|
}
|
|
|
|
run_genode_until "Round $rounds:.*\n" 120
|
|
|
|
set cpus [regexp -inline {Detected [0-9x]+ CPU[s\.]} $output]
|
|
set cpus [regexp -all -inline {[0-9]+} $cpus]
|
|
set cpus [expr [lindex $cpus 0] * [lindex $cpus 1]]
|
|
|
|
if {[have_include "power_on/qemu"]} {
|
|
if {$want_cpus_total != $cpus} {
|
|
puts "CPU count is not as expected: $want_cpus_total != $cpus"
|
|
exit 1;
|
|
}
|
|
}
|
|
|
|
set good_string {}
|
|
for {set r 0} {$r <= $rounds} {incr r} {
|
|
append good_string {[init -> test-affinity] Round }
|
|
append good_string [format "%02d" $r]
|
|
append good_string ":"
|
|
for {set i 0} {$i < $cpus} {incr i} {
|
|
append good_string " A"
|
|
}
|
|
append good_string "\n"
|
|
}
|
|
|
|
grep_output {\[init -\> test-affinity\] Round}
|
|
|
|
compare_output_to $good_string
|