Fixed compile errors, added Semaphore code
[tpg/acess2.git] / Kernel / include / threads.h
index 0af38a5..6fbc11f 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
@@ -72,11 +73,24 @@ 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_SEMAPHORESLEEP,     // Semaphore 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

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