# # \brief Test to start threads on all available CPUs # \author Norman Feske # \author Alexander Boettcher # if { ![have_spec hw_arndale] && ![have_spec foc_x86_32] && ![have_spec foc_x86_64] && ![have_spec foc_vea9x4] && ![have_spec foc_panda] && ![have_spec foc_arndale] && ![have_spec nova] } { puts "Platform is unsupported." exit 0 } set build_components { core init test/affinity } lappend_if [have_spec platform_arndale] build_components drivers/platform build $build_components create_boot_directory set config { } append_if [have_spec platform_arndale] config { } append config { } install_config $config set boot_modules { core init test-affinity } lappend_if [have_spec platform_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