FreeRTOS xLists working how to?

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
nullpointer
Posts: 8
Joined: Sat Jun 29, 2019 8:58 am

FreeRTOS xLists working how to?

Post by nullpointer »

Hi,
Can you , please, explain the working of xLists in FreeRTOS?
Some drowings are highly appreciated.
I've tried to read the code but sincerely a pointer member of an xListItem, which is a member of a task's TCB, that points to this same TCB ... this gives me a headache !!

1- Suppose that portMAX_PRIORITIES = 3, an array pxReadyTasksLists[3] is created by the kernel.
pxReadyTasksLists[0] is a (pointer to a) list of all ready tasks with priority 0.
pxReadyTasksLists[1] is a (pointer to a) list of all ready tasks with priority 1.
... etc
- How pxReadyTasksLists[] is initialized before creating any tasks?

2- Now suppose there is only one task with priority 0 (idle task), 2 tasks with priority 1 and 3 tasks with priority 2.
- How the xListItem member of a newly created task is initialized?
- How the 3 lists are created (i.e how to insert a task in a list and how to sort the list) ?
3- How to search for the task with highest priority and how to remove it from the list?
Thanks
Post Reply