diff --git a/include/scheduler.hpp b/include/scheduler.hpp index b0ccb26..1bf63a2 100644 --- a/include/scheduler.hpp +++ b/include/scheduler.hpp @@ -32,6 +32,9 @@ enum class TaskState { }; +std::string_view get_state_string(TaskState); + + class Task { friend class Scheduler; @@ -84,6 +87,9 @@ public: TaskState get_state() const { return state; } + std::string_view get_state_string() const { + return ::CoSched::get_state_string(state); + } // Returns the scheduler that is scheduling this task Scheduler& get_scheduler() const { diff --git a/scheduler.cpp b/scheduler.cpp index ae29ae2..0e8140d 100644 --- a/scheduler.cpp +++ b/scheduler.cpp @@ -6,6 +6,17 @@ namespace CoSched { +std::string_view get_state_string(TaskState state) { + switch (state) { + case TaskState::dead: return "dead"; + case TaskState::running: return "running"; + case TaskState::sleeping: return "sleeping"; + case TaskState::terminating: return "terminating"; + default: return "invalid"; + } +} + + void CoSched::Task::kill() { get_scheduler().delete_task(this); }