X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Finclude%2Fthreads.h;h=28d669d29eca66c7685db91a1e9482e827bdd9aa;hb=827e4de5670d327f0379a80fdf2348c1e38f5434;hp=1e15547c3436a652f09a9911478f36be28db7363;hpb=9d3800f60f2212432e550a4e003ae65b498a4d36;p=tpg%2Facess2.git diff --git a/Kernel/include/threads.h b/Kernel/include/threads.h index 1e15547c..28d669d2 100644 --- a/Kernel/include/threads.h +++ b/Kernel/include/threads.h @@ -17,11 +17,13 @@ typedef struct sMessage typedef struct sThread { // --- threads.c's + // 0 struct sThread *Next; //!< Next thread in list - int IsLocked; //!< Thread's spinlock - int Status; //!< Thread Status + tSpinlock IsLocked; //!< Thread's spinlock + volatile int Status; //!< Thread Status int RetStatus; //!< Return Status + // 16 Uint TID; //!< Thread ID Uint TGID; //!< Thread Group (Process) Uint PTID; //!< Parent Thread ID @@ -29,21 +31,24 @@ typedef struct sThread char *ThreadName; //!< Name of thread // --- arch/proc.c's responsibility + // 40 //! Kernel Stack Base tVAddr KernelStack; + // 44 (x86) //! Memory Manager State tMemoryState MemState; + // 48 (x86) //! State on task switch tTaskState SavedState; // --- threads.c's - int CurSignal; //!< Signal currently being handled (0 for none) - tVAddr SignalHandlers[NSIG]; //!< Signal Handler List - tTaskState SignalState; //!< Saved state for signal handler + // 60 + int CurFaultNum; //!< Current fault number, 0: none + tVAddr FaultHandler; //!< Fault Handler - tMsg *Messages; //!< Message Queue + tMsg * volatile Messages; //!< Message Queue tMsg *LastMessage; //!< Last Message (speeds up insertion) int Quantum, Remaining; //!< Quantum Size and remaining timesteps