mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-25 00:11:07 +00:00
93605c2b15
Check that in every round really all threads are alive on all CPUs. It happened that only the first round was ok (all alive) and in the next rounds some were dead. Unfortunately the test claimed to be successful.
73 lines
1.6 KiB
Plaintext
73 lines
1.6 KiB
Plaintext
#
|
|
# \brief Test to start threads on all available CPUs
|
|
# \author Norman Feske
|
|
# \author Alexander Boettcher
|
|
#
|
|
|
|
if {[have_spec platform_pbxa9] || (![have_spec nova] && ![have_spec foc])} {
|
|
puts "Platform is unsupported."
|
|
exit 0
|
|
}
|
|
|
|
|
|
build "core init test/affinity"
|
|
|
|
create_boot_directory
|
|
|
|
install_config {
|
|
<config>
|
|
<parent-provides>
|
|
<service name="LOG"/>
|
|
<service name="CPU"/>
|
|
<service name="RM"/>
|
|
</parent-provides>
|
|
<default-route>
|
|
<any-service> <parent/> </any-service>
|
|
</default-route>
|
|
<start name="test-affinity">
|
|
<resource name="RAM" quantum="10M"/>
|
|
</start>
|
|
</config>
|
|
}
|
|
|
|
build_boot_image "core init test-affinity"
|
|
|
|
if {[is_qemu_available]} {
|
|
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" 90
|
|
|
|
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 {[is_qemu_available]} {
|
|
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
|