Implement SchedulerService
This commit is contained in:
@ -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
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@ private:
|
||||
public:
|
||||
KeyEventManager(const KeyEventManager ©) = delete;
|
||||
|
||||
KeyEventManager() : log("KEvMan"), listeners(true) {}
|
||||
KeyEventManager() : log("KEvMan") {}
|
||||
|
||||
void init() {
|
||||
listeners.reserve();
|
||||
|
||||
Reference in New Issue
Block a user