From b711e0d0919e288cd2ad4dddc9d32a55e40afdea Mon Sep 17 00:00:00 2001 From: Michael Mueller Date: Mon, 7 Aug 2023 17:54:24 +0200 Subject: [PATCH] Example for a cell that voluntarily terminates after a period of time. --- repos/mml/src/app/volatile_cell/target.mk | 3 ++ .../src/app/volatile_cell/volatile_cell.cc | 35 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 repos/mml/src/app/volatile_cell/target.mk create mode 100644 repos/mml/src/app/volatile_cell/volatile_cell.cc diff --git a/repos/mml/src/app/volatile_cell/target.mk b/repos/mml/src/app/volatile_cell/target.mk new file mode 100644 index 0000000000..ec6dfc3aae --- /dev/null +++ b/repos/mml/src/app/volatile_cell/target.mk @@ -0,0 +1,3 @@ +TARGET = volatile_cell +SRC_CC = volatile_cell.cc +LIBS += base \ No newline at end of file diff --git a/repos/mml/src/app/volatile_cell/volatile_cell.cc b/repos/mml/src/app/volatile_cell/volatile_cell.cc new file mode 100644 index 0000000000..5f866d1cb4 --- /dev/null +++ b/repos/mml/src/app/volatile_cell/volatile_cell.cc @@ -0,0 +1,35 @@ +#include +#include +#include +#include + +namespace Hoitaja_test { + class Volatile_cell; +} + + +class Hoitaja_test::Volatile_cell +{ + private: + Genode::Env &_env; + Timer::Connection _timer{_env}; + + void _handle_timeout() + { + Genode::log("My time has come. Exiting ..."); + _env.parent().exit(0); + } + + Genode::Signal_handler _timeout_handler{ + _env.ep(), *this, &Volatile_cell::_handle_timeout}; + + public: + Volatile_cell(Genode::Env &env) : _env(env) + { + Genode::log("My affinity space is ", _env.cpu().affinity_space()); + _timer.sigh(_timeout_handler); + _timer.trigger_once(30 * 1000 * 1000); + } +}; + +void Component::construct(Genode::Env &env) { static Hoitaja_test::Volatile_cell cell(env); } \ No newline at end of file