freertos 源码分析--list.c

张开发
2026/7/1 23:19:08 15 分钟阅读
freertos 源码分析--list.c
list.c 文件内容总结(FreeRTOS 内核核心链表实现)✅ port.c —— RISC-V 移植层(上下文切换)✅ portmacro.h —— 移植层宏✅ FreeRTOSConfig.h —— 系统配置✅ list.c —— 内核链表(底层核心)✅tasks.c ——管任务✅heap.c —— 管内存✅timers/event.c——管高级同步✅ list.c —— 内核链表(底层核心)一、这是什么文件?这是FreeRTOS 内核最底层的核心文件:list.c作用:实现 FreeRTOS 内部使用的双向链表结构,是任务调度、队列、信号量、事件组的底层数据基础。你绝对不能修改这个文件!这是官方内核代码,修改会直接导致系统崩溃。二、核心功能总结FreeRTOS 用双向链表管理:就绪任务(Ready List)阻塞任务(Blocked List)延时任务(Delayed List)挂起任务(Suspended List)定时器、队列、事件组等所有内核对象它的特点:双向循环链表按xItemValue(通常是优先级或超时时间)排序高效插入、删除、遍历是整个 RTOS 的 “骨架”三、5 个核心函数(必须知道)1.vListInitialise()功能:初始化一个空链表创建链表头(xListEnd)链表指针指向自己计数器清 02.vListInitialiseItem()功能:初始化一个链表节点标记节点不属于任何链表(pxContainer = NULL)3.vListInsertEnd()功能:把节点插入链表 “尾部”不排序,直接插到当前 index 前面用于不按顺序的链表4.vListInsert()功能:按 xItemValue 从小到大排序插入FreeRTOS 最常用!任务延时、优先级排序都靠它插入时自动找位置,保证链表从小到大有序5.uxListRemove()功能:从链表中删除一个节点自动修复前后指针返回剩余节点数量任务删除、取消阻塞时都会调用四、关键结构作用(简单看懂)struct xLIST_ITEM { TickType_t xItemValue;

更多文章