diff --git a/src/mx/tasking/worker.cpp b/src/mx/tasking/worker.cpp index d49cf61..a851e8c 100644 --- a/src/mx/tasking/worker.cpp +++ b/src/mx/tasking/worker.cpp @@ -4,8 +4,14 @@ #include "task.h" #include #include +#include #include #include +#include +#include +#include +#include +#include using namespace mx::tasking; @@ -21,6 +27,13 @@ Worker::Worker(const std::uint16_t id, const std::uint16_t target_core_id, const void Worker::execute() { + { + Genode::Thread *self = Genode::Thread::myself(); + Genode::Affinity::Location loc = system::Environment::location(_target_core_id); + + self->pin(loc); + } + while (this->_is_running == false) { system::builtin::pause(); @@ -31,6 +44,8 @@ void Worker::execute() assert(this->_target_core_id == core_id && "Worker not pinned to correct core."); const auto channel_id = this->_channel.id(); + + while (this->_is_running) { if constexpr (config::memory_reclamation() == config::UpdateEpochPeriodically)