aboutsummaryrefslogtreecommitdiff
path: root/engines/tony/sched.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tony/sched.h')
-rw-r--r--engines/tony/sched.h129
1 files changed, 0 insertions, 129 deletions
diff --git a/engines/tony/sched.h b/engines/tony/sched.h
index a9868edad0..f7dabd47ae 100644
--- a/engines/tony/sched.h
+++ b/engines/tony/sched.h
@@ -24,133 +24,4 @@
#ifndef TONY_SCHED_H
#define TONY_SCHED_H
-#include "common/list.h"
-#include "tony/coroutine.h"
-
-namespace Tony {
-
-// the size of process specific info
-#define PARAM_SIZE 32
-
-// the maximum number of processes
-#define NUM_PROCESS 100
-#define MAX_PROCESSES 100
-
-#define INFINITE 0xffffffff
-#define INVALID_PID_VALUE 0
-
-typedef void (*CORO_ADDR)(CoroContext &, const void *);
-
-/** process structure */
-struct PROCESS {
- PROCESS *pNext; ///< pointer to next process in active or free list
- PROCESS *pPrevious; ///< pointer to previous process in active or free list
-
- CoroContext state; ///< the state of the coroutine
- CORO_ADDR coroAddr; ///< the entry point of the coroutine
-
- int sleepTime; ///< number of scheduler cycles to sleep
- uint32 pid; ///< process ID
- bool waiting; ///< process is currently in a waiting state
- char param[PARAM_SIZE]; ///< process specific info
-};
-typedef PROCESS *PPROCESS;
-
-struct INT_CONTEXT;
-
-/** Event structure */
-struct EVENT {
- uint32 pid;
- bool manualReset;
- bool signalled;
-};
-
-/**
- * Create and manage "processes" (really coroutines).
- */
-class Scheduler {
-public:
- /** Pointer to a function of the form "void function(PPROCESS)" */
- typedef void (*VFPTRPP)(PROCESS *);
-
-private:
-
- /** list of all processes */
- PROCESS *processList;
-
- /** active process list - also saves scheduler state */
- PROCESS *active;
-
- /** pointer to free process list */
- PROCESS *pFreeProcesses;
-
- /** the currently active process */
- PROCESS *pCurrent;
-
- /** Auto-incrementing process Id */
- int pidCounter;
-
- /** Event list */
- Common::List<EVENT *> _events;
-
-#ifdef DEBUG
- // diagnostic process counters
- int numProcs;
- int maxProcs;
-
- void CheckStack();
-#endif
-
- /**
- * Called from killProcess() to enable other resources
- * a process may be allocated to be released.
- */
- VFPTRPP pRCfunction;
-
- PROCESS *getProcess(uint32 pid);
- EVENT *getEvent(uint32 pid);
-public:
-
- Scheduler();
- ~Scheduler();
-
- void reset();
-
- #ifdef DEBUG
- void printStats();
- #endif
-
- void schedule();
- void rescheduleAll();
- void reschedule(PPROCESS pReSchedProc = NULL);
- void giveWay(PPROCESS pReSchedProc = NULL);
- void waitForSingleObject(CORO_PARAM, int pid, uint32 duration, bool *expired = NULL);
- void waitForMultipleObjects(CORO_PARAM, int nCount, uint32 *pidList, bool bWaitAll,
- uint32 duration, bool *expired = NULL);
- void Scheduler::sleep(CORO_PARAM, uint32 duration);
-
- uint32 createProcess(CORO_ADDR coroAddr, const void *pParam, int sizeParam);
- uint32 createProcess(CORO_ADDR coroAddr, const void *pParam) {
- return createProcess(coroAddr, &pParam, sizeof(void *));
- }
- void killProcess(PROCESS *pKillProc);
-
- PROCESS *getCurrentProcess();
- int getCurrentPID() const;
- int killMatchingProcess(uint32 pidKill, int pidMask = -1);
-
- void setResourceCallback(VFPTRPP pFunc);
-
- /* Event methods */
- uint32 createEvent(bool bManualReset, bool bInitialState);
- void closeEvent(uint32 pidEvent);
- void setEvent(uint32 pidEvent);
- void resetEvent(uint32 pidEvent);
- void pulseEvent(uint32 pidEvent);
-};
-
-extern Scheduler *g_scheduler; // FIXME: Temporary global var, to be used until everything has been OOifyied
-
-} // End of namespace Tony
-
#endif // TONY_SCHED_H