genode/repos/gems/run/cpu_sampler.run
Norman Feske bf62d6b896 Move timer from os to base repository
Since the timer and timeout handling is part of the base library (the
dynamic linker), it belongs to the base repository.

Besides moving the timer and its related infrastructure (alarm, timeout
libs, tests) to the base repository, this patch also moves the timer
from the 'drivers' subdirectory directly to 'src' and disamibuates the
timer's build locations for the various kernels. Otherwise the different
timer implementations could interfere with each other when using one
build directory with multiple kernels.

Note that this patch changes the include paths for the former os/timer,
os/alarm.h, os/duration.h, and os/timed_semaphore.h to base/.

Issue 
2019-01-14 12:33:57 +01:00

92 lines
2.1 KiB
Plaintext

if { ![have_spec foc] && ![have_spec hw] && ![have_spec nova] &&
![have_spec okl4] && ![have_spec sel4] } {
puts "Run script is not supported on this platform"
exit 0
}
set build_components {
core init timer
server/cpu_sampler
test/cpu_sampler
}
if {[have_spec foc] || [have_spec nova]} {
lappend build_components lib/cpu_sampler_platform-$::env(KERNEL)
} else {
lappend build_components lib/cpu_sampler_platform-generic
}
build $build_components
create_boot_directory
install_config {
<config>
<parent-provides>
<service name="CPU"/>
<service name="IO_PORT"/>
<service name="IO_MEM"/>
<service name="IRQ"/>
<service name="LOG"/>
<service name="PD"/>
<service name="ROM"/>
</parent-provides>
<default-route>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<default caps="100"/>
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides>
<service name="Timer"/>
</provides>
</start>
<start name="cpu_sampler">
<resource name="RAM" quantum="4M"/>
<provides>
<service name="CPU"/>
</provides>
<config sample_interval_ms="100" sample_duration_s="1">
<policy label="test-cpu_sampler -> ep" />
</config>
</start>
<start name="test-cpu_sampler">
<resource name="RAM" quantum="1M"/>
<config ld_verbose="yes"/>
<route>
<service name="CPU"> <child name="cpu_sampler"/> </service>
<any-service> <parent/> </any-service>
</route>
</start>
</config>
}
#
# Boot modules
#
# evaluated by the run tool
proc binary_name_cpu_sampler_platform_lib_so { } {
if {[have_spec foc] || [have_spec nova]} {
return "cpu_sampler_platform-$::env(KERNEL).lib.so"
} else {
return "cpu_sampler_platform-generic.lib.so"
}
}
build_boot_image {
core ld.lib.so init timer
cpu_sampler cpu_sampler_platform.lib.so
test-cpu_sampler
}
append qemu_args "-nographic "
set match_string "Test started. func: 0x(\[0-9a-f\]+).*\n"
run_genode_until "$match_string" 20
regexp $match_string $output all func
run_genode_until "\\\[init -> cpu_sampler -> samples -> test-cpu_sampler -> ep\\\.1] \[0\]*$func" 2 [output_spawn_id]