Cleanup SchedulerService.h
This commit is contained in:
@ -5,6 +5,7 @@
|
|||||||
#include "lib/memory/UniquePointer.h"
|
#include "lib/memory/UniquePointer.h"
|
||||||
#include "kernel/process/Thread.h"
|
#include "kernel/process/Thread.h"
|
||||||
#include "kernel/process/Scheduler.h"
|
#include "kernel/process/Scheduler.h"
|
||||||
|
#include "lib/util/RestrictedConstructors.h"
|
||||||
|
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
|
|
||||||
@ -18,9 +19,11 @@ public:
|
|||||||
static const constexpr uint8_t ID = Service::SCHEDULER;
|
static const constexpr uint8_t ID = Service::SCHEDULER;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SchedulerService() = default;
|
MakeDefault(SchedulerService)
|
||||||
|
|
||||||
// TODO: Rest of constructors
|
MakeUncopyable(SchedulerService)
|
||||||
|
|
||||||
|
MakeUnmovable(SchedulerService)
|
||||||
|
|
||||||
// Helper that directly constructs the thread, then readys it
|
// Helper that directly constructs the thread, then readys it
|
||||||
template<typename T, typename... Args>
|
template<typename T, typename... Args>
|
||||||
@ -38,6 +41,11 @@ public:
|
|||||||
*/
|
*/
|
||||||
void startScheduling();
|
void startScheduling();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the thread id of the currently running thread.
|
||||||
|
*
|
||||||
|
* @return The id of the active thread
|
||||||
|
*/
|
||||||
[[nodiscard]] uint16_t active() const;
|
[[nodiscard]] uint16_t active() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,14 +53,30 @@ public:
|
|||||||
*/
|
*/
|
||||||
void yield();
|
void yield();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move a thread to from the schedulers ready queue to its block queue.
|
||||||
|
*/
|
||||||
void block();
|
void block();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move a thread from the schedulers block queue to its ready queue.
|
||||||
|
*
|
||||||
|
* @param tid The thread to unblock
|
||||||
|
*/
|
||||||
void deblock(uint16_t tid);
|
void deblock(uint16_t tid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exit a thread.
|
||||||
|
*/
|
||||||
void exit();
|
void exit();
|
||||||
|
|
||||||
void suicide(uint16_t tid); // TODO: Remove
|
void suicide(uint16_t tid); // TODO: Remove
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forcefully exit a thread.
|
||||||
|
*
|
||||||
|
* @param tid The thread to kill
|
||||||
|
*/
|
||||||
void kill(uint16_t tid);
|
void kill(uint16_t tid);
|
||||||
|
|
||||||
// TODO: Thread that cleans up exited threads
|
// TODO: Thread that cleans up exited threads
|
||||||
|
Reference in New Issue
Block a user