Add simple timer test sleeper
This commit is contained in:
45
run/sleeper.run
Normal file
45
run/sleeper.run
Normal 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
50
src/app/sleeper/main.cc
Normal 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);
|
||||
}
|
||||
3
src/app/sleeper/target.mk
Normal file
3
src/app/sleeper/target.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
TARGET = sleeper
|
||||
SRC_CC = main.cc
|
||||
LIBS = base
|
||||
Reference in New Issue
Block a user