From 20b97ea7c0dbbdc13800e12ff5c86c00c4a342ec Mon Sep 17 00:00:00 2001 From: aqua Date: Fri, 8 Mar 2024 17:24:49 +0200 Subject: Bazel build --- kernel/sched/roundrobin.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 kernel/sched/roundrobin.cpp (limited to 'kernel/sched/roundrobin.cpp') diff --git a/kernel/sched/roundrobin.cpp b/kernel/sched/roundrobin.cpp new file mode 100644 index 0000000..c3d6cb6 --- /dev/null +++ b/kernel/sched/roundrobin.cpp @@ -0,0 +1,21 @@ +#include "../sched.hpp" + +/// Each task is run for a time quantum or the remainder of its cpu burst +Task * +RoundRobinQueue::next(int slice) +{ + if (head == nullptr) return nullptr; + if (head->node->burst <= 0) { + delete head->node; + remove(head->node); + return next(slice); + } + + auto *it = head; + it->node->burst -= slice; + if (head->next) head = head->next; + it->next = nullptr; + tail->next = it; + tail = it; + return it->node; +} -- cgit v1.2.1