Cucumber/include/Tier1/CScheduler.h

36 lines
805 B
C++

#ifndef __CSCHEDULER_H__
#define __CSCHEDULER_H__
#include "types.h"
#include "Tier1/CTask.h"
#include "Tier1/IScheduler.h"
#include "Tier1/CSemaphore.h"
extern "C" {
#include "Tier0/interrupts.h"
}
namespace cb {
typedef struct STaskQueueNode {
CTask *Task;
struct STaskQueueNode *Next;
} TTaskQueueNode;
class CScheduler {
private:
IScheduler *m_CurrentScheduler;
static bool TimerTick(u32 Extra);
public:
CScheduler(void);
static void Enable(void);
static void AddTask(CTask *Task);
static CTask *GetCurrentTask(void);
static void NextTask(void);
static void DispatchAvailableSemaphore(CSemaphore *Semaphore);
};
};
#endif