X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Finclude%2Fthreads_int.h;h=578fdcf1d58ac75e38e9a2b3b6ee6fabc875e84b;hb=547e8535ec9bd84f3508182618319155e69572f8;hp=66bb8c16379dd055646f96ef62850eef3eda0470;hpb=48743e39650eb1ef988380e9d95f27fd40d3a9ce;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/include/threads_int.h b/KernelLand/Kernel/include/threads_int.h index 66bb8c16..578fdcf1 100644 --- a/KernelLand/Kernel/include/threads_int.h +++ b/KernelLand/Kernel/include/threads_int.h @@ -1,5 +1,9 @@ /* - * Internal Threading header + * Acess2 Kernel + * - By John Hodge (thePowersGang) + * + * include/threads_int.h + * - Internal Threading header * - Only for use by stuff that needs access to the thread type. */ #ifndef _THREADS_INT_H_ @@ -7,7 +11,7 @@ #include #include - +#include typedef struct sProcess tProcess; @@ -27,8 +31,12 @@ typedef struct sMessage */ struct sProcess { + struct sProcess *Next; + tPGID PGID; tPID PID; + int nThreads; + struct sThread *FirstThread; tUID UID; //!< User ID tGID GID; //!< User and Group @@ -53,6 +61,7 @@ struct sThread struct sThread *Next; struct sThread *GlobalNext; //!< Next thread in global list struct sThread *GlobalPrev; //!< Previous thread in global list + struct sThread *ProcessNext; tShortSpinlock IsLocked; //!< Thread's spinlock volatile int Status; //!< Thread Status void *WaitPointer; //!< What (Mutex/Thread/other) is the thread waiting on @@ -88,14 +97,17 @@ struct sThread // --- event.c Uint32 EventState; + // --- timer.c + tTimer ThreadTimer; }; -enum { +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_RWLOCKSLEEP, // Read-Writer lock Sleep THREAD_STAT_SEMAPHORESLEEP, // Semaphore Sleep THREAD_STAT_QUEUESLEEP, // Queue THREAD_STAT_EVENTSLEEP, // Event sleep @@ -125,8 +137,6 @@ extern BOOL gaThreads_NoTaskSwitch[MAX_CPUS]; extern tShortSpinlock glThreadListLock; // === FUNCTIONS === -extern tThread *Proc_GetCurThread(void); - extern tThread *Threads_GetThread(Uint TID); extern void Threads_SetPriority(tThread *Thread, int Pri); extern int Threads_Wake(tThread *Thread);