1

Implement SchedulerService

This commit is contained in:
2022-12-08 17:13:34 +01:00
parent a781e094ec
commit 312b844916
30 changed files with 142 additions and 75 deletions

View File

@ -1,5 +1,7 @@
#include "kernel/event/KeyEventListener.h"
#include "kernel/system/Globals.h"
#include "kernel/service/SchedulerService.h"
#include "kernel/system/System.h"
namespace Kernel {
@ -9,7 +11,8 @@ void KeyEventListener::trigger(char c) {
char KeyEventListener::waitForKeyEvent() const {
Logger::instance() << DEBUG << "KEvLis:: Thread with id: " << tid << " waiting for key event" << endl;
scheduler.block();
auto &schedulerService = Kernel::System::getService<Kernel::SchedulerService>();
schedulerService.block();
return lastChar; // This is only executed after thread is woken up by manager
}

View File

@ -1,5 +1,7 @@
#include "KeyEventManager.h"
#include "kernel/system/Globals.h"
#include "kernel/service/SchedulerService.h"
#include "kernel/system/System.h"
namespace Kernel {
@ -20,10 +22,11 @@ void KeyEventManager::unsubscribe(KeyEventListener &unsub) {
void KeyEventManager::broadcast(char c) {
log.trace() << "Beginning Broadcast" << endl;
auto &schedulerService = Kernel::System::getService<Kernel::SchedulerService>();
for (KeyEventListener *listener: listeners) {
log.trace() << "Broadcasting " << c << " to Thread ID: " << dec << listener->tid << endl;
listener->trigger(c);
scheduler.deblock(listener->tid);
schedulerService.deblock(listener->tid);
}
}

View File

@ -19,7 +19,7 @@ private:
public:
KeyEventManager(const KeyEventManager &copy) = delete;
KeyEventManager() : log("KEvMan"), listeners(true) {}
KeyEventManager() : log("KEvMan") {}
void init() {
listeners.reserve();