+#include <threads.h>
+
+enum eThreadStatus {
+ THREAD_STAT_NULL, // Invalid process
+ THREAD_STAT_ACTIVE, // Running and schedulable process
+ THREAD_STAT_SLEEPING, // Message Sleep
+ THREAD_STAT_MUTEXSLEEP, // Mutex Sleep
+ THREAD_STAT_SEMAPHORESLEEP, // Semaphore Sleep
+ THREAD_STAT_QUEUESLEEP, // Queue
+ THREAD_STAT_EVENTSLEEP, // Event sleep
+ THREAD_STAT_RWLOCKSLEEP,
+ THREAD_STAT_WAITING, // ??? (Waiting for a thread)
+ THREAD_STAT_PREINIT, // Being created
+ 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", // Invalid process
+ "THREAD_STAT_ACTIVE", // Running and schedulable process
+ "THREAD_STAT_SLEEPING", // Message Sleep
+ "THREAD_STAT_MUTEXSLEEP", // Mutex Sleep
+ "THREAD_STAT_SEMAPHORESLEEP", // Semaphore Sleep
+ "THREAD_STAT_QUEUESLEEP", // Queue
+ "THREAD_STAT_EVENTSLEEP", // Event sleep
+ "THREAD_STAT_RWLOCKSLEEP",
+ "THREAD_STAT_WAITING", // ??? (Waiting for a thread)
+ "THREAD_STAT_PREINIT", // Being created
+ "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
+};
+