Cucumber/include/Tier1/CRoundRobinScheduler.h

26 lines
750 B
C++

#ifndef __CROUNDROBINSCHEDULER_H__
#define __CROUNDROBINSCHEDULER_H__
#include "Tier1/IScheduler.h"
#include "Tier1/Util/CLinearList.h"
namespace cb {
class CRoundRobinScheduler : public IScheduler {
public:
void Enable(bool Enabled);
void AddTask(CTask *Task);
void NextTask(u32 edi, u32 esi, u32 ebp, u32 esp, u32 ebx, u32 edx, u32 ecx, u32 eax, u32 eip);
CTask *GetCurrentTask(void);
void SetSemaphoreAvailable(CSemaphore *Semaphore);
void PrioritizeTask(CTask *Task);
private:
CTask *m_CurrentTask;
CLinearList<CTask *> m_TaskQueue;
u32 m_iTaskQueuePosition;
CTask *m_PrioritizedTask;
};
};
#endif