mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-25 16:31:06 +00:00
7a8e0e59af
Issue #2451
101 lines
2.3 KiB
Plaintext
101 lines
2.3 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] &&
|
|
![expr [have_spec x86_32] && [have_spec foc] ] &&
|
|
![expr [have_spec x86_64] && [have_spec foc] ] &&
|
|
![have_spec nova] &&
|
|
![have_spec sel4]
|
|
} {
|
|
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="ROM"/>
|
|
<service name="IO_MEM"/>
|
|
</parent-provides>
|
|
<default-route>
|
|
<any-service> <parent/> </any-service>
|
|
</default-route>
|
|
<default caps="100"/>}
|
|
|
|
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 -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
|