From 98ee3b15bb2ad7c1f2b895ead1c9a4bdd6c95121 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sun, 27 Sep 2009 13:44:57 +0800 Subject: [PATCH] Moved adding a task to the active list to threads.c --- Kernel/arch/x86/proc.c | 7 +------ Kernel/include/threads.h | 1 + Kernel/threads.c | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/Kernel/arch/x86/proc.c b/Kernel/arch/x86/proc.c index fd916438..76e96c93 100644 --- a/Kernel/arch/x86/proc.c +++ b/Kernel/arch/x86/proc.c @@ -309,12 +309,7 @@ int Proc_Clone(Uint *Err, Uint Flags) newThread->SavedState.EIP = eip; // Lock list and add to active - LOCK( &giThreadListLock ); - newThread->Next = gActiveThreads; - gActiveThreads = newThread; - giNumActiveThreads ++; - giTotalTickets += newThread->NumTickets; - RELEASE( &giThreadListLock ); + Threads_AddActive(newThread); Threads_Dump(); diff --git a/Kernel/include/threads.h b/Kernel/include/threads.h index 644d0333..377b6ac1 100644 --- a/Kernel/include/threads.h +++ b/Kernel/include/threads.h @@ -62,5 +62,6 @@ enum { extern tThread *Proc_GetCurThread(); extern tThread *Threads_GetThread(Uint TID); extern void Threads_Wake(tThread *Thread); +extern void Threads_AddActive(tThread *Thread); #endif diff --git a/Kernel/threads.c b/Kernel/threads.c index bb0ec73a..774507fa 100644 --- a/Kernel/threads.c +++ b/Kernel/threads.c @@ -30,6 +30,7 @@ void Threads_Kill(tThread *Thread, int Status); void Threads_Yield(); void Threads_Sleep(); void Threads_Wake(tThread *Thread); +void Threads_AddActive(tThread *Thread); int Threads_GetPID(); int Threads_GetTID(); int Threads_GetUID(); @@ -426,6 +427,22 @@ void Threads_Wake(tThread *Thread) } } +/** + * \fn void Threads_AddActive(tThread *Thread) + * \brief Adds a thread to the active queue + */ +void Threads_AddActive(tThread *Thread) +{ + LOCK( &giThreadListLock ); + Thread->Next = gActiveThreads; + gActiveThreads = Thread; + giNumActiveThreads ++; + giTotalTickets += Thread->NumTickets; + Log("Threads_AddActive: giNumActiveThreads = %i, giTotalTickets = %i", + giNumActiveThreads, giTotalTickets); + RELEASE( &giThreadListLock ); +} + #if 0 /** * \fn void Threads_SetSignalHandler(int Num, void *Handler) -- 2.20.1