Slight change to VMM defines
[tpg/acess2.git] / Kernel / include / threads.h
index 20d21f4..2b8f9fb 100644 (file)
@@ -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);

UCC git Repository :: git.ucc.asn.au