X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Finclude%2Fthreads.h;h=2b8f9fba3785164a63a765705d7dcafae2a0dc4c;hb=05a77640b59762adb12a71927ea4e003fd033102;hp=20d21f4fbe0e555fbd5d1fee2cc2ee71d1cc3d05;hpb=3ac178949c57e5cbd0cfe59915da9840ecefa68e;p=tpg%2Facess2.git diff --git a/Kernel/include/threads.h b/Kernel/include/threads.h index 20d21f4f..2b8f9fba 100644 --- a/Kernel/include/threads.h +++ b/Kernel/include/threads.h @@ -34,6 +34,7 @@ typedef struct sThread struct sThread *GlobalPrev; //!< Previous thread in global list tShortSpinlock IsLocked; //!< Thread's spinlock volatile int Status; //!< Thread Status + void *WaitPointer; //!< What (Mutex/Thread/other) is the thread waiting on int RetStatus; //!< Return Status Uint TID; //!< Thread ID @@ -60,7 +61,7 @@ typedef struct sThread tMsg *LastMessage; //!< Last Message (speeds up insertion) int Quantum, Remaining; //!< Quantum Size and remaining timesteps - int NumTickets; //!< Priority - Chance of gaining CPU + int Priority; //!< Priority - 0: Realtime, higher means less time Uint Config[NUM_CFG_ENTRIES]; //!< Per-process configuration @@ -72,11 +73,23 @@ enum { 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_ZOMBIE, // Died/Killed, but parent not informed + THREAD_STAT_DEAD, // Awaiting burial (free) + THREAD_STAT_BURIED // If it's still on the list here, something's wrong +}; +static const char * const casTHREAD_STAT[] = { + "THREAD_STAT_NULL", + "THREAD_STAT_ACTIVE", + "THREAD_STAT_SLEEPING", + "THREAD_STAT_MUTEXSLEEP", + "THREAD_STAT_WAITING", + "THREAD_STAT_PREINIT", + "THREAD_STAT_ZOMBIE", + "THREAD_STAT_DEAD", + "THREAD_STAT_BURIED" }; enum eFaultNumbers @@ -97,7 +110,7 @@ extern BOOL gaThreads_NoTaskSwitch[MAX_CPUS]; // === FUNCTIONS === extern tThread *Proc_GetCurThread(void); extern tThread *Threads_GetThread(Uint TID); -extern void Threads_SetTickets(tThread *Thread, int Num); +extern void Threads_SetPriority(tThread *Thread, int Pri); extern int Threads_Wake(tThread *Thread); extern void Threads_AddActive(tThread *Thread); extern tThread *Threads_GetNextToRun(int CPU, tThread *Last);