70 if (
nullptr == pclCurr) {
74 auto uXHeadPri = pclCurr->GetCurPriority();
81 if (uXPriority > pclCurr->GetCurPriority()) {
84 pclCurr = pclCurr->GetNext();
85 }
while (pclCurr != pclTail);
92 if (uXPriority > uXHeadPri) {
void SetMapPointer(PriorityMap *pclMap_)
SetMapPointer Set the pointer to a bitmap to use for this threadlist. Once again, only needed when th...
void PivotForward()
PivotForward Pivot the head of the circularly linked list forward ( Head = Head->next, Tail = Tail->next )
PriorityMap * m_pclMap
Pointer to the bitmap/flag to set when used for scheduling.
void SetHead(Thread *pclNode_)
SetHead Set the head node of a linked list.
PORT_PRIO_TYPE m_uXPriority
Priority of the threadlist.
#define PORT_PRIO_TYPE
Type used for bitmap in the PriorityMap class.
Class implementing a doubly-linked list of thread lists.
static void Add(ThreadList *pclThreadList_)
Add Add a ThreadList to the list for tracking.
void Remove(Thread *node_)
Remove Remove the specified thread from the threadlist.
void InsertNodeBefore(Thread *pNode_, Thread *pInsert_)
InsertNodeBefore Insert a linked-list node into the list before the specified insertion point...
PORT_PRIO_TYPE GetCurPriority(void)
GetCurPriority Return the priority of the current thread.
void SetPriority(PORT_PRIO_TYPE uXPriority_)
SetPriority Set the priority of this threadlist (if used for a scheduler).
static void Remove(ThreadList *pclThreadList_)
Remove Remove a threadlist from tracking.
Single include file given to users of the Mark3 Kernel API.
The Thread Class. This object providing the fundamental thread control data structures and functions ...
void AddPriority(Thread *node_)
AddPriority Add a thread to the list such that threads are ordered from highest to lowest priority fr...
void Add(T *pNode_)
Add the linked list node to this linked list.
Thread * GetTail()
GetTail Get the tail node of the linked list.
The PriorityMapL1 class This class implements a priority bitmap data structure. Each bit in the objec...
Thread * HighestWaiter()
HighestWaiter Return a pointer to the highest-priority thread in the thread-list. ...
ThreadList()
ThreadList Default constructor - zero-initializes the data.
void Add(Thread *node_)
Add Add a thread to the threadlist.
void Set(T uXPrio_)
Set Set the priority map bitmap data, at all levels, for the given priority.
void Clear(T uXPrio_)
Clear Clear the priority map bitmap data, at all levels, for the given priority.
Thread * GetHead()
GetHead Get the head node in the linked list.
void Remove(T *pNode_)
Remove Add the linked list node to this linked list.
void SetTail(Thread *pclNode_)
SetTail Set the tail node of the linked list.