freertos关键函数理解 uxListRemove

//删除pxItemToRemove节点

UBaseType_t uxListRemove(ListItem_t *pxItemToRemove)

{

//The list item knows which list it is in. Obtain the list from the list item.

//找到节点所在的链表

//my_printf( "uxListRemove pxItemToRemove = %#p\n", pxItemToRemove );

List_t *pxList = pxItemToRemove->pxContainer;

List_t *pxList_; //指向目标优先级的就绪任务列表 (通过TCB的优先级索引)

//pxList_ = &pxReadyTasksLists4;

//my_printf( "pxList = %#p\n", pxList );

//my_printf( "pxList->uxNumberOfItems = %d\n", pxList->uxNumberOfItems );

//my_printf( "&pxList->uxNumberOfItems = %#p\n", &pxList->uxNumberOfItems );

//my_printf( "pxList->pxIndex = %#p\n", pxList->pxIndex );

//my_printf( "&pxList->pxIndex = %#p\n", &pxList->pxIndex );

//my_printf( "pxList->pxIndex->pvOwner = %#p\n", pxList->pxIndex->pvOwner );

//my_printf( "pxList->pxIndex->pxContainer = %#p\n", pxList->pxIndex->pxContainer );

//|------->volatile UBaseType_t uxNumberOfItems = 1 0x20000088 链表中元素的个数

//| |<-----ListItem_t *pxIndex; 0x2000008c 总是指向xListEnd节点,在链表尾部插入的时候,方便找到位置

//| | |-->TickType_t xItemValue = portMAX_DELAY 0x20000090 MiniListItem_t xListEnd

//| | | struct xLIST_ITEM *pxNext; ----->| 0x20000094 后继节点

//| | | struct xLIST_ITEM *pxPrevious; ----->| 0x20000098 前驱节点

//| | | |

//| |--|-->TickType_t xItemValue; <-------------| 0x200004ac 链表节点的值

//| |<--struct xLIST_ITEM *pxNext; 后继节点

//| |<--struct xLIST_ITEM *pxPrevious; 前驱节点

//| void *pvOwner; 0x200004a8 保存私有数据 \&TCB

//|<------ struct xLIST *pxContainer; 0x20000088 节点所在的链表 \&pxReadyTasksLists\[x ]

pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious;

pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext;

//Make sure the index is left pointing to a valid item.

if( pxList->pxIndex == pxItemToRemove ){

pxList->pxIndex = pxItemToRemove->pxPrevious;

}

pxItemToRemove->pxContainer = NULL;

pxList->uxNumberOfItems--;

// volatile UBaseType_t uxNumberOfItems = 0 0x20000088 链表中元素的个数

// |<-----ListItem_t *pxIndex; 0x2000008c 总是指向xListEnd节点,在链表尾部插入的时候,方便找到位置

// |->|-->TickType_t xItemValue = portMAX_DELAY 0x20000090 MiniListItem_t xListEnd

// |<--struct xLIST_ITEM *pxNext; 0x20000094 后继节点

// |<--struct xLIST_ITEM *pxPrevious; 0x20000098 前驱节点

//返回剩余节点数

return pxList->uxNumberOfItems;

}

相关推荐
强哥聊算力2 小时前
《算力江湖·英伟达传奇》第七集:ChatGPT出现前夜,英伟达发生了什么?
服务器·人工智能·算法·ai·chatgpt·gpu算力
Navigator_Z6 小时前
LeetCode //C - 1289. Minimum Falling Path Sum II
c语言·算法·leetcode
CCblandy6 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
YangYang9YangYan7 小时前
2027供应链计划校招:数学与应用数学专业如何把预测模型讲成业务决策?
人工智能·sql·算法
jsjzsl27 小时前
递归自改进系统(RSI)的本质是自发对称破缺:智能爆炸有界—— AI研发切记盲目投入
人工智能·python·算法
程序员清风8 小时前
最短路径算法:BFS、Dijkstra 与 Floyd
java·算法·宽度优先
梦帮科技8 小时前
Kali Linux Scapy 畸形报文构造学——深度解剖非法 TCP Flags 与反常序列号
linux·爬虫·神经网络·算法·数学建模·系统架构·模拟退火算法
171320330计算机毕设编程9 小时前
计算机毕业设计 基于YOLO改进算法的车辆特征识别系统设计与实现--lw
java·大数据·python·sql·算法
姜鱼问生9 小时前
Nginx gzip 压缩:一个配置让页面加载快 3 倍
后端·算法·架构