From bcb61d16eb89bb851cd669bcb37173c6c391098f Mon Sep 17 00:00:00 2001 From: Alexander Weidinger Date: Fri, 3 May 2019 08:32:15 +0200 Subject: [PATCH] Add simple timer test sleeper --- run/sleeper.run | 45 +++++++++++++++++++++++++++++++++++ src/app/sleeper/main.cc | 50 +++++++++++++++++++++++++++++++++++++++ src/app/sleeper/target.mk | 3 +++ 3 files changed, 98 insertions(+) create mode 100644 run/sleeper.run create mode 100644 src/app/sleeper/main.cc create mode 100644 src/app/sleeper/target.mk diff --git a/run/sleeper.run b/run/sleeper.run new file mode 100644 index 0000000..ae865d4 --- /dev/null +++ b/run/sleeper.run @@ -0,0 +1,45 @@ +# +# Build +# + +build { core init drivers/timer app/sleeper } + +create_boot_directory + +# +# Generate config +# + +install_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 diff --git a/src/app/sleeper/main.cc b/src/app/sleeper/main.cc new file mode 100644 index 0000000..496f0a4 --- /dev/null +++ b/src/app/sleeper/main.cc @@ -0,0 +1,50 @@ +#include +#include + +#include + +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 test_1 { }; + Genode::Signal_handler
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); +} \ No newline at end of file diff --git a/src/app/sleeper/target.mk b/src/app/sleeper/target.mk new file mode 100644 index 0000000..da3e78f --- /dev/null +++ b/src/app/sleeper/target.mk @@ -0,0 +1,3 @@ +TARGET = sleeper +SRC_CC = main.cc +LIBS = base