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();
}
}
+/**
+ * \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)
return gActiveThreads;
}
+ Log(" Threads_GetNextToRun: giNumActiveThreads=%i,giTotalTickets=%i",
+ giNumActiveThreads, giTotalTickets);
// Get the ticket number
ticket = number = rand() % giTotalTickets;
+ Log(" Threads_GetNextToRun: ticket = %i", ticket);
+
// Find the next thread
for(thread=gActiveThreads;thread;thread=thread->Next)
{