struct sThread *GlobalPrev; //!< Previous thread in global list
tShortSpinlock IsLocked; //!< Thread's spinlock
volatile int Status; //!< Thread Status
struct sThread *GlobalPrev; //!< Previous thread in global list
tShortSpinlock IsLocked; //!< Thread's spinlock
volatile int Status; //!< Thread Status
tMsg *LastMessage; //!< Last Message (speeds up insertion)
int Quantum, Remaining; //!< Quantum Size and remaining timesteps
tMsg *LastMessage; //!< Last Message (speeds up insertion)
int Quantum, Remaining; //!< Quantum Size and remaining timesteps
THREAD_STAT_NULL, // Invalid process
THREAD_STAT_ACTIVE, // Running and schedulable process
THREAD_STAT_SLEEPING, // Message Sleep
THREAD_STAT_NULL, // Invalid process
THREAD_STAT_ACTIVE, // Running and schedulable process
THREAD_STAT_SLEEPING, // Message Sleep
- THREAD_STAT_OFFSLEEP, // Mutex Sleep (or waiting on a thread)
- THREAD_STAT_WAITING, // ???
+ THREAD_STAT_MUTEXSLEEP, // Mutex Sleep
+ THREAD_STAT_WAITING, // ??? (Waiting for a thread)
THREAD_STAT_PREINIT, // Being created
THREAD_STAT_ZOMBIE, // Died, just not removed
THREAD_STAT_DEAD // Why do we care about these???
THREAD_STAT_PREINIT, // Being created
THREAD_STAT_ZOMBIE, // Died, just not removed
THREAD_STAT_DEAD // Why do we care about these???
extern int Threads_Wake(tThread *Thread);
extern void Threads_AddActive(tThread *Thread);
extern tThread *Threads_GetNextToRun(int CPU, tThread *Last);
extern int Threads_Wake(tThread *Thread);
extern void Threads_AddActive(tThread *Thread);
extern tThread *Threads_GetNextToRun(int CPU, tThread *Last);