Add simple timer test sleeper

This commit is contained in:
Alexander Weidinger
2019-05-03 08:32:15 +02:00
parent e26a3c6846
commit bcb61d16eb
3 changed files with 98 additions and 0 deletions

45
run/sleeper.run Normal file
View File

@@ -0,0 +1,45 @@
#
# Build
#
build { core init drivers/timer app/sleeper }
create_boot_directory
#
# Generate config
#
install_config {
<config>
<parent-provides>
<service name="LOG"/>
<service name="PD"/>
<service name="CPU"/>
<service name="ROM"/>
<service name="IO_MEM"/>
<service name="IRQ"/>
</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="sleeper">
<resource name="RAM" quantum="1M"/>
</start>
</config>}
#
# Boot image
#
build_boot_image { core ld.lib.so init sleeper timer }
append qemu_args " -nographic "
run_genode_until forever
run_genode_until "Waking up...*\n" 10

50
src/app/sleeper/main.cc Normal file
View File

@@ -0,0 +1,50 @@
#include <base/component.h>
#include <base/log.h>
#include <timer_session/connection.h>
namespace Sleeper {
struct Main;
struct Test;
}
struct Sleeper::Test
{
Genode::Env &env;
Timer::Connection timer { env };
Genode::Signal_transmitter done;
Test(Genode::Env &env, Genode::Signal_context_capability done) : env(env), done(done)
{
Genode::log("Going to sleep...");
timer.msleep(5000);
Genode::log("Waking up...");
}
};
struct Sleeper::Main
{
Genode::Env &_env;
Genode::Constructible<Sleeper::Test> test_1 { };
Genode::Signal_handler<Main> test_1_done { _env.ep(), *this, &Main::handle_test_1_done };
void handle_test_1_done()
{
test_1.destruct();
}
Main(Genode::Env &env) : _env(env)
{
Genode::log("Hello World from sleeper!");
test_1.construct(env, test_1_done);
Genode::log("yeah?");
}
};
void Component::construct(Genode::Env &env)
{
static Sleeper::Main main(env);
}

View File

@@ -0,0 +1,3 @@
TARGET = sleeper
SRC_CC = main.cc
LIBS = base