typedef struct sThread
{
+ // --- threads.c's
struct sThread *Next; //!< Next thread in list
- int IsLocked; //!< Thread's spinlock
+ tSpinlock IsLocked; //!< Thread's spinlock
int Status; //!< Thread Status
int RetStatus; //!< Return Status
Uint UID, GID; //!< User and Group
char *ThreadName; //!< Name of thread
- tVAddr KernelStack; //!< Kernel Stack Base
+ // --- arch/proc.c's responsibility
+ //! Kernel Stack Base
+ tVAddr KernelStack;
//! Memory Manager State
tMemoryState MemState;
//! State on task switch
tTaskState SavedState;
+ // --- threads.c's
int CurSignal; //!< Signal currently being handled (0 for none)
tVAddr SignalHandlers[NSIG]; //!< Signal Handler List
tTaskState SignalState; //!< Saved state for signal handler
- tMsg *Messages; //!< Message Queue
+ tMsg * volatile Messages; //!< Message Queue
tMsg *LastMessage; //!< Last Message (speeds up insertion)
int Quantum, Remaining; //!< Quantum Size and remaining timesteps
extern tThread *Proc_GetCurThread();
extern tThread *Threads_GetThread(Uint TID);
extern void Threads_Wake(tThread *Thread);
+extern void Threads_AddActive(tThread *Thread);
#endif