diff --git a/repos/os/run/init_smp.run b/repos/os/run/init_smp.run new file mode 100644 index 000000000..1342ff057 --- /dev/null +++ b/repos/os/run/init_smp.run @@ -0,0 +1,110 @@ +build "core init test/bomb drivers/timer" + +set timeout 60 +set rounds 10 +set generations 3 +set children 7 +set sleep 600 +set demand [expr 1*1024*1024] + +set cpus 4 +set init_ram 256 + +if { [get_cmd_switch --autopilot] } { + + if {[have_include "power_on/qemu"]} { + puts "\nRun script does not support Qemu.\n" + exit 0 + } + + assert_spec nova + + # set specifically for our nightly test hardware */ + set cpus 8 + set children 3 +} + +create_boot_directory + +set config { +} + +append config " + " + +append config { + + + + + + + + + + + + + + + } + + +for { set i 0} { $i < ${cpus} } { incr i} { + + append config " + + + " + append config { + + + + + + + + + + + + + + + + + + + } + +append config " + " + +append config { + + + } +} + +append config { +} + +install_config $config + +build_boot_image "core ld.lib.so init bomb timer" + +append qemu_args " -m [expr 128 + $init_ram*$cpus] -nographic -smp $cpus" + + +if { [get_cmd_switch --autopilot] } { + + run_genode_until {bomb started} 20 + + for { set i 0} { $i < ${cpus} } { incr i} { + run_genode_until {\[init -\> init_[0-9] -\> bomb-master] Done\. Going to sleep} $timeout [output_spawn_id] + } + +} else { + run_genode_until forever +} diff --git a/repos/os/src/test/bomb/main.cc b/repos/os/src/test/bomb/main.cc index 907b5cec6..eede70052 100644 --- a/repos/os/src/test/bomb/main.cc +++ b/repos/os/src/test/bomb/main.cc @@ -218,8 +218,10 @@ struct Bomb ++round; /* master if we have a timer connection */ - if (round == rounds && timer.constructed()) + if (round == rounds && timer.constructed()) { log("Done. Going to sleep"); + return; + } construct_children(); } diff --git a/tool/autopilot.list b/tool/autopilot.list index d951437ca..dee8c2923 100644 --- a/tool/autopilot.list +++ b/tool/autopilot.list @@ -77,3 +77,4 @@ smartcard new_delete timeout nic_router +init_smp