# # \brief Test to start and call RPC entrypoint on all available CPUs # \author Norman Feske # \author Alexander Boettcher # if { ![have_spec hw_arndale] && ([have_spec platform_pbxa9] || (![have_spec nova] && ![have_spec foc])) } { puts "Platform is unsupported." exit 0 } build "core init test/mp_server" create_boot_directory install_config { } build_boot_image "core init test-server-mp" if {[have_include "power_on/qemu"]} { set want_cpus 2 append qemu_args " -nographic -m 64 -smp $want_cpus,cores=$want_cpus " } # run the test run_genode_until {\[init -\> test-server-mp\] done.*\n} 60 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 != $cpus} { puts "CPU count is not as expected: $want_cpus != $cpus" exit 1; } } # pay only attention to the output of init and its children grep_output {^\[init } unify_output {transfer cap [a-f0-9]+} "transfer cap UNIFIED" unify_output {yes - idx [a-f0-9]+} "yes - idx UNIFIED" unify_output {\- received cap [a-f0-9]+} "- received cap UNIFIED" set good_string { [init -> test-server-mp] --- test-mp_server started --- [init -> test-server-mp] Detected } append good_string "$cpus" append good_string "x1 CPUs.\n" for {set r 0} {$r < $cpus} {incr r} { append good_string {[init -> test-server-mp] call server on CPU } append good_string "$r\n" append good_string {[init -> test-server-mp] function test_untyped: got value } append good_string "$r\n" } for {set r 0} {$r < $cpus} {incr r} { append good_string {[init -> test-server-mp] call server on CPU } append good_string "$r - transfer cap UNIFIED\n" append good_string {[init -> test-server-mp] function test_cap: capability is valid ? yes - idx UNIFIED} append good_string "\n" } for {set r 0} {$r < $cpus} {incr r} { append good_string {[init -> test-server-mp] call server on CPU } append good_string "$r - transfer cap UNIFIED\n" append good_string {[init -> test-server-mp] function test_cap_reply: capability is valid ? yes - idx UNIFIED} append good_string "\n" append good_string {[init -> test-server-mp] got from server on CPU } append good_string "$r - received cap UNIFIED\n" } append good_string {[init -> test-server-mp] done} compare_output_to $good_string