From df24131e48fb8c3bbd0087037a1f34e53f157dd9 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 27 Feb 2023 17:44:10 +0200 Subject: [PATCH] Added last task ticks counter --- Recovery/RecoveryMain.cpp | 2 +- Tasking/Scheduler.cpp | 1 + include/task.hpp | 2 ++ include/vector.hpp | 12 ++++++++++++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Recovery/RecoveryMain.cpp b/Recovery/RecoveryMain.cpp index 33a4a30..15ff7a1 100644 --- a/Recovery/RecoveryMain.cpp +++ b/Recovery/RecoveryMain.cpp @@ -57,7 +57,7 @@ namespace Recovery char TicksText[128]; while (true) { - sprintf(TicksText, "Scheduler Ticks: %ld", TaskManager->GetSchedulerTicks()); + sprintf(TicksText, "%016ld / %016ld - Sched. / Last Task Ticks", TaskManager->GetSchedulerTicks(), TaskManager->GetLastTaskTicks()); wdgRecWin->SetText(SchedLblHnd, TicksText); } } diff --git a/Tasking/Scheduler.cpp b/Tasking/Scheduler.cpp index c081185..b884b9b 100644 --- a/Tasking/Scheduler.cpp +++ b/Tasking/Scheduler.cpp @@ -458,6 +458,7 @@ namespace Tasking } CPU::x64::writecr3({.raw = (uint64_t)KernelPageTable}); /* Restore kernel page table for safety reasons. */ uint64_t SchedTmpTicks = CPU::Counter(); + this->LastTaskTicks = SchedTmpTicks - this->LastTaskTicks; CPUData *CurrentCPU = GetCurrentCPU(); schedbg("Scheduler called on CPU %d.", CurrentCPU->ID); schedbg("%d: %ld%%", CurrentCPU->ID, GetUsage(CurrentCPU->ID)); diff --git a/include/task.hpp b/include/task.hpp index 1e1914b..f36db2a 100644 --- a/include/task.hpp +++ b/include/task.hpp @@ -230,6 +230,7 @@ namespace Tasking PCB *IdleProcess = nullptr; TCB *IdleThread = nullptr; Atomic SchedulerTicks = 0; + Atomic LastTaskTicks = 0; bool InvalidPCB(PCB *pcb); bool InvalidTCB(TCB *tcb); @@ -263,6 +264,7 @@ namespace Tasking public: uint64_t GetSchedulerTicks() { return SchedulerTicks.Load(); } + uint64_t GetLastTaskTicks() { return LastTaskTicks.Load(); } Vector GetProcessList() { return ListProcess; } Security *GetSecurityManager() { return &SecurityManager; } void Panic() { StopScheduler = true; } diff --git a/include/vector.hpp b/include/vector.hpp index 250bc4c..417dc8c 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -86,6 +86,18 @@ public: VectorSize--; } + __no_instrument_function void remove(const T &Value) + { + for (size_t i = 0; i < VectorSize; i++) + { + if (VectorBuffer[i] == Value) + { + remove(i); + return; + } + } + } + __no_instrument_function size_t capacity() const { return VectorCapacity; } __no_instrument_function size_t size() const { return VectorSize; }