Added GetSchedulerTicks()

This commit is contained in:
Alex
2023-02-14 03:52:42 +02:00
parent a21c2063ae
commit 47a10df568
3 changed files with 10 additions and 4 deletions

View File

@ -445,6 +445,7 @@ namespace Tasking
return;
}
CPU::x64::writecr3({.raw = (uint64_t)KernelPageTable}); /* Restore kernel page table for safety reasons. */
uint64_t SchedTmpTicks = CPU::Counter();
CPUData *CurrentCPU = GetCurrentCPU();
schedbg("Scheduler called on CPU %d.", CurrentCPU->ID);
schedbg("%d: %ld%%", CurrentCPU->ID, GetUsage(CurrentCPU->ID));
@ -635,6 +636,7 @@ namespace Tasking
/* RealEnd->[Function Exit] */
RealEnd:
this->SchedulerTicks.Store(CPU::Counter() - SchedTmpTicks);
__sync_synchronize(); /* TODO: Is this really needed? */
}

View File

@ -221,7 +221,7 @@ namespace Tasking
void Task::WaitForProcess(PCB *pcb)
{
if (!pcb)
if (InvalidPCB(pcb))
return;
if (pcb->Status == TaskStatus::UnknownStatus)
return;
@ -232,7 +232,7 @@ namespace Tasking
void Task::WaitForThread(TCB *tcb)
{
if (!tcb)
if (InvalidTCB(tcb))
return;
if (tcb->Status == TaskStatus::UnknownStatus)
return;
@ -243,7 +243,7 @@ namespace Tasking
void Task::WaitForProcessStatus(PCB *pcb, TaskStatus status)
{
if (!pcb)
if (InvalidPCB(pcb))
return;
if (pcb->Status == TaskStatus::UnknownStatus)
return;
@ -254,7 +254,7 @@ namespace Tasking
void Task::WaitForThreadStatus(TCB *tcb, TaskStatus status)
{
if (!tcb)
if (InvalidTCB(tcb))
return;
if (tcb->Status == TaskStatus::UnknownStatus)
return;
@ -835,6 +835,7 @@ namespace Tasking
Task::~Task()
{
debug("Destructor called");
SmartCriticalSection(TaskingLock);
trace("Stopping tasking");
foreach (PCB *Process in ListProcess)