Initial commit

This commit is contained in:
Gericom
2025-11-22 17:21:45 +01:00
commit 5d6f67c612
517 changed files with 63025 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
#include "common.h"
#include "TaskQueue.h"
void TaskQueueBase::ThreadMain(TaskBase** queue, u32 queueLength)
{
while (true)
{
_idle = false;
u32 readPtr = _queueReadPtr;
while (readPtr != _queueWritePtr)
{
TaskBase* task = queue[readPtr];
if (readPtr == queueLength - 1)
readPtr = 0;
else
readPtr++;
_queueReadPtr = readPtr;
if (!task)
continue;
task->Execute();
if (task->GetDestroyWhenComplete())
{
// this will destroy the task
ReturnOwnership(task);
}
}
if (_endThreadWhenDone)
return;
_idle = true;
rtos_waitEvent(&_event, false, true);
}
}
void QueueTaskBase::Dispose()
{
if (_task)
{
TaskBase* task = _task;
_task = nullptr;
_taskQueue->ReturnOwnership(task);
_taskQueue = nullptr;
}
}